0

我发现这种情况很“常见”,但环顾四周没有任何帮助。我不是真正的 Git 专家,但这应该很简单。

让我们举个例子:

UserA 和 UserB 正在使用相同的版本 (A)。UserA 提交并推送到远程,所以现在它在版本 B 中。

我只提交了一些我希望推送的文件。

当我尝试拉取(因为由于版本不同而无法推送)时,Git 会告诉我“未提交的更改将被合并覆盖”。

UserA: A------B
        \      \<-not possible  
UserB:   \------C

我希望拉出新版本,保留我的所有更改,包括未提交的更改。可能吗?

我正在使用 IntelliJ 和他的内置插件(我觉得它很友好),所以如果有人能解释我如何从那里做到这一点,那就太好了!

4

1 回答 1

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 插件,所以试着在那里重现它。

也可以使用 stash,但我不喜欢它,就git stash在你合并之后,git stash pop(或者我认为这就是过程)。我不喜欢它,因为合并并不总是一个微不足道的过程,并且恢复您的更改会让您遇到麻烦。另外,您可能会忘记隐藏的更改,并隐藏在它们之上或忘记取消隐藏。也许那只是我。

于 2012-08-31T13:51:13.707 回答