2016-10-03 57 views
0

我最近做了一個新的分支,致力於它,並切換回舊的分支。.DS_Store導致Git問題

我想看看新的分支,但我得到這個錯誤:

error: The following untracked working tree files would be overwritten by checkout: 
client/.DS_Store 

所以,我做了一些google搜索,並瞭解到,這些本來應該在我的.gitignore。所以我將它們添加到我的全局.gitignore中以防止將來出現此問題。但是,這並不解決我在現在的問題,這是當我使用這個命令來修正這個錯誤,因爲我已經看到了建議,這是行不通的,扔了以下錯誤:

git rm --cached client/.DS_Store 
fatal: pathspec 'client/.DS_Store' did not match any files 

我真的需要切換回我的其他分支!我現在該怎麼做?

編輯:我的新的全球性的.gitignore:

# Compiled source # 
################### 
*.com 
*.class 
*.dll 
*.exe 
*.o 
*.so 

# Packages # 
############ 
# it's better to unpack these files and commit the raw source 
# git has its own built in compression methods 
*.7z 
*.dmg 
*.gz 
*.iso 
*.jar 
*.rar 
*.tar 
*.zip 

# Logs and databases # 
###################### 
*.log 
*.sql 
*.sqlite 

# OS generated files # 
###################### 
.DS_Store 
.DS_Store? 
._* 
.Spotlight-V100 
.Trashes 
ehthumbs.db 
Thumbs.db 
+2

你可以試試git add。 && git stash,然後切換到另一個分支。另外,你可以複製並粘貼你的gitignore?任何時候我添加到我的gitignore的變化都反映出來。我不得不使用類似於上面的緩存刪除命令的東西,但我不必指定相關文件夾。 – adpro

+0

工作。我能夠切換到另一個分支。謝謝! – DJG

+0

沒問題 - 請參閱我的答案 – adpro

回答

1

您的文件夾gitignore似乎是不正確的。

試試這個

# OS generated files # 
###################### 
client/.DS_Store 
## This one might be better 
# **/.DS_Store 

我認爲,應該工作。

或者你可以嘗試

git add . && git stash 

這應該讓你的另一分支,但你可能會想修理你的.gitignore。

+0

因此,使用.DS_Store創建全局.gitignore不會使git忽略repos子文件夾中的.DS_Store文件? – DJG

+0

@DJG:它會,除了一旦跟蹤文件,就已經太晚了:忽略條目沒有效果。這包括一些其他白癡(比如過去的自己:-))在很久以前意外地把這個文件放進去的情況。 – torek

+0

所以,現在該文件在,這個回購卡住它,無論我對它的任何修改.gitignore? – DJG

0

一般來說,當你停留在阻止你更改分支的文件時,你可以暫時隱藏它們,然後再彈出它們,隱藏就像是一個可以用於緊急情況的有點狡猾的分支,只是別忘了不要彈出他們離開你可能會給你的git工作流帶來更多混亂。

隱藏只存儲添加的文件,所以這就是我所做的。

  1. git的狀態(檢查是否任何文件未經跟蹤)

  2. git的補充。 (僅當存在未跟蹤文件)

  3. git的藏匿處(隱藏文件客場藏匿分支

  4. 現在你有一個「乾淨」回購可以改變分支和你想要做什麼

你可能要到你的第二個分支,然後 混帳合併branchwithgitignore

一個你做ü可以做:

git stash pop

而且一切都應該在這裏自行完成。