繁体   English   中英

你如何git添加一个新的文件而不进行分期?

[英]How can you git add a new file without staging it?

为了有效地使用git(并且按照预期),我进行了小型的原子提交,而我确实有更长的会话,我不仅要改变一件事。 因此,我大量使用git add -p 但是,这对于全新的文件不起作用,因为我以后往往会忘记它们。

我想要做的是,告诉git一个新的文件,我想它来跟踪,而不是阶段,它

示例:运行git status会产生:

# On branch my-current-branch
# Your branch is ahead of 'origin/my-current-branch' by 2 commits.
#
# Changes to be committed:
#
<<STAGED SECTION>> // A
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
<<UNSTAGED-YET-KNOWN SECTION>> // B
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
<<UNKNOWN SECTION>> // C

如果我在C部分有一个文件foo ,并且我说git add foo它将转到A部分。 如果我说git add -N foo它会转到A和B.然而,这意味着它将包含在下一次提交中,至少是因为有一个新文件。

我想让它专门进入B部分,这样我以后可以使用git add -pgit add foo (或其他)将其添加到A.

编辑

关于add -N解决方案,这不起作用,因为如果我在说add -N并且没有正确添加它之后尝试提交,git会抱怨因为它不知道如何处理空文件:

foo: not added yet
error: Error building trees

使用Git 2.5, git add -N/--intent-to-add实际上是正确的解决方案。
新文件不会成为下一次提交的一部分。

请参阅NguyễnTháiNgọcDuy 提交的d95d728pclouds )(合并于d0c692263 ):

diff-lib.c :调整diff中条目的位置

问题:

由“ git add -Ngit add -N条目是用户的提醒,以便他们在提交之前不会忘记添加它们。 这些条目即使不是真实的,也会出现在索引中。 他们在索引中的存在会导致令人困惑的“ git status ”,如下所示:

On branch master
Changes to be committed:
        new file:   foo

Changes not staged for commit:
        modified:   foo

如果你执行“ git commit ”,即使“ status ”将其报告为“ to be committed git commit ”,也不会包含“ foo ”。

解:

此修补程序将输出更改为

On branch master
Changes not staged for commit:
        new file:   foo

no changes added to commit

这意味着:

将这些路径视为“尚未添加到索引中,但Git已经了解它们”; git diff HEAD ”和“ git diff --cached HEAD ”不应该谈论它们,而“ git diff ”应该将它们显示为新的。 +尚未添加到索引的文件。

也许您可以尝试编写一些预提交挂钩,如果您有未跟踪的文件,它会提醒您。 这将要求你始终保持你的git目录清洁(显然你需要保持最新的.gitignore)。

还可以尝试git add -i ,它类似于git add -p但也有一个用于添加新文件的界面。

在进行更改之前,您可以使用该路径提交空文件。 如果你已经在那里写了东西,移动文件,制作一个空白文件,提交,然后正常添加-p和git commit --amend这样你就没有“添加空白文件”提交。

暂无
暂无

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

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