簡體   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