我經常發現自己希望僅檢出某棵樹中的某些文件,但由於我在本地修改了它們而不想嘗試弄清合併的麻煩(我不想合併任何東西 - 我只想要某些文件的git版本)。git簽出某些文件儘管存在衝突
那麼我怎麼能強制結賬,例如,「db-backup *」這些文件分散在目錄結構中?
e.g
git-parent
- dir1
- db-backup1
- dir2
- db-backupA
感謝,
河
我經常發現自己希望僅檢出某棵樹中的某些文件,但由於我在本地修改了它們而不想嘗試弄清合併的麻煩(我不想合併任何東西 - 我只想要某些文件的git版本)。git簽出某些文件儘管存在衝突
那麼我怎麼能強制結賬,例如,「db-backup *」這些文件分散在目錄結構中?
e.g
git-parent
- dir1
- db-backup1
- dir2
- db-backupA
感謝,
河
有幾個可能的解決方案,這取決於你想要做
如果你想放棄更改什麼,你可以使用
git checkout -f <paths>...
如果您想保存更改以備後用,但暫時不擔心它們,您可以存儲您的更改ES然後做一個結賬:
git stash
git checkout <paths>...
恢復所做的更改,使用git stash pop
(或git stash apply
)。
如果要將文件的根本視圖的Git版本(也許它保存在臨時文件中,或者在其他的名字),你可以使用git show
爲:
git show <file>
如果您要結賬一些目錄或文件的子集在其他一些地方,您可以使用git archive
在「示例」混帳檔案主頁的部分描述:
git archive --format=tar --prefix=subdir/ HEAD:subdir |
(cd /var/tmp/ && tar xf -)
請注意,它會使用來自HEAD(上次提交)的版本,而不是來自索引,儘管通常不會有任何區別。
另一種實現方法是使用--temp
選項git checkout-index
,雖然這可以被認爲是hackery。
HTH
git checkout <filename>
即使對文件進行了修改,也能正常工作。你究竟發生了什麼錯誤,你試圖運行什麼命令?這或許應該工作:
find . -name 'db-backup*' | xargs git checkout --