如何自动将本地git分支链接到远程git分支?
为了快速重新设置分支的基础,我创建了一个.gitconfig别名,用于从master和force-pushing重新设置基础如何自动将本地git分支链接到远程git分支?,git,github,version-control,Git,Github,Version Control,为了快速重新设置分支的基础,我创建了一个.gitconfig别名,用于从master和force-pushing重新设置基础 rb=“拉原点主数据——重新基准” 一个是用力推 fp=“push-f” 我使用git-rb&&git-fp将它们链接到shell中。这对于在shell中与autocomplete一起执行这两个命令非常有用 除非远程分支在我的本地分支之前,否则这是有效的 我想添加另一个别名,以确保我所在的本地分支与remote是最新的,但无需指定分支名称 如果我设定 [pull]
rb=“拉原点主数据——重新基准”
一个是用力推
fp=“push-f”
我使用git-rb&&git-fp
将它们链接到shell中。这对于在shell中与autocomplete一起执行这两个命令非常有用
除非远程分支在我的本地分支之前,否则这是有效的
我想添加另一个别名,以确保我所在的本地分支与remote是最新的,但无需指定分支名称
如果我设定
[pull]
default = current
这能让我做些类似的事情吗
up=git pull--rebase
而不必指定分支
理想情况下,我想串在一起
git up&&git rb&&git fp
为确保远程分支是最新的,请从主分支重新设置基础,然后强制推送分支
我想在上面设置[pull]default=current
,它会工作。。。但它似乎没有,因为git pull--rebase
给了我这个失败
Please specify which branch you want to rebase against.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> chore/prs
请指定要重设基础的分支。
有关详细信息,请参见git pull(1)。
吉特拉力
如果您希望为此分支设置跟踪信息,可以通过以下方式进行设置:
git branch——将上游设置为=origin/chore/prs
您可以在本地repo中创建shell脚本,每次要执行串行命令时,只需运行shell脚本即可
例如,test.sh文件可以执行git pull--rebase&&git pull origin master&&git push-f
#!/bin/sh
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
(git pull origin $current_branch --rebase && git pull origin master --rebase && git push origin $current_branch -f)
您可以在本地repo中创建shell脚本,每次要执行串行命令时,只需运行shell脚本即可 例如,test.sh文件可以执行
git pull--rebase&&git pull origin master&&git push-f
#!/bin/sh
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
(git pull origin $current_branch --rebase && git pull origin master --rebase && git push origin $current_branch -f)
您的问题的答案在git输出的消息中:最后一行告诉您如何将本地分支链接到远程分支
另外:您应该使用
push--force with lease
而不是push-f
例如,请参见git输出的消息中给出了问题的答案:最后一行告诉您如何将本地分支链接到远程分支
另外:您应该使用
push--force with lease
而不是push-f
例如,请参见除了@LeGEC提示使用
push--force with lease
之外,您还可以在通过运行强制推之前更新分支
git pull --rebase origin \"$(git rev-parse --abbrev-ref HEAD)\"
除了@LeGEC提示使用
push--force with lease
之外,您还可以通过运行
git pull --rebase origin \"$(git rev-parse --abbrev-ref HEAD)\"
(1) 没有
pull.default
(Git忽略它不期望的任何设置,所以您可以设置它,它什么也不做)。(2) 使用——将上游设置为,如Git的建议所示。每个分支必须执行一次,尽管大多数基于origin/
创建本地分支名称的情况下都会自动执行,所以这不是什么大问题。(3) 我建议完全避免git-pull
:它只是git-fetch
,然后是第二个命令(通常是merge或rebase),但您计划执行两个post-fetch
命令,所以您最好只执行它们。(1)没有pull.default
(Git忽略它不期望的任何设置,所以您可以设置它,它什么也不做)。(2)使用——按照Git的建议将上游设置为。这必须每个分支执行一次,尽管大多数基于源代码/
创建本地分支名称的情况下都会自动执行,所以这不是什么大问题。(3)我建议完全避免使用git-pull
:这只是git-fetch
,然后再执行第二个命令(通常是合并或重基),但您计划执行两个post-fetch
命令,所以您最好只执行它们。我编辑了我的答案,最初的消息是关于“不要使用-f
”没有使用rebase工作流。很高兴了解这一点,这一点非常重要。我最近犯过几次错误,我覆盖了远程更改,这至少会超级强调它不会发生。我编辑了我的答案,即关于“不要使用-f
”的初始消息没有使用rebase工作流。很高兴了解这一点,这一点非常重要。最近我犯了几次错误,我覆盖了远程更改,这至少会超级强化它不会发生。这正是我所需要的!这正是我所需要的!感谢这个伟大的想法,但它可以在没有如上面丹尼尔的回答中所示的脚本。谢谢你的好主意,但如上面丹尼尔的回答中所示,没有脚本也可以解决问题。