Git取消存储而不丢失合并?

Git取消存储而不丢失合并?,git,merge,unstage,Git,Merge,Unstage,我有一个分支,有数百个新的和不同的文件,我只想将其中的十几个合并到我的发布分支中。我试着在没有提交的情况下运行一个正常的git合并,它会自动暂存数百个我不想要的文件(除了找到几十个需要手动合并的冲突之外)。然后我试着执行git还原以取消所有自动合并文件的暂存,只需将我想要的文件添加回索引,但这也中止了合并,并将所有冲突标记保留在文件中。我以为我可以运行mergetool,但它现在无法识别冲突标记 我是不是走错了方向……还是我遗漏了什么?这个问题有点模棱两可。我会尝试重新措辞,并相应地回答。假设您

我有一个分支,有数百个新的和不同的文件,我只想将其中的十几个合并到我的发布分支中。我试着在没有提交的情况下运行一个正常的git合并,它会自动暂存数百个我不想要的文件(除了找到几十个需要手动合并的冲突之外)。然后我试着执行git还原以取消所有自动合并文件的暂存,只需将我想要的文件添加回索引,但这也中止了合并,并将所有冲突标记保留在文件中。我以为我可以运行mergetool,但它现在无法识别冲突标记


我是不是走错了方向……还是我遗漏了什么?

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

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

git cat-file -p branchA
2) 签出该树下文件2和文件3的更改:

git reset <sha1> -- file2 file3
如果您已经向登台发送了消息,请执行以下操作(以防提前提交所有需要的更改):
git reset——硬的

它就像使用
git reset
一样简单。我使用的是
git stash pop
,有一个合并冲突,它还将一些文件与我和merge所做的更改一起提交。我使用以下命令解决了冲突并取消了所有文件的分级:

git reset HEAD <file_1> <file_2> ... <file_n>
git复位头。。。

要还原一个精确的合并提交,并按阶段进行所有更改,可以使用下面的命令

git revert -m 1 <commit-hash>
git还原-m 1

Merge and revert谈论提交,暂存应用于索引。你到底指的是什么?在哪里?不清楚你在做什么。我试着澄清一下——但我已经喜欢曼祖尔下面的答案1。曼祖尔——谢谢,太好了。我仍然需要检查这些文件中是否存在冲突,但我可以在合并回发布分支时这样做。至少这简化了我所关心的文件的合并。。。在你的第2步manzur中,git checkout似乎比git reset工作得更好,因为这样我就不会让原始版本显示为未老化的更改。此外,我可以只使用分支名称而不使用。有意义吗?当然,可以使用sha1代替分支名称。它们几乎在所有情况下都是可互换的(看看.git/refs/heads/它包含sha1)。关于
checkout
vs
reset
这取决于它<当您知道索引和文件系统上发生了什么时,code>reset会更好<代码>签出更简单,您可以将文件签出到其他目录并复制粘贴所需的更改。
git revert -m 1 <commit-hash>