当我使用本地分支时mybranch,我希望能够origin mybranch使用git pushand和push git pull.正因为如此,我不得不不厌其烦地写出来git push origin mybranch和git pull origin mybranch.如果我尝试使用git pull例如,我得到:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
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> mybranch
Run Code Online (Sandbox Code Playgroud)
如果我进入git branch --set-upstream-to=origin/mybranch mybranch,那么它的工作原理.但这几乎和以前的命令一样乏味.我可以让git做这个默认行为吗?我已经看到了类似的问题并且答案倾向于建议更新版本的git这样做,但我使用git版本2.1.3,这是相当新的,所以它不能只是那样.
Lor*_*ren 578
从 git 2.37.0 开始,现在可以通过 git 配置实现这一点。
运行以更新您的配置:
git config --global --add --bool push.autoSetupRemote true
Run Code Online (Sandbox Code Playgroud)
然后git push将自动设置远程分支。
注意:该--global标志意味着这将应用于您计算机上的所有 git 命令(无论它是哪个存储库),您可以省略该标志以使其特定于您计算机上的单个存储库。
文档:
https://git-scm.com/docs/git-config#Documentation/git-config.txt-pushautoSetupRemote
推.autoSetupRemote
如果设置为“true”,则当当前分支不存在上游跟踪时,假设 --set-upstream 默认推送;此选项与 push.default 选项 simple、upstream 和 current 一起生效。如果默认情况下您希望将新分支推送到默认远程(如 push.default=current 的行为)并且您还希望设置上游跟踪,那么它非常有用。最有可能从此选项中受益的工作流程是简单的中央工作流程,其中所有分支都应在远程具有相同的名称。
tor*_*rek 12
它不是github,它是你的本地git,它完成了这一切.
如果您正在创建mybranch本地与git checkout 和它已经存在,如origin/mybranch在你的本地库,你可以简单地git checkout mybranch和当地的git会看到origin/mybranch存在并创建本地mybranch与origin/mybranch作为其上游.
另一方面,如果origin/mybranch还不存在并且您在mybranch本地创建git checkout -b或者类似,则无法将其设置为跟踪尚不存在的上游分支(您可以将其配置为跟踪该分支但是您将偶尔抱怨上游版本不存在).
在这种特殊情况下,在第一次推送(将在上游创建分支的推送)上,您可以使用:
git push -u origin mybranch
Run Code Online (Sandbox Code Playgroud)
告诉你的本地git推mybranch送到,origin 并且一旦完成,就设置origin/mybranch为跟踪分支mybranch.
请注意,这与运行相同git branch --set-upstream-to:您只需执行一次,然后在本地设置它,您不必再次执行此操作.它更方便,因为你可以与push创建分支的人一起做origin.但是你仍然需要记住这样做(一次;当你git push没有时,你会得到提醒-u origin mybranch).
izo*_*ica 12
一种可能的解决方案是将你的git推送行为修改为current(注意,这也会产生一些其他的副作用).您可以通过~/.gitconfig直接修改(作为文件并假设您使用的是Linux)或执行以下操作来执行此操作:
git config --global push.default current
Run Code Online (Sandbox Code Playgroud)
现在,当你push,git将自动将你当前的分支推送到具有相同名称的远程分支,即使你没有明确指定它.此外,如果您当前的分支没有远程等效项,则将创建一个远程分支,并设置当前分支以跟踪它(git push -u origin new_branch与单个相同git push).还要看一下这个问题,其中详细描述了git push行为.
| 归档时间: |
|
| 查看次数: |
5025 次 |
| 最近记录: |