2016-11-30 44 views
1

我正在版本管理我的$HOMEgit,但使用不同名稱的存儲庫目錄,這樣我的提示並不總是顯示git信息。存儲庫文件顯示在`git status`中

我已經安裝了,當我想上使用git別名我$HOME

alias gith='git --git-dir=/home/ravi/.githome --work-tree=/home/ravi' 

倉庫目錄.githome本身不應該顯示出來的gith status,但它是:

~$ git --git-dir=/home/ravi/.githome --work-tree=/home/ravi status -s 
M .dotfiles 
M .githome/COMMIT_EDITMSG 
M .githome/index 
M .githome/index.lock 
M .githome/logs/HEAD 
M .githome/logs/refs/heads/master 
M .githome/refs/heads/master 
M .local/share/fzf 
M bin 
M lib 
M prj/sample_app 

我試圖忽略如下目錄.githome

~$ grep .githome .gitignore 
/.githome/ 
~$ cat .githome/.gitignore 
* 

問題:

  1. 爲什麼沒有我的兩個工作排除的文件?
  2. 爲什麼我需要明確排除存儲庫目錄呢?
+1

這聽起來也許你初始化您的Git倉庫在錯誤的地方,或有文件夾內不應該一直在那裏。至於爲什麼'.gitignore'可能不起作用,如果您已經將這些文件夾/文件提交到您的存儲庫,那麼'.gitignore'將不起作用。 –

回答

2

確保您還沒有提交githome,因爲gitignore無法從存儲庫中刪除文件。

git rm -rf --cached . 
git add . 

運行此操作。它將通過清除所有內容並將其與您的gitignore文件相關聯,從而使您的存儲庫再次運行。

+0

謝謝,歡迎來到SO! –

+0

@TomHale謝謝! :D我一直在使用它很長時間,我決定是時候開始回答一些問題了。 –

+0

這是一個致力於推動人類知識發展的偉大社區。感謝玩你的部分:) –

1

原來,.githome已被添加到以前的提交中。

基於@添的評論和@ KingAlandyDy的答案,我做了以下內容:

gith rm -r --cached .githome/ 
+2

小心「回到過去」(檢查舊的提交)。一旦這些文件返回到索引中,因爲它們將檢查出一箇舊的提交,然後你要求「前進」(返回到通常的「主」),實際上,Git會說: 「哦,我看到我有這些文件在當前的時間提交中,而不是在新的提交中,所以我現在應該從工作樹中刪除它們。」如果您可以負擔重新散列存儲庫中的所有提交,請參閱http://stackoverflow.com/q/307828/1256452中的filter-branch和BFG答案 – torek

相關問題