5

我有一个包含数百个新文件和不同文件的分支,我只想将其中的十几个合并到我的发布分支中。我尝试运行一个没有提交的普通 git merge,它自动暂存了数百个我不想要的文件(除了发现几十个需要手动合并的冲突。)然后我尝试做一个 git revert 来取消暂存所有自动合并的文件文件,只需将我想要的那些添加回索引,但这也会中止合并并将所有冲突标记留在文件中。我以为我可以只运行合并工具,但它现在无法识别冲突标记...

我是在以完全错误的方式解决这个问题……还是我遗漏了什么?

4

3 回答 3

3

就像使用一样简单git reset。我正在使用git stash pop并发生合并冲突,它还上演了一些由我更改并合并的文件。我使用以下命令解决了冲突并取消了所有文件:

git reset HEAD <file_1> <file_2> ... <file_n>
于 2018-03-08T16:06:29.713 回答
2

这个问题有点模棱两可。我会尝试改写它并相应地回答。假设您只想合并 branchA 中的文件(file2,file3):

1)获取分支提交的树sha1:

git cat-file -p branchA

2)检查文件2和文件3在该树下的更改:

git reset <sha1> -- file2 file3

3)提交此更改:

git commit -m 'Merge of branchA'

如果您已经向 staging 发送消息,请执行(以防所有需要的更改都提前提交): git reset --hard

于 2015-02-03T19:32:03.227 回答
0

要恢复精确的合并提交,并将所有更改分阶段进行,可以使用以下命令。

git revert -m 1 <commit-hash>
于 2020-04-22T10:31:56.947 回答