2014-10-08 34 views
2

我有一個Git樹:經與git的過濾分支麻煩, 「曖昧的說法」

  • egit/
    • project1/
    • project2/

,我試圖將project1分隔到另一個存儲庫。所以我打開命令提示符並將cd放入egit文件夾中。然後,在this tutorial之後,我運行命令git filter-branch --prune-empty --subdirectory-filter \ project1\ master。我不斷收到錯誤:

fatal: ambiguous argument 'project1\': unknown revision or path not in the 
working tree. 
Use '--' to separate paths from revisions, like this: 
'git <command> [<revision>...] -- [<file>...]' 

我已驗證project1在使用git ls-tree --full-tree -r HEAD我的git倉庫,所以我不知道什麼是錯的。有任何想法嗎?

+0

是否有你使用反斜線原因是什麼? – Hasturkun 2014-10-08 11:25:15

+0

err命令提示符使用反斜槓?我總是感到困惑,所以如果前進的斜線是要走的路,我會改變我的方式。在這種情況下更改爲正斜槓仍然給出相同的錯誤tho:/ – woojoo666 2014-10-08 11:27:03

+0

因此,您的命令現在是'git filter-branch --prune-empty --subdirectory-filter project1/master',是否正確? (在github的例子中,反斜槓是逃避換行符,這是不需要的。)無論如何,你可以刪除最後的斜槓 – Hasturkun 2014-10-08 11:28:58

回答

0

使用以下命令。

git filter-branch --prune-empty --subdirectory-filter project1 master

0

這很奇怪,但這裏是我發現的運行git-bash的Windows上。如果遠程存儲庫簽出一個分支,那麼這種格式會給出錯誤:

git filter-branch --prune-empty --subdirectory-filter project1 master 

但是,如果你去到遠程倉庫,這在我的情況是另一個文件夾,git checkout master,然後過濾器分支運行沒有錯誤。

而且,如果遠程回購被檢查出的一個分支,這種格式將運行沒有錯誤,並使用相同的分支新的回購協議:

git filter-branch --prune-empty --subdirectory-filter project1