ChatGPT解决这个技术问题 Extra ChatGPT

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

一个月前,我从主 develop 分支创建了一个名为 feature1 的新分支。

⇒  git branch 
  develop
* feature1

我已经在 feature1 上工作了一个月,很多更改已推送到 develop

如何使用来自 develop 的最新提交更新我当前的分支 feature1

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

我该怎么做呢?


m
musiKk

您只需将开发合并到功能1:

git checkout feature1
git merge develop

无需涉及其他分支,例如 master。


但这会将develop的所有提交放入分支
当然会的。问题本质上是“我怎样才能将开发的所有提交放到分支中”。
不,不是,它是“我在分支 X 工作,但我希望该分支具有来自开发的最新更新”,当您进行 PR 进行开发时,您只希望拥有您的分支提交而不是所有提交历史
我是说。 “develop”的当前状态将在“feature1”中,但没有在那里生成提交。通过合并,看起来好像所有这些开发提交都是在“feature1”中生成的
对不起,我觉得我解释得不好。让我再试一次... dev 运行 git merge develop 后,feature1 的提示将被更新,包括来自开发的新代码。这让开发人员可以使用最新的代码。合并不会以任何方式影响开发分支。也许在未来的某个时候,这个开发者想要将 feature1 合并到开发中(即其他方式)以更新开发的提示,这需要审查。届时,无论生成什么临时合并提交,都将在审查中指定,以便审查者可以看到开发方式将如何变化的差异。
F
Federico Baù

首先,您需要更新您的开发分支,然后检查您的功能并合并/重新设置它。

git checkout develop
git pull
git checkout feature/myfeature

现在您可以决定是否运行:

git merge develop
git rebase develop

合并:保留分支中的所有提交历史记录,如果您的部分提交有很多有趣的内容,这很重要。

rebase:rebase 意味着从功能中删除提交历史,而不是从开发中获得历史;在某些团队中,此选项是强制性的。

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

git push origin feature/myfeature

我认为这是比指定答案更好的解决方案。
Rebase 表示从 feature 中删除提交历史记录,取而代之的是 develop 中的历史记录
E
EliuX

这个用例对于保持更新您的 PR 分支非常有帮助。首先,我建议您首先获取远程更改,即 git fetch,然后从 develop 合并或变基,但从远程更改,例如

git rebase -i origin/develop

或者

git merge origin/develop

这样,您将更新您的 PR 分支,而无需在分支之间来回切换。


git rebase 就像合并,不是吗?但同样的事情也会发生,
在 git rebase 中,您使用 2 的混合重写分支的历史记录,通过合并,您只需在新的合并提交中将另一个分支的更改应用到您的分支中。
A
Andrea

如果您不希望 develop 头和 feature1 头都合并到 feature1 中,而是希望在使用 {1 中的最新编辑“更新”feature1 分支时保持每个分支头不同},使用无快进

git pull
git co feature1
git pull
git merge --no-ff develop
git push

我个人每次执行合并时都尝试使用 --no-ff,因为在我看来它可以保持历史非常干净。


L
Laudiocínio Carvalho

分支机构:

开发 ====> 开发

功能1 ====> 工作

步骤 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

m
midi

在 IntelliJ IDEA 中,只需按照以下步骤操作:

打开 Git 工具窗口(查看->工具窗口->Git)选择“日志”右键单击“开发”单击 -Merge 'develop' 到 'feature1'(保留分支中的所有提交历史记录)或 -Rebase ' develop' 变成 'feature1' (从你的分支中删除提交历史,而不是从开发中获取历史) 最后 Git 推送


h
htafoya

为了避免使用简单的合并从开发中提交,我发现更简单(技术较少)的方法特别是如果您已经推送:

更改为 development 并确保您提取了最新更改 从 develop 创建另一个分支, feature1_b 将 feature1 合并到 feature1_b 如果您希望原始 feature1 则删除

因此,当您将 feature1_b 的 PR 变为开发时,它只会包含您的新更改,而不是整个提交历史。

如果您还没有推送,那么@stackdave 的答案是一个很好的答案。


V
Vedha Peri
$ git checkout <another-branch> <path-to-file> [<one-more-file> ...]
$ git status
$ git commit -m "Merged file from another branch"

A
Abhiraj CS

git checkout develop git pull 3.git checkout localbranch

然后根据您的要求运行合并或变基

git 合并开发 git rebase 开发


您的答案如何添加许多其他答案尚未提供的任何新见解?
W
Waqar Ahmed

我找到了解决方案。签出前一个分支并拉取新分支 https://stackoverflow.com/a/71306254/17779236


虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review