Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git rebase:我必须先有一个干净的工作目录吗?_Git_Branch_Rebase_Working Directory - Fatal编程技术网

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

Git rebase:我必须先有一个干净的工作目录吗?,git,branch,rebase,working-directory,Git,Branch,Rebase,Working Directory,不久前我拉了master。然后,我从master创建了一个分支,branch1。我在branch1做了很多工作。我有几次提交,自从上次提交以来,我更改了很多文件并添加了新文件,可能删除了一些文件。所以我的工作目录目前不干净 其他人现在已经将一系列更改合并到服务器上的master中,我需要将这些更改拉到master中并重新调整我的工作 为了将branch1重新设置为最新的master,我需要一个干净的工作目录吗?换句话说,我是否需要在重定基准之前提交当前的工作?我不清楚这是如何工作的。是的,在重新

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

其他人现在已经将一系列更改合并到服务器上的master中,我需要将这些更改拉到master中并重新调整我的工作


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

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


提示:删除您的本地主分支,因为您(可能)永远不会需要它。如果您想在master上重新设置基址,则不需要执行您暗示要执行的操作,即:签出master,拉取更改,然后签出分支,然后在master上重新设置基址。相反,只需git fetch,然后重新设置到origin/master。它的速度快得多,并且达到了相同的结果。任何时候你想从master创建一个新的分支,git fetch,然后从origin/master创建分支。

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

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

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

git隐藏
git-pull——重基
吉特隐藏流行音乐

然后像平常一样解决它。

是的,你需要一棵干净的工作树。但这可以很容易地通过使用隐藏。保存到stash,进行重设基础,然后隐藏一些答案,以解释为什么重设基础会修改工作目录(以及为什么在重设基础之前确实需要一个干净的工作目录)。@eftshift 0:我不喜欢在重设基础时使用stash(或autostash),因为这样可能会留下一个隐藏。如果它不能正确应用,你就有藏匿的所有问题。如果您进行了常规提交,但没有正确应用,那么您就拥有了处理提交的所有工具。我认为如果rebase autostash代码进行了一次提交而不是隐藏(尽管这会使其命名错误!),这可能会很好。我不同意,但这很好。