如何从GIT中的另一个分支拉出正在创建的分支

时间:2019-06-18 06:40:43

标签: git github gitlab

我在分支developmentV2中有一个代码库。 从developmentV2我创建了一个分支rahulV2,如下所示。

git checkout -b rahulV2 developmentV2
git push origin/rahulV2

我在rahulV2分支中进行了一些更改。在将其推送到rahulV2分支之前,如果有人将某些代码推送到developmentV2,我希望从developmentV2更新代码

所以我将更改保存在rahulV2中。

git stash

如果我要使用

git pull

它将从origin/rahulV2中撤出。

我想提取developementV2代码,以便更新rahulV2,并在推送代码后将rahulV2的更改合并到developmentV2分支。

请帮助我解决这个问题。

5 个答案:

答案 0 :(得分:2)

有两种接受的方法可以用父分支(或实际上是任何其他分支)更新分支。这是:合并变基

变基: 变基意味着您更改了提交的历史记录。 在Git中,每个提交都有一个父提交。 rebase所做的是将分支的第一个提交(分支启动时)的父提交更改为您依据的分支的最后一个提交。这会更改提交的历史记录,但看起来更简洁。 这样做的方法是:

git checkout developementV2
git pull                         # to make sure you rebase onto the updated version
git checkout rahulV2
git rebase developementV2

合并: 使用这种方法,您无需更改提交的历史记录。所有这一切都是使用分支和基础分支(在这种情况下为developmentV2rahul2)中的更改创建一个新的提交。合并比重新设置没有那么危险,因为合并只能产生一次冲突,而重新设置可以使您的旧提交与新提交之间的每次提交都产生冲突。 合并的方式是:

git checkout developementV2
git pull                         
git checkout rahulV2
git merge developementV2

在两种情况下,您都可能会遇到冲突。这意味着您必须进入代码并确定要采用的版本。

答案 1 :(得分:0)

这是非常典型的工作流程。

git checkout developementV2
git pull
git checkout rahulV2
git merge developementV2

但是,如果万一这是​​一个经常性的任务,也许考虑一个别名?

git config --global alias.upd '!f() { git fetch && git checkout developementV2 && git merge --ff-only origin/developementV2 && git checkout -; }; f'

然后每次您需要更新rahulV2状态的developementV2分支时,执行

# update your developementV2 branch from remote
git upd

# merge changes in
git merge developementV2

答案 2 :(得分:0)

origin/rahulV2是一个远程跟踪分支,每次执行git fetch时都会通过远程存储库中的更改进行更新。另一方面,rahulV2是此分支的本地版本。 rahulV2可能与origin/rahulV2不同步,而rahulV2可能与远程存储库中的实际内容不同步。

因此,合并中的差异将取决于rahulV2的不同化身中的差异。如果要将最新的developmentV2合并到git checkout rahulV2 # update remote tracking rahulV2 # git pull origin rahulV2 git checkout developmentV2 # switch to developmentV2 git merge rahulV2 # merge 中,则应执行以下操作:

char *str1 = "Hello ";
char *str2 = "World";
strcat(str1,str2);
printf("%s\n",str1);

答案 3 :(得分:0)

我尝试了

git checkout developmentV2

git pull

这里有15个新的提交已被撤消。

然后我尝试了

git checkout rahulV2

此处显示您的分支比“ origin / rahulV2”领先15次提交。

答案 4 :(得分:0)

我认为分支是由另一个创建的事实不会影响拉动效果。您所需要的只是拉动它并获得所需的更改,无论如何,到您获得更改的时间,它们是否来自另一个分支都无关紧要。

希望这很有帮助