2010-09-24 55 views
2

我經常發現自己希望僅檢出某棵樹中的某些文件,但由於我在本地修改了它們而不想嘗試弄清合併的麻煩(我不想合併任何東西 - 我只想要某些文件的git版本)。git簽出某些文件儘管存在衝突

那麼我怎麼能強制結賬,例如,「db-backup *」這些文件分散在目錄結構中?

e.g

git-parent 
    - dir1 
    - db-backup1 
    - dir2 
    - db-backupA 

感謝,

回答

8

有幾個可能的解決方案,這取決於你想要做

  • 如果你想放棄更改什麼,你可以使用

    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

0

git checkout <filename>即使對文件進行了修改,也能正常工作。你究竟發生了什麼錯誤,你試圖運行什麼命令?這或許應該工作:

find . -name 'db-backup*' | xargs git checkout --