我已经开始进行合并,但是已经解决了一些冲突,现在所有阶段都可以提交了。我只想仔细检查一下我合并了哪些父修订版。
到目前为止,尝试过的事情:
git show
使用%P格式说明符-除非我无法弄清楚如何告诉未提交合并的父母git rev-list
有各种选择,无济于事hg parents
,这使我回到git rev-list
但没有成功:它列出了五个修订版本,但未列出我实际传递给的修订版本git merge <rev>
git commit
并查看提交消息最后一个是真正可行的唯一选择,只是它只显示了我未提交合并的父项之一。
有比git commit
!更好的方法!如何正确执行此操作?
请注意,由于合并提交尚不存在,因此您将无法使用git log
或git show
与%P
格式说明符(对应于父哈希)一起使用该将来的合并提交的父项。
如果将一个分支简单合并到另一个分支,则可以运行
git log -n 1 --pretty=format:"%H"
git log -n 1 --pretty=format:"%H" MERGE_HEAD
它将打印完整的SHA
分别。
如果在章鱼合并过程中发生任何冲突,这涉及将一个以上的分支合并到另一个分支中,则Git将中止合并。因此,您的问题通常不适用于这种情况。但是,正如安德鲁(Andrew)在其评论中指出的那样--no-commit
,即使没有冲突,该标志也可以用于故意中断合并。但是,在这种情况下,
git log -n 1 --pretty=format:"%H" MERGE_HEAD
仅打印合并中的一个分支的SHA ;它不会列出所有这些分支的SHA 。
一切都没有丢失;有一种打印所有的方法。事实证明,该.git/MERGE_HEAD
文件包含要合并的所有分支的SHA 。因此,更可靠的方法是简单地转储该文件的内容:
cat .git/MERGE_HEAD
为了解决问题,这是一个章鱼合并中断的示例(自愿完成):
# set things up
$ mkdir test_octopuss
$ cd test_octopuss
$ git init
# create an initial commit
$ printf "foo\n" > README.md
$ git add README.md
$ git commit -m "add 'foo' in README"
# create three different commits on branches whose tips count the root commit as parent
$ printf "bar\n" >> README.md
$ git commit -am "add 'bar' in README"
$ git checkout -b another master^
$ printf "bar\n" >> README.md
$ git commit -am "add 'bar' in README"
$ git checkout -b yetanother master^
$ printf "bar\n" >> README.md
$ git commit -am "add 'bar' in README"
# get our bearings
$ git log --oneline --graph --all --decorate
* 93e4667 (HEAD, yetanother) add 'bar' in README
| * a114920 (another) add 'bar' in README
|/
| * 7adc927 (master) add 'bar' in README
|/
* bc400cd add 'foo' in README
# merge using the --no-commit flag (to pretend that the merge failed)
$ git merge --no-commit master another
Trying simple merge with master
Trying simple merge with another
Automatic merge went well; stopped before committing as requested
# the following command fails to list all the heads being merged in
$ git log -n 1 --pretty=format:"%H" MERGE_HEAD
7adc927d9f7a0c8864d0ff784c0c53b0ded00616
# list of all the heads being merged in the current branch
$ cat .git/MERGE_HEAD
7adc927d9f7a0c8864d0ff784c0c53b0ded00616
a114920072210417a1fa6c9b2b33b5729097ee93
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句