如何使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
,但是如果合并更改了我已经编辑但未提交的文件,我只会使用它。