繁体   English   中英

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

[英]Git rebase: do I have to have a clean working directory first?

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

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

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

是的,在变基之前你应该有一个干净的工作目录(或者如果你打算签出 master 则切换分支)。 实现这一目标的最简单方法就是提交你现在拥有的任何东西。 请注意,如果您还没有准备好提交并不重要,因为它还没有完成。 只需将您的提交消息设置为提醒您尚未完成的内容。 例如,我使用“wip - 这里有一些快速说明”。 而且由于我总是以大写字母作为实际提交标题开始我的提交,因此我使用小写的起始字母向我表明我需要在创建拉取请求之前重新设置/修改/改写提交。 如果由于某种原因你坚决反对提交未完成的工作(我想不出任何好的理由),那么你可以隐藏你的更改来获得一个干净的目录。

提示:删除您本地的 master 分支,因为您(可能)永远不需要它。 如果你想变基到 master,你不需要做你暗示你要做的事情,即:检出 master,拉取更改,然后检出你的分支,然后变基到 master。 相反,只需 git fetch,然后 rebase 到 origin/master。 它要快得多并达到相同的结果。 任何时候你想从 master 创建一个新分支,git fetch,然后从 origin/master 创建你的分支。

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

无论工作目录是否干净,此命令都是开箱即用的

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

git stash
git pull --rebase
git stash pop

并像往常一样解决它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM