如何从另一个分支(开发)更新我的工作Git分支?


74

我做了一个新的分支为我的代码就像一个月前,我创建特征1,从分支开发分支。

⇒  git branch 
  develop
* feature1

我已经使用Feature1了一个月,并且许多更改都被推送到了开发分支上,如何使用开发一个的最新提交来更新当前的分支Feature1

我不想签出master并合并我的feature1分支。我也不想使用git cherry-pick手动将提交从开发移动到feature1。

有什么帮助吗?

Answers:


104

您只需将开发合并到feature1:

git checkout feature1
git merge develop

不需要涉及另一个分支,例如master。


但这会将开发的所有提交内容放入分支机构
htafoya

当然会。本质上,问题是“如何将开发的所有提交放入分支机构”。
musiKk '02

3
不,不是,那是“我正在分支X中工作,但我希望该分支具有开发中的最新更新”,当您进行PR开发时,您只希望拥有分支提交,而不是所有提交历史
htafoya

1
我的意思是。当前的“ develop”状态将位于“ feature1”中,但未在此处生成提交。通过合并,似乎所有这些开发提交都是在“ feature1”中生成的
htafoya

1
对不起,我认为我的解释做得不好。让我再试一次...开发人员运行后git merge develop,feature1的技巧将进行更新,包括来自development的新代码。这使开发人员可以使用最新代码。合并不会以任何方式影响dev分支。也许在将来的某个时候,该开发人员将希望将feature1合并到开发中(即以其他方式)以更新开发技巧,这需要进行审查。届时,将在审阅中指定产生的任何临时合并提交,以便审阅者可以看到开发将如何变化的差异。
迈克尔

38

首先,您需要更新您的开发分支,然后签出功能并对其进行合并/重新设置基础。

git checkout develop
git pull
git checkout feature/myfeature

现在,您可以在运行之间做出决定

git merge develop
git rebase develop

merge和之间的区别rebasemerge保留分支中所有提交的历史记录,如果您的部分提交有很多值得保留的内容,则这很重要。

rebase在某些团队中,该选项是必需的。

准备就绪后,您可以推送到自己的分支(例如,对于拉取请求)

git push origin feature/myfeature

我认为这是比指定答案更好的解决方案。
csg

4

该用例对保持PR分支的更新非常有帮助。首先,我建议您首先获取您的远程更改,即git fetch ,然后从进行合并或重新设置develop,但要从远程的进行重新组合,例如

git rebase -i origin/develop

要么

git merge origin/develop

这样,您将更新PR分支,而无需在分支之间来回移动。


git rebase就像合并,不是吗?但同样的事情发生了,
Kavindu Gayantha '20

2
在git rebase中,您要混合使用2来重写分支的历史记录,合并时,您只需在新的merge-commit中将另一个分支的更改应用到您的分支中即可。
EliuX

1

分行:

开发====>开发

feature1 ====>工作


步骤1 从站点进行GIT发送

检查您正在同步的分支

git status

添加提交文件

git add .

提交描述

git commit -m "COMMENT"

发送到您已同步的分支

git push

步骤2 与DEV同步更新的工作分支(开发)-将工作分支与开发分支同步(更新开发分支)

与远程同步并切换到DEV分支

git checkout DEV

请求合并要与feature1分支同步的分支

git merge feature1

将当前分支与feature1分支合并

git push

步骤3 GIT查找远程-从更新的开发分支更新工作分支

连接到参考分支

git checkout DEV

搜索更改

git pull

与您的工作分支同步

git checkout feature1

请求合并与DEV分支同步的分支

git merge DEV

将当前分支与DEV分支合并

git push

0

使用没有合并的检出来获取特定文件或从特定提交中获取内容,我尝试过这种方式,它可以正常工作!

git checkout develop <commit hash>_or_<specific-files-path>


0

为了避免使用简单的合并来开发提交,我发现,如果已经推送,则更简单(技术含量更低)的方法尤其如此

  1. 进行更改以确保开发成功,并确保已完成最新更改
  2. 从develop创建另一个分支, feature1_b
  3. 合并feature1feature1_b
  4. 如果您希望原版,请删除 feature1

因此,当您进行feature1_b开发的PR时,它将仅具有您的新更改,而没有整个提交的历史。

如果您尚未推送,那么@stackdave的答案将是一个不错的答案。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.