如何使git合并处理我的工作树的未提交更改?

目前我和一个同事都在主分支上工作。 我在工作树中有一些我不想提交的代码(debugging语句等)。 现在,如果他对这些文件中的某些文件进行更改,我不能合并它们:

$ git merge origin/master Updating 1b8c5c6..eb44c23 error: Entry 'blah.java' not uptodate. Cannot merge. 

从颠覆的背景来看,我习惯于让自己的工作树自动合并,当我从存储库中提取更改,如果有冲突,我手动解决它们。

我发现在git中最快捷的方法是:

 $ git stash $ git merge origin/master $ git stash pop 

本质上,删除我未提交的更改,进行合并,然后重新应用更改。 我怎么能告诉合并自动合并我的工作树与我试图拉入的变化?

据我所知,你可以做的最好的是你已经用git stash 。 我也感到奇怪的是,合并只想处理干净的树木。

忘掉你从颠覆中学到的一切。

在引入外部变更之前始终提交。

想象一下,你有一个大多数工作的树 – 可能不完美,但你正在取得一些进展。 然后,你去做一个合并,你带来的代码只是破坏(本身就是越野车,太多的冲突要处理,等等)。 如果你能解决这个问题,不是很好吗?

如果你犯了,你可以。 如果你不这样做,你只会受苦。

请记住:你所提交的内容不一定是你推的,但是你没有提交的内容很容易丢失。

只要做安全和容易的事情,提前做出承诺,并经常做。

你不能告诉git merge合并对你的本地存储库有变化的文件的变化。 这样可以防止在合并过程中出现严重错误时的变更。

使用CVS和SVN方法进行合并,如果您在更新之前没有手动复制文件,并且在合并时混淆了它们,则必须手动重新编辑才能恢复到良好的状态。

如果您在进行合并之前提交您的更改或隐藏它们,那么一切都是可逆的。 如果合并不顺利,你可以尝试几种方法,使其工作效果最好。

如果你提交了实验或者debugging更改,你可以使用git rebase在你通过git merge进行提交之后移动它们,以便更容易摆脱它们或者避免将它们意外推送到一个存储库。

请注意,在推送到共享存储库的分支上使用git rebase会导致从该存储库中提取的每个人都感到悲伤。

在这种情况下,我更喜欢使用git stash ,但是如果合并更改了我已经编辑但未提交的文件,我只会使用它。