我在一个存储库(release + dev)中有2个分支,我经常工作。但是,当在分支之间切换时,它会触发我的项目中的长时间构建(我说约30分钟),所以我宁愿避免在它们之间切换。为了在两者中工作,我创建了2个我的存储库副本,并且工作正常。
但是,当我想合并更改时,我需要让发布分支处于活动状态一段时间才能进行更改。然后我可以切换回开发,进行合并和提交。但是,正如我在上面所写的那样,这个开关将导致长时间的重建。是否有另一种方法来拉动分支而不首先激活它?
答案 0 :(得分:4)
您可以fetch
进行远程更改。这将从远程存储库下载所有更改,但不会再执行任何操作。但是,如果您希望将merge
分支A
分支到分支B
,则无法在不先查看B
的情况下执行此操作。
git pull
仅仅是git fetch
加上git merge
答案 1 :(得分:1)
如果您希望pull
远程存储库中的分支进入当前分支,则无需切换。
如果我理解正确,您有一个已经签出release
的仓库,另一个签出了dev
的仓库,您正在其中工作。当您完成dev
中的某些操作后,您希望将其合并到release
,而无需结帐release
。
我想你在两个repos中都有遥控器设置,这样两者都可以相互引用。
cd
到您的release
回购。从dev
repo:
git fetch <dev_remote> <branch>
您现在在dev
回购中有一个更新的release
分支,但您不需要查看它。但请注意,更新的dev
分支的名称包含:远程的名称,斜杠,然后是分支的名称。它是一个远程分支,在gitk
中以两种颜色显示,在remotes/<remote_name>/<branch>
中以git branch -a
显示。
将更新的分支合并到您的本地release
分支:
git merge <dev_remote>/<branch>
你有它。没有checkout
,但您的release
回购中的release
分支合并了dev
的内容。
这是为了原则。现在,您只需一步即可完成此操作:
cd <release_repo> # you are on the release branch
git pull <dev_remote> <branch_name_in_dev_remote>
将获取dev_remote
中的分支,并将其合并到release
个回购中当前已签出的分支中。
同样,您希望使用dev
中的新合并提交更新release
回购:
cd <dev_repo> # you are on the dev branch
git pull <release_remote> <branch_name_to_pull>
答案 2 :(得分:0)
可能最简单的方法是为您想要处理的每个分支创建一个自己的文件夹。然后您可以简单地从一个文件夹合并到另一个文件夹。这有效地禁用了基本git想法来就地切换分支(我认为无论如何,至少对于具有非平凡大小和分支之间的许多差异的项目而言,这是无意义的。)