我在GIT中有两个分支和两个提交:
A(master)---B(branch "topic")
- 分支'master'的HEAD是提交A
- 分支'topic'的HEAD是提交B
- 提交A是提交B的父提交
我想在“topic”分支中创建一个合并提交C(它将具有A和B作为父提交)。 (我知道这似乎很奇怪,合并提交将为空。)
A(master)---B---C (branch "topic")
\-------------/
我设法以过于复杂的方式创建了这个合并提交(请参见下文)。是否有更简单的方法来创建此合并提交?
感谢您的答案!
初始状态:
$ git init plop
Initialized empty Git repository in /tmp/plop/.git/
$ cd plop/
$ git commit -m "Initial commit (commit A)" --allow-empty
[master (root-commit) a687d4e] Initial commit (commit A)
$ git checkout -b topic
Switched to a new branch 'topic'
$ git commit -m "Some work on my topic branch (commit B)" --allow-empty
[topic d4d1c71] Some work on my topic branch (commit B)
$ #OK, we now reached the initial state
一些尝试:$ git merge master #Does not work
Already up-to-date.
$ git merge --no-ff -s ours master #Does not work
Already up-to-date.
有更简单的方法实现以下内容吗?$ #Let's try another way (too complex!)
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff topic
Already up-to-date!
Merge made by recursive.
$ git checkout topic
Switched to branch 'topic'
$ git merge master
Updating d4d1c71..641e7ae
Fast-forward
$ git checkout master
Switched to branch 'master'
$ git reset --hard HEAD^1
HEAD is now at a687d4e Initial commit
$ git checkout topic
Switched to branch 'topic'
$ git log #This is what I wanted to reach
commit 641e7aeb614d9b49796e8f11abd3a0290ac08b40
Merge: a687d4e d4d1c71
Author: xxx <yyy.zzz>
Date: Sat Jul 23 12:52:41 2011 +0200
Merge branch 'topic'
commit d4d1c71c87b94335c8852ab7675cbb663965ef7d
Author: xxx <yyy.zzz>
Date: Sat Jul 23 12:50:11 2011 +0200
Some work on my topic branch (commit B)
commit a687d4eb88b9f6d661122a5766dd632dd462fbaa
Author: xxx <yyy.zzz>
Date: Sat Jul 23 12:49:52 2011 +0200
Initial commit (commit A)
master
上创建一个新的提交,将合并topic
是可能的(而且也有一定的意义)。 - svickgit revert
会使得git blame
将所有还原的行归因于还原提交,但将它们归因于上游会更有帮助。创建一个还原提交并将其标记为与上游合并可以实现这一点。 - Chortos-2gh-pages
分支,其中包含已构建的文档和仅在该分支上检入的dist/prod文件,用于部署。我的dev
分支领先于master
,我将dev -> gh-pages
合并并重新构建,然后部署。但后来我意识到我搞砸了,因为我想要部署我的主构建,而不是我的开发构建。所以我checkout gh-pages
并尝试merge --no-commit master
,但它会提示“已经是最新的”。在这种情况下,强制进行下游(空)合并将非常有帮助。 - chharveygit blame
输出,而无需使用非默认的blame -CC
选项。重命名文件,然后将其合并回去。(你喜欢当你通过谷歌回到 Stack Overflow 并看到自己已经对问题点赞和评论吗?) - Chortos-2