Git rebase:我必须首先有一个干净的工作目录吗?

问题描述

前一段时间,我拉了master。然后,我从母版branch1创建了一个分支。我在branch1中做了很多工作。我有几次提交,自上次提交以来,我已经更改了很多文件添加了新文件,还可能删除了一些文件。所以我的工作目录目前不干净。

现在其他人已将一堆更改合并到服务器上的master中,我需要将这些更改拉到master中并重新建立我的工作。

为了将branch1设置为最新的master,我需要一个干净的工作目录吗?换句话说,我在重新定基之前需要提交当前的工作吗?我不清楚这是如何工作的。

解决方法

是的,在重新定基之前,您应该有一个干净的工作目录(或者,如果要签出master,则切换分支)。实现此目的的最简单方法是仅提交您现在拥有的任何内容。请注意,您还没准备好提交就没关系,因为尚未完成。只需将您的提交消息设置为某些内容即可提醒您尚未完成。例如,我使用“ wip-一些快速注释”。而且由于我总是以实际提交标题的大写字母开始提交,因此我使用小写的开头字母向我指示,在创建拉取请求之前,我需要对提交进行基础/修改/改写。如果由于某种原因您不愿意提交未完成的工作(对此我没有任何好的理由),那么您可以存储所做的更改,而不是获得一个干净的目录。

提示:删除您的本地主分支,因为您(可能)永远不需要它。如果要基于主服务器,则无需执行暗示的操作,即:检出主服务器,提取更改,然后检出分支,然后再以主服务器为基础。取而代之的是,只需git fetch,然后重新建立到原点/主节点即可。它快得多,并能达到相同的结果。每当您要从master分支创建新分支时,git fetch,然后从origin / master分支创建分支。

,

忘记清洁人员了,您只需要一个git pull --rebase --autostash。这将自动存储当前工作以获取一个干净的工作目录(基于您的上一次提交),然后从远程对当前分支进行重新设置,而不是弹出存储的内容。

无论工作目录是否干净,该命令都可以立即可用

如果遇到一些冲突,请记住此命令等效于

git stash
git pull --rebase
git stash pop

像平常一样解决它。