2012-10-02 86 views
0

假設我創建使用下面的命令空GIT回購復位:GIT如何在不提交

# git init 

然後我開始添加遠程倉庫:

# git remote add remote1 ........ 
# git remote add remote2 ........ 
# git remote add remote3 ........ 

和取:

# git fetch --all 

最後,我併入本地回購所有我需要的遠程分支:

# git merge remote1/branchX 
# git merge remote2/branchY 
# git merge remote3/branchZ 

現在,假設我必須在所有合併之前重置本地回購;自然的解決方案似乎是創建一個新的空存儲庫。但問題是:取回我的遠程存儲庫需要很長時間(小時),所以我想避免再次反覆。

我不能做一個「混帳重置」,因爲我沒有提交前所有合併。

回答

3

一個體面的方式來欺騙這是做一個git init && git commit --allow-empty -m 'Initial commit.'當您建立存儲庫,這至少減輕了不存在HEAD症狀。

但既然你已經獲取所有已經是遙控器,你不需要吹走庫,以創建一個新的空/支無關,如果這就是你越要查找的內容:

git symbolic-ref HEAD refs/heads/new-branch 

然後當你提交/合併HEAD的任何東西時,git會爲你填寫新的分支。一旦你有另一個現有的分支,你可以硬重置主人或做任何你想要繞過他們的其他技巧。

+0

+1,因爲它可以解決未來的問題,但...現在如何解決它的任何想法,現在已經太遲了? – Cristiano

+0

更新;看看這對你有用。 –

0

我覺得這個線程:Checkout old commit and make it a new commit給出了一些可能性。在合併之前簽出其中一個之前的提交或重置到該點。如果發生多重提交,我會首先在合併之前查找SHA值並使用該值。

+0

問題是,我沒有prevoius提交重置的位置。 – Cristiano

+0

如果您創建一個新的空回購,並將當前的回收作爲遠程添加並獲取本地存在的內容? (從來沒有做過,只是一個想法) – wemu

+0

我會試一試,但馬特的解決方案非常符合我的情況。 – Cristiano