我有一个包含数百个新文件和不同文件的分支,我只想将十几个这样的文件合并到我的发布分支中。我尝试运行一个没有提交的正常git合并,并自动上传了数百个我不想要的文件(除了发现需要手动合并的数十个冲突。)然后我试着做一个git revert来取消所有的automerged文件,只需将我想要的文件添加回索引,但这也会中止合并并将所有冲突标记留在文件中。我以为我可以运行mergetool,但它现在还没有认识到冲突标记...
我是以完全错误的方式解决这个问题......还是我缺少某些东西?
答案 0 :(得分:2)
这个问题有点含糊不清。我会尝试改写它并相应地回答。假设您只想合并branchA:
中的文件(file2,file3)1)获取分支提交的树sha1:
git cat-file -p branchA
2)检查该树下file2和file3的更改:
git reset <sha1> -- file2 file3
3)提交此更改:
git commit -m 'Merge of branchA'
如果您已经通过分段发送消息,请执行(如果提前提交了所有必需的更改): git reset --hard
答案 1 :(得分:2)
这就像使用git reset
一样简单。我正在使用git stash pop
并且发生了合并冲突,并且它还通过我进行了更改并合并了一些文件。我解决了冲突并使用以下命令取消了所有文件:
git reset HEAD <file_1> <file_2> ... <file_n>
答案 2 :(得分:0)
要还原确切的合并提交并按阶段进行所有更改,可以使用以下命令。
git revert -m 1 <commit-hash>