說有幾個文件被修改,我只想每次提交一個文件。怎麼做?給出一個狀態如下的例子。謝謝!!如何使用Git一次提交一個文件?
例:
> git status
# modified: file01.txt
# modified: file02.txt
# modified: file03.txt
# modified: file04.txt
# modified: file05.txt
說有幾個文件被修改,我只想每次提交一個文件。怎麼做?給出一個狀態如下的例子。謝謝!!如何使用Git一次提交一個文件?
例:
> git status
# modified: file01.txt
# modified: file02.txt
# modified: file03.txt
# modified: file04.txt
# modified: file05.txt
有幾種方法,但最簡單的大概是:你列出
git commit file01.txt
git commit file02.txt
...
的任何路徑後commit命令將不管他們是否正在上演承諾承諾。另外,您也可以在臺上每一個,然後提交:
git add file01.txt
git commit
git add file02.txt
git commit
...
git add file01.txt
git stash
git commit -m'commit message'
git stash pop
重複。
我打算投票贊成,因爲從git的角度來看,沒有任何理由去做隱藏,但是如果你想在隱藏和提交之間進行構建和測試,這並不是一個壞主意,這樣你就會知道你沒有意外地提交破壞的代碼。 – 2010-01-05 03:57:08
提交破損的代碼有什麼問題?只要它沒有發佈,也沒有其他人設法得到它。 – 2010-01-05 06:27:00
@Pat,我傾向於這樣做的習慣喜歡有工作提交和使用git svn,我必須存儲更改之前上傳與dcommit的更改。但是你是對的,在OP的情況下沒有任何理由去做隱藏的流行 – 2010-01-05 13:23:15
使用git add -p
後面跟着git commit
。 git add -p
詢問您是否需要爲每次更改進行承諾,這非常方便。
您也可以使用-p
與git reset
和git checkout
。
我真的認爲git add -p需要更多曝光!它創建了更好的工作流程,因爲您不必關心文件名,只需滾動即可進行更改。 – dpavlin 2011-03-31 17:42:01
git add -p
通過DAF的回答說明是好的,但更直接的方式來挑選和選擇,我真的很喜歡:
git add -e
它產生相應的補丁程序,然後加載它在你的首選編輯器,以便您可以根據需要進行編輯。保存文件並退出編輯器時,只有修改後的修補版本所做的更改纔會添加到索引中。
如果不小心關閉了編輯器而未進行更改,則可能需要使用get reset HEAD
,然後重新開始。
我現在比'-p'更喜歡'-e'。 – Richard 2013-03-07 21:04:48
關於在文件中暫存部分更改的主題,值得注意的是,各種文本編輯器都支持以比任何命令行選項更好的方式執行此操作。
對於Emacs,我使用Magit,Emacs使用單擊鍵向前或向後通過hunk,增加或減少粒度,以及暫存或取消暫存當前塊。您也可以手動標記區域並分階段(或不分階段)該區域。
我相信也有類似的vim插件,以及其他編輯器/ IDE。
這是常規的git提交,但對於部分文件提交-p或-e是需要的 – radistao 2012-02-13 19:15:13
該死的,我應該在使用這個命令之前閱讀這個評論。這是對這個問題的錯誤答案! – default 2013-05-16 07:19:03
@donschoe問題問如何提交單個文件(不是文件的一部分)。答案是正確的,即使你的問題標題不同(可能應該是「如何提交單個文件)。 – 2013-05-16 18:32:00