GIT:检出时以下未跟踪的工作树文件将被覆盖

13
我有两个分支,一个叫做master,另一个叫做dev。 我目前在master分支上,我想切换到dev分支将一个文件移动到开发服务器上。但是当我执行

时。
$ git checkout dev

我收到了这个消息:

以下未被跟踪的工作树文件将被覆盖:

pages/memclub/images/subheaders/leadership.png
pages/memclub/images/subheaders/male.png
pages/memclub/images/subheaders/marketing.png
pages/memclub/images/subheaders/training.png
我不想将文件提交到主分支,它们还没有准备好被推送。
1个回答

28

首先,您需要将相关文件添加到Git中以便跟踪(您不必提交任何更改,但Git需要知道这些文件):

git add pages/memclub/images/subheaders/leadership.png pages/memclub/images/subheaders/male.png 
git add pages/memclub/images/subheaders/marketing.png pages/memclub/images/subheaders/training.png

然后您可以隐藏您所做的更改:

git stash 

当你准备好再次开始处理这些文件时,可以使用:

git stash pop

尝试使用git stash时出现错误:没有本地更改需要保存。 - Matthew Colley
1
哦,对了,因为你的文件是未跟踪的。你必须先使用 git add 命令将它们添加到暂存区,然后再进行储藏操作。你不需要提交它们,但必须将它们添加到暂存区。 - Ethan Brown
你可以使用git stash apply来代替git stash pop。Pop命令会将存储在Stash中的文件弹出,而Apply命令则会将这些文件复制到当前分支中。 - Abhishek Gupta
1
knoxxs,“git stash pop”和“git stash apply”是同义词;它们没有任何不同的功能。 - Ethan Brown
5
根据文档:类似于pop,但不会将状态从存储列表中删除。与pop不同的是,<stash>可以是任何看起来像由stash save或stash create创建的提交。@EthanBrown错了,@knoxxs是正确的。 - pedromanoel
1
你可以使用 git stash --include-untracked(或 -u 简写)来代替添加文件。 - Lutz Prechelt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接