2013-05-08 53 views
11

我只想隱藏當前文件夾及其子文件夾中更改的更改。 我該如何做到這一點?如何在當前文件夾中存儲更改

我試過了明顯的做法 - git stash .但它似乎並沒有工作。

我知道我可以創建臨時提交併在之後刪除它們,但是我想知道git stash是否支持存儲特定的文件夾。

+0

你得到的錯誤是什麼? – Shobit 2013-05-08 06:45:34

+0

@Shobit我得到'git stash'命令的幫助部分 – stdcall 2013-05-08 06:46:44

+0

你不能。 'git stash'在工作樹中放置未提交的更改。 – 2013-05-08 08:23:56

回答

10

git stash不會讓你用單個命令保存部分目錄,但有一些選擇。您可以使用git stash -p來只選擇您要存儲的差異。

如果git stash -p的輸出很大,並且/或者您需要一個可編寫腳本的解決方案,並且創建臨時提交是可以接受的,則可以創建一個包含子目錄中的所有更改的提交,然後將這些更改隱藏起來,並倒回提交。在代碼:

git add -u :/ # equivalent to (cd reporoot && git add -u) without changing $PWD 
git reset HEAD . 
git commit -m "tmp" 
git stash  # this will stash only the files in the current dir 
git reset HEAD~ 
+0

試過了,沒辦法..必須有更好的辦法 – stdcall 2013-05-08 06:47:37

+0

@Mellowcandle有什麼問題?爲什麼不起作用? – 2013-05-08 06:49:27

+0

它打印項目樹中所有更改的差異,然後我必須手動選擇哪些文件駐留在我想要的特定文件夾中。我甚至不知道該文件夾中文件的名稱。這對我的問題不是一個可行的解決方案 – stdcall 2013-05-08 06:53:38

5

這應該爲你工作:

cd <repo_root> 
git add .   # add all changed files to index 
cd my_folder 
git reset .  # except for ones you want to stash 
git stash -k  # stash only files not in index 
git reset   # remove all changed files from index 

基本上,將所有修改過的文件進行索引,除了文件夾(或文件)要藏匿。然後你使用-k--keep-index)存儲它們。最後,您將索引重置回您開始的位置。

+3

這實際上會做一些不同的事情:'git stash -k '會使索引完好無損,因此索引中的更改不會被刪除,但是新的索引將有** **索引**和**索引的更改,所以它將是一個「滿「無論如何, – 2013-05-08 19:28:06

-1

您可以像SourceTree或TortoiseGit一樣檢出其中一個GUI git接口,像這樣的事情就是我個人認爲的烏龜,因爲它最終比嘗試執行許多命令行命令要快得多。

+4

你沒有看到我在終端上工作......我工作得很快 – stdcall 2013-05-08 19:58:21

相關問題