[英]Cannot git merge because git commit --amend
在 master 分支中,我推送了Initial Commit gitlab
之后,我创建了一个名为“branchA”的新分支
我将初始提交重命名为
git commit --amend -am Initial Commit v2
并做一些修改并提交它
在这个例子中,你可以看到类似的东西
master :
- Initial Commit
branchA :
- Initial Commit v2
- Commit number 2
- ....
我想将 branchA 合并到 master 我该怎么做?
您没有重命名初始提交。 相反,您做了一个新的、不同的初始提交。 您现在有两个初始提交:
$ mkdir tworoots
$ cd tworoots
$ git init
Initialized empty Git repository in ...
$ echo example of multiple roots > README
$ git add README && git commit -m 'first root'
[master (root-commit) b89218d] first root
1 file changed, 1 insertion(+)
create mode 100644 README
$ git branch branchA
$ git log --all --decorate --oneline --graph
* b89218d (HEAD -> master, branchA) first root
请注意分支名称master
和branchA
select 如何提交b89218d
,这是我的初始提交。
现在,如果我进行新的初始提交:
$ echo forgot something > afile
$ git add afile
$ git commit --amend -m "second root"
[master c982f45] second root
Date: Thu Feb 4 02:27:37 2021 -0800
2 files changed, 2 insertions(+)
create mode 100644 README
create mode 100644 afile
这个新的提交有一个新的 hash ID, c982f45
(你的提交不会有这个 hash ID,因为这取决于我的名字,我的 Z0C83F57C786A0B4A39EFAB23731C7EB 地址,等等) 但是第一个根仍然存在, branchA
仍然找到它:
$ git log --all --decorate --oneline --graph
* c982f45 (HEAD -> master) second root
* b89218d (branchA) first root
从这个特定的图表(由于--oneline
选项)很难看出这两个提交是完全不相关的。 运行相同的git log
命令但没有--oneline
并注意提交之间没有连接线,以查看。
如果我们现在git checkout branchA
并进行更多提交,他们将branchA
的根提交作为他们的(单个)根提交:
$ git checkout branchA
Switched to branch 'branchA'
$ echo data go in files and the files go in commits > datafile
$ git add datafile
$ git commit -m 'add some data'
[branchA 12fe86a] add some data
1 file changed, 1 insertion(+)
create mode 100644 datafile
带有我们其他常用选项的git log
,但这次没有--all
,表明master
的提交与这些提交无关:
$ git log --decorate --oneline --graph
* 12fe86a (HEAD -> branchA) add some data
* b89218d first root
尝试合并这两个不相交的子图会产生错误(自 Git 2.9 起):
$ git checkout master
Switched to branch 'master'
$ git merge branchA
fatal: refusing to merge unrelated histories
您可以强制git merge
尝试合并,就像以前版本的 Git 一样,通过添加--allow-unrelated-histories
选项。 但是,如果对git merge
没有很好的了解,这很少是一个好主意。 在我构建的示例中,它可以工作。 如果它对您有用并且可以满足您的需求,那很好,但请确保它确实是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.