在合并之前,请先提交更改或存储更改

时间:2019-02-18 11:51:42

标签: git

我想升级,但是我需要提交,但是当我执行git commit时,我得到了这个Your branch is behind 'origin/develop' by 20 commits, and can be fast-forwarded. (use "git pull" to update your local branch)

我不想丢失本地更改

3 个答案:

答案 0 :(得分:0)

将它们存放在本地。然后从您的主要(开发)分支中拉出。 以后,您可以合并已隐藏的更改中的更改。 在intellij上,您可以使用以下方式存储更改

VCS>Git>Stash Changes

要取消存储本地更改并将其与本地代码合并,

VCS>Git>UnStash Changes

答案 1 :(得分:0)

在项目目录中使用这些终端命令。

使用git stash存储本地更改。在本地中的最后一次提交之后,这会将您的本地更改保存到堆栈中。

如果要从除master以外的分支中拉出,请使用git pullgit pull <remote-name> <branch-name>从远程进行更改。这会将提交从远程分支拉到您没有的本地。

使用git stash pop从存储中弹出更改。这将套用未提交的更改。这可能会导致代码中的合并冲突。

您可以在解决冲突后提交更改。

您还可以存储更改而不进行存储,但这也可能导致合并冲突,您必须解决。

答案 2 :(得分:0)

请在合并之前提交您的更改或将其隐藏

在Git 2.27(2020年第二季度)上您将不再看到该消息,因为“ git merge”了解了“ --autostash”选项和merge.autoStash的新设置。

请参见commit d9f15d3commit f8a1785commit a03b555commit 804fe31commit 12b6e13commit 0dd562ecommit 0816f1d,{{3} },commit 9bb3deacommit 4d4bc15commit b309a97commit f213f06commit 86ed00acommit facca7fcommit be1bb60commit efcf6cfcommit c20de8bcommit bfa50c2commit 3442c3d(2020年4月7日),commit 5b2f6d9(2020年4月4日)和commit 65c425acommit fd6852c(2020年3月21日) )由commit 805d9ea
(由Denton Liu (Denton-L)Junio C Hamano -- gitster --中合并,2020年4月29日)

commit bf10200:教导--autostash选项

帮助:菲利普·伍德
建议:阿尔本·格鲁因
签名人:刘登顿

在重新设置基准之前,可以通过--autostash选项使工作树自动隐藏,然后再继续进行重新基准设置。但是,合并中缺少此选项。

在合并中执行--autostash选项和相应的merge.autoStash选项,该选项在合并之前隐藏,然后在弹出之后弹出。

当开发人员在主题分支上进行了一些本地更改但他们意识到自己的工作依赖于另一个分支时,此选项很有用。以前,他们必须运行类似

git fetch ...
git stash push
git merge FETCH_HEAD
git stash pop

但是现在,减少到了

git fetch ...
git merge --autostash FETCH_HEAD

生成自动存储时,仅在以下三种明显情况下才会将其自动重新应用于工作树:

  1. 使用git commit提交不完全合并。
  2. 合并成功完成。
  3. 使用git merge --abort中止合并。

在使用remove_merge_branch_state()删除合并状态的所有其他情况下,例如通过git reset --hard中止合并,自动存储将保存到存储刷新日志中,而不是保持工作树的清洁。

并且:

merge:传递--autostash进行合并

签名人:刘登顿

之前,--autostash仅与git pull --rebase一起使用。但是,在最后一个补丁中,还合并了已学习的--autostash,因此没有理由再限制此限制了。教导拉动以传递--autostash进行合并,就像重新设置基准一样。

所以在您的情况下:

git config --global merge.autostash true
git pull

您将不会丢失本地更改!