我发现这种情况非常“普遍”,但环顾四周没有任何帮助。 我不是Git专家,但这应该很简单。
我们举个例子:
UserA和UserB正在使用相同的版本(A)。 UserA已提交并推送到远程,因此现在它已在B版本中。
我只提交了一些我希望推送的文件。
当我尝试拉(因为由于版本不同而无法推送)时,Git会告诉我“未提交的更改将被合并覆盖”。
UserA: A------B
\ \<-not possible
UserB: \------C
我希望将新版本保留所有更改,也包括未提交的更改。有可能吗?
我正在使用IntelliJ和他的内置插件(我发现它非常友好),所以如果有人能解释我怎么做,那将会很棒!
答案 0 :(得分:1)
有可能。
我认为最佳做法是按照您已经做过的方式提交所需的更改(假设您在分支“dev”上工作)。然后你创建一个未提交更改的新分支,假设你称之为“mywork”:git checkout -b mywork
。您在此分支上提交其他更改。
然后是合并。首先检查您是否正在使用正确的分支git checkout dev
。那时我不太确定它是否能够正常工作,所以一个想法是运行git checkout -b tempdev commitIdWithChangedToBePushed
(即你从前提交分支)。
然后你将它全部合并。正如您所做的那样,运行git pull origin
(原点是您的遥控器)。现在,它们都在tempdev上本地合并。将tempdev合并到dev并删除tempdev。现在,推送到原点。
因此,您现在有2个分支:dev
进行干净的更改,mywork
进行其他更改。如果您的想法是稍后整合其他更改,则可以合并它们。
顺便说一句,我不知道IntelliJ插件所以只是尝试在那里重现它。
也可以使用藏匿,但我不是它的粉丝,只是git stash
,合并后git stash pop
(或者我认为这是过程)。我不喜欢它,因为合并并不总是一个简单的过程,让你的改变回来会让你遇到麻烦。此外,你可能会忘记你隐藏的变化,藏匿他们或忘记解除。也许这只是我。