2011-04-19 42 views
5

比方说,我刚刚创建了一个回购从刚刚初始化git仓库暂存区中删除所有文件

git init 

,然后做

git add . 

然后我做了

git status 

和注意到那里有一些我不想要的文件。我去了.git/info/,并将这些文件添加到exclude文件。然后我试图

git reset . 

,但有一个

fatal: Failed to resolve 'HEAD' as a valid ref. 

尝试一个

git reset --hard 

有同样的效果。我想这是因为我还没有做出承诺?那么,如何才能在新的无版权回购中实现同样的效果?

感谢

回答

16

更新:你的问题的标题所暗示的要unstage的所有文件,但是从你的问题的文字,听起来就好像你只是想unstage他们夫妇 - 你现在在下面阐明了这一点,并且我在回答末尾添加了一些内容,提到如何取消每个刚刚添加的新文件。

你是正确的,你看到的错误是因为你还没有创建任何提交。

当你做了git add .那个“上演”工作树中的所有东西,为你的下一次提交。除了忽略这些文件,您还想要取消这些文件。如果键入git status,它给你一个提示如何做到这一点:

# Changes to be committed: 
# (use "git rm --cached <file>..." to unstage) 

...因此,如果您要unstage的文件foo.txtbar.c,你会怎么做:

git rm --cached foo.txt bar.c 

然后,您可以继续并创建您的第一个提交:

git commit 

......如您所料。


你澄清下面,其实要unstage每一个你刚才添加的文件 - 在这种情况下,你可以像grzuy说,修改到:

git rm -r --cached . 

..并通过git add filename更有选择性地启动临时文件。

+0

假设你的假设是正确的,你可以编辑问题的标题? – 2011-04-19 20:38:23

+0

对不起,如果我不清楚。我的意图是取消所有内容,然后手动添加我想要的文件。 – 2011-04-19 22:30:20

+0

@devoured elysium:我已经更新了解决这个问题的答案。 – 2011-04-20 09:23:55

5

对于所有的回购:

git rm -r --cached .
相关问题