我在一个有两个分支A和B的项目上工作.我通常在分支A上工作,并从分支B合并东西.对于合并,我通常会这样做:
git merge origin/branchB
Run Code Online (Sandbox Code Playgroud)
但是,我还想保留分支B的本地副本,因为我可能偶尔会检查分支而不先与我的分支A合并.为此,我会这样做:
git checkout branchB
git pull
git checkout branchA
Run Code Online (Sandbox Code Playgroud)
有没有办法在一个命令中执行上述操作,而无需来回切换分支?我应该用git update-ref它吗?怎么样?
我经常至少有3个远程分支:master,staging和production.我有3个本地分支跟踪那些远程分支.
更新我所有的本地分支机构很繁琐:
git fetch --all
git rebase origin/master
git checkout staging
git rebase origin/staging
git checkout production
git rebase origin/production
Run Code Online (Sandbox Code Playgroud)
我很乐意能够做一个"git pull -all",但我无法让它发挥作用.它似乎执行"fetch --all",然后更新(快进或合并)当前工作分支,而不是其他本地分支.
我仍然卡在手动切换到每个本地分支和更新.
将单个远程分支作为本地分支进行跟踪非常简单.
$ git checkout --track -b ${branch_name} origin/${branch_name}
Run Code Online (Sandbox Code Playgroud)
将所有本地分支推送到远程,根据需要创建新的远程分支也很容易.
$ git push --all origin
Run Code Online (Sandbox Code Playgroud)
我想反过来.如果我在一个源上有X个远程分支:
$ git branch -r
branch1
branch2
branch3
.
.
.
Run Code Online (Sandbox Code Playgroud)
我是否可以为所有远程分支创建本地跟踪分支,而无需手动创建每个分支?说出类似的话:
$ git checkout --track -b --all origin
Run Code Online (Sandbox Code Playgroud)
我用google搜索和RTM,但到目前为止已经上传了.
我们正在使用我们所有人都使用的单个远程存储库的模型.我们分支新功能并重新集成到主干分支.我们的工作流程是,当其他功能集成到主干中时,我们应该从主干集成到我们的工作分支.
因此,我们做的事情并不少见:
(branch) $ git commit -a -m"blah blah blah"
(branch) $ git fetch # origin/trunk is updated
(branch) $ git checkout trunk
(trunk) $ git pull # trunk is fast-forwarded to current version of origin/trunk.
(trunk) $ git checkout branch
(branch) $ git merge trunk
(branch) $ git push
Run Code Online (Sandbox Code Playgroud)
我不喜欢"git checkout trunk/git pull/git checkout branch"循环.它通常与Visual Studio合并,抱怨我的所有文件和项目都在磁盘上发生了变化,并且应该重新加载它们.两个结帐.而拉.合并.合并是不可避免的,但由于git如何工作,它应该能够在主干上进行快进,而不需要检查它.
但我不知道这个命令,而我的google-foo在这方面让我失望了.谁知道怎么样?
git push origin master 显示错误
未能推送一些引用'
git@github.com:xyz/abc.git'为了防止您丢失历史记录,拒绝非快进更新在再次推送之前合并远程更改.有关详细信息,请参阅"有关快进的注意事项"部分git push --help.
这是什么?如何恢复?
我从两个主要位置推送代码:我家里的电脑和工作中的笔记本电脑.我使用Github来存储我的回购.
这是一个场景:我在我的PC上做了一些工作,我已经工作了一段时间(在我的电脑和我的笔记本电脑中),并以下列分支结束:
$ git branch
* master
* v123
* test-b
Run Code Online (Sandbox Code Playgroud)
我把它推到了Github.到现在为止还挺好.
现在我在我的笔记本电脑上,这是我在尝试拉动任何东西之前看到的:
$ git branch
* master
* v_123
Run Code Online (Sandbox Code Playgroud)
这是我的笔记本电脑中的旧版本(因为我一直在我的电脑上工作),其中存在以下差异:缺少分支(test-b),另一个已重新命名,或等效删除并重新创建一个新名称(即:v_123现在是v123),并且许多事情可能在所有分支中都发生了变化.
我想将我的所有分支同步到我的笔记本电脑中并正确跟踪它们.我已经看了两个最先进的投票问题,关于分支克隆/取回(如何克隆所有远程分支机构Git中?,如何获取所有的Git分支)和现在我有点失落.
是否有一些易于使用的git sync-branch --all命令可用于将我的笔记本电脑与Github中最新的repo状态同步?