Git unstage不丢失合并?

时间:2015-02-03 17:46:22

标签: git merge unstage

我有一个包含数百个新文件和不同文件的分支,我只想将十几个这样的文件合并到我的发布分支中。我尝试运行一个没有提交的正常git合并,并自动上传了数百个我不想要的文件(除了发现需要手动合并的数十个冲突。)然后我试着做一个git revert来取消所有的automerged文件,只需将我想要的文件添加回索引,但这也会中止合并并将所有冲突标记留在文件中。我以为我可以运行mergetool,但它现在还没有认识到冲突标记...

我是以完全错误的方式解决这个问题......还是我缺少某些东西?

3 个答案:

答案 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>