2010-01-05 102 views
21

說有幾個文件被修改,我只想每次提交一個文件。怎麼做?給出一個狀態如下的例子。謝謝!!如何使用Git一次提交一個文件?

例:

> git status 
# modified: file01.txt 
# modified: file02.txt 
# modified: file03.txt 
# modified: file04.txt 
# modified: file05.txt 

回答

17

有幾種方法,但最簡單的大概是:你列出

git commit file01.txt 
git commit file02.txt 
... 

的任何路徑後commit命令將不管他們是否正在上演承諾承諾。另外,您也可以在臺上每一個,然後提交:

git add file01.txt 
git commit 

git add file02.txt 
git commit 

... 
+6

這是常規的git提交,但對於部分文件提交-p或-e是需要的 – radistao 2012-02-13 19:15:13

+0

該死的,我應該在使用這個命令之前閱讀這個評論。這是對這個問題的錯誤答案! – default 2013-05-16 07:19:03

+0

@donschoe問題問如何提交單個文件(不是文件的一部分)。答案是正確的,即使你的問題標題不同(可能應該是「如何提交單個文件)。 – 2013-05-16 18:32:00

2
git add file01.txt 
git stash 
git commit -m'commit message' 
git stash pop 

重複。

+3

我打算投票贊成,因爲從git的角度來看,沒有任何理由去做隱藏,但是如果你想在隱藏和提交之間進行構建和測試,這並不是一個壞主意,這樣你就會知道你沒有意外地提交破壞的代碼。 – 2010-01-05 03:57:08

+0

提交破損的代碼有什麼問題?只要它沒有發佈,也沒有其他人設法得到它。 – 2010-01-05 06:27:00

+0

@Pat,我傾向於這樣做的習慣喜歡有工作提交和使用git svn,我必須存儲更改之前上傳與dcommit的更改。但是你是對的,在OP的情況下沒有任何理由去做隱藏的流行 – 2010-01-05 13:23:15

45

使用git add -p後面跟着git commitgit add -p詢問您是否需要爲每次更改進行承諾,這非常方便。

您也可以使用-pgit resetgit checkout

+7

我真的認爲git add -p需要更多曝光!它創建了更好的工作流程,因爲您不必關心文件名,只需滾動即可進行更改。 – dpavlin 2011-03-31 17:42:01

14

git add -p通過DAF的回答說明是好的,但更直接的方式來挑選和選擇,我真的很喜歡:

git add -e

它產生相應的補丁程序,然後加載它在你的首選編輯器,以便您可以根據需要進行編輯。保存文件並退出編輯器時,只有修改後的修補版本所做的更改纔會添加到索引中。

如果不小心關閉了編輯器而未進行更改,則可能需要使用get reset HEAD,然後重新開始。

+3

我現在比'-p'更喜歡'-e'。 – Richard 2013-03-07 21:04:48

1

關於在文件中暫存部分更改的主題,值得注意的是,各種文本編輯器都支持以比任何命令行選項更好的方式執行此操作。

對於Emacs,我使用Magit,Emacs使用單擊鍵向前或向後通過hunk,增加或減少粒度,以及暫存或取消暫存當前塊。您也可以手動標記區域並分階段(或不分階段)該區域。

我相信也有類似的vim插件,以及其他編輯器/ IDE。

相關問題