拉取/合并未提交的更改

3

我有两个git工作目录。有时候,我在错误的目录中进行了一些更改,现在希望将这些更改移动到另一个目录。也就是说,我想从一个位置合并/拉取未提交的更改到另一个位置。

在bzr中,我会使用merge命令和--uncommitted选项,但我找不到等效于git的方法。

2个回答

5
推送和拉取本质上是基于提交的,因此我认为没有任何方式可以实现这一点。
然而,你可以创建一个临时分支(`git checkout -b tmp`),向该分支提交,将其推送到另一个仓库(`git pull $OTHER tmp`),然后继续使用该提交,或者在保留工作树更改的情况下将HEAD还原到最新的提交(`git reset HEAD^`),然后继续处理它们。
更重要的是:你确定要有两个单独的工作目录吗?我可以看出在Mercurial或SVN中会很有用(我没有使用过Bazaar,所以无法评论它),但在Git中,通常会使用分支和stash。

2
是的,我需要两个目录。我必须积极地在两个分支上工作。Git不关心二进制/构建输出,因此使用checkout实际上并没有完全切换到另一个分支(会保留输出不变)。当然,cmake/automake会根据需要重新构建,但我不想等待。 - edA-qa mort-ora-y

3
一个低技术的解决方案就是简单地使用 git diff:
$ cd wd_1
$ (cd ../wd_2 ; git diff -p) | patch -p1

您可以在其他工作目录中使用git reset


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接