gpt4 book ai didi

git - 从更新的基本分支获取更改到我的功能分支

转载 作者:行者123 更新时间:2023-12-02 00:52:50 25 4
gpt4 key购买 nike

我有一个 topical拍摄 development分支。现在topicalBranch领先于提交,同时 development接受来自其他一些贡献者的 pull 请求,并在 development 上更新 merge 与我最近的提交有冲突的更改 C4 .

所以当前树看起来像:

C1---C2---C5 development
\
C3---C4 topicalBranch

我希望新树看起来像:

C1---C2---C5 development
\
C3'---C4' topicalBranch

其中 C3' 和 C4' 与 C5 相比有变化。我查了一下Git-Rebasing , 但我想要 topicalBranch进行更新,而不对 development 做任何更改.

更新我的 topicalBranch 的最佳方式是什么?对 development 所做的更改分支,以便我可以向 development 发出新的 pull 请求分支机构。

最佳答案

rebase绝对是你想要的。但是,请注意这将重写您的历史记录。因此,如果您从其他开发人员正在 pull 您的 topicalBranch 的地方推送到远程存储库,那么他们将不得不强制或 rebase pull 。但是,如果您是唯一一个在 topicalBranch 上工作的人,那么这不是问题。

让我们通过初始化一个新的存储库并进行一些提交来重建您的场景,以演示 rebase 后树的外观。

jeff ~ $ mkdir test && cd test
jeff test $ git init
Initialized empty Git repository in /home/jeff/test/.git/
jeff test (master #) $ touch file1 && git add . && git commit -m "init repo"
[master (root-commit) ba3e0ed] init repo
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
jeff test (master) $ git branch -m development

jeff test (development) $ touch file2 && git add . && git commit -m "file2"
[development fb03bd9] file2
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file2

现在让我们转向主题。

jeff test (development) $ git checkout -b topicalBranch
Switched to a new branch 'topicalBranch'
jeff test (topicalBranch) $ touch file3 && git add . && git commit -m "file3"
[topicalBranch c9ffa5a] file3
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file3
jeff test (topicalBranch) $ touch file4 && git add . && git commit -m "file4"
[topicalBranch 5322397] file4
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file4

并模拟从其他开发人员处 pull 的提交。

jeff test (topicalBranch) $ git checkout development
Switched to branch 'development'
jeff test (development) $ touch file5 && git add . && git commit -m "file5"
[development e237fb5] file5
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file5

现在我们可以看到这棵树和你的一样,我们想把开发分支的新提交放到 topicalBranch 中。

jeff test (development) $ git log --graph --oneline --decorate --all
* e237fb5 (HEAD -> development) file5
| * 5322397 (topicalBranch) file4
| * c9ffa5a file3
|/
* fb03bd9 file2
* ba3e0ed init repo

那么让我们 rebase 。

jeff test (development) $ git checkout topicalBranch
Switched to branch 'topicalBranch'
jeff test (topicalBranch) $ git rebase development
First, rewinding head to replay your work on top of it...
Applying: file3
Applying: file4

最后您可以看到 topicalBranch 的历史被重写以包含之前开发分支的新提交。

jeff test (topicalBranch) $ git log --graph --oneline --decorate --all
* f332250 (HEAD -> topicalBranch) file4
* a069799 file3
* e237fb5 (development) file5
* fb03bd9 file2
* ba3e0ed init repo

现在您将能够轻松地将 topicalBranch 快速 merge 到开发中。

对于进入开发分支的新提交,可以根据需要重复此过程。我建议经常这样做,以便可以定期解决冲突,而不是在 topicalBranch 最终完成时解决一连串的冲突 - 此外,这将帮助您尽早发现配置和架构偏差。

关于git - 从更新的基本分支获取更改到我的功能分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com