2011-05-02 91 views
35

我在Mac 10.6.6上使用Git 1.7.4.1。在命令行中,如何僅在單個目錄中提交更改?我這樣做增加了目錄:僅在Git中的一個目錄中提交更改

git add my-dir 

但這樣做

git commit -a 

帶來了在我的回購所有更改的名單,我只希望提交和my-dir推變化。

回答

28

省略-a選項。然後git將僅提交您使用git add執行的文件。

您也可以嘗試提交目錄而不用與git commit my-dir分段。

+0

如果我做了第二件事你說(嘗試提交沒有分段),哪些更改將被提交? – 2016-12-19 20:47:58

+0

在這種情況下,@Stefan「提交將忽略在索引中執行的更改,而是記錄列出文件的當前內容(它必須已爲Git所知)」,說明文檔(https:// git-scm.com/docs/git-commit)。 – 2017-07-12 14:18:58

11

嗯,奇怪。以下應該工作。假設你什麼都沒有上演。

git add my-dir 
git commit -m "Commiting first revision of my-dir folder. Very exciting feature!" 
git push origin master 
+0

我真的不明白你的問題,但這可能是我自己的錯誤:)我重寫了我的答案。我希望它更令人滿意。 – ralphtheninja 2011-05-02 21:39:01

+0

嗯,這有點清楚。我仍然不明白你爲什麼要''''''''。事實上,一旦你限制'commit'的範圍,這也只會是正確的(因爲你不知道已經上演了什麼) – sehe 2011-05-02 21:56:01

+0

好吧,我關注你。我不是在打罵,只是爲了強調這個詞。換成應該。當然,我認爲沒有其他東西被添加到索引中。 – ralphtheninja 2011-05-02 22:03:59

3

只是使用階段,你指定git add的文件夾,這樣做沒有-a選項提交:git commit -m "Committing stuff"-a選項表示提交所有已修改的文件,即使它們未被暫存。

1

您將提交「暫存區域」中的任何更改;你可以用git status看到這些。

git commit -a-a標誌,根據該男子頁,告訴git的大致「約期已修改或刪除的所有文件,但沒有新的文件,你還沒有告訴混帳」 - 這是不是你想要的

的教訓是要知道什麼命令行選項都

爲了解決這個問題,你要做的第一件事就是,根據How to undo 'git add' before commit?,以unstage你不小心添加的文件與commit -a選項。根據這個答案,你必須執行命令git rm -r --cached .,現在你的改變應該仍然存在,但是沒有任何進展。

現在你可以像以前一樣做git add my-dir。然後,你可以做git commit(不-a

43

爲什麼沒有人提到你可以簡單地

git commit -m 'message' -- my-dir 

在我看來,在OP不用於/不喜歡用臨時區域直。這種方法也有很多更安全的建議沒有進一步的情況下,因爲機會是,如果它已經已經上演了一出defaault提交(那卻舉行的所有內容)將

  • 犯不止我-DIR
  • 會產生混淆的結果時,OP不是用來明確管理臨時區域(因爲工作樹能已經得到了同步與指數)
+1

我相信我*提過 - 至少是與問題相關的部分。 (提交消息是否包含在命令行中或稍後提示是與當前話題分開的問題,即如何提交特定目錄而不提交其他任何內容。) – 2011-05-02 22:00:02

+1

糟糕。我錯過了('-a'的講話讓我脫離軌道?)。我可能會潛意識地掃描**' - ** **標記。 (_oh和提交信息的東西只是習慣:)_) – sehe 2011-05-02 22:05:46

3

做這一切在一個命令:

git commit -- my-dir 
+0

同樣的[來自sehe的回答](/ a/5862894/938111)比兩天大,並提供了一些解釋。同樣的[來自user6120452的答案](http://stackoverflow.com/a/36247058/938111)提供了有用的細節。 – olibre 2017-01-06 19:04:38

3

基本

git add -- ./myfolder 
git commit -m'my comment' -- ./myfolder 

隨着越來越多的文件,並顯示目錄

git add -- ./myfolder1 ./myfolder2./some/random/file.txt 
git commit -m'cool' -- ./myfolder1 ./myfolder2 ./some/random/file.txt 

我一直在尋找的git裸回購

git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree add -- ./myfolder 
git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree commit -m'my comment' -- ./myfolder 

記得引用帶有空格的路徑或瘋狂的字符