2012-08-03 128 views
1

是否可以重置當前未檢出的分支?git重置分支

我想創建一個cron腳本,它將執行git svn fetch,然後用新的更改更新所有本地分支機構跟蹤svn遠程分支。

+0

遠程更改會自動更新。本地分行不是。但是,如果它們沒有被檢出,那麼更新它們有什麼意義? – knittl 2012-08-03 10:04:43

+0

@ knittl,gerrit使用這個存儲庫。主要上游存儲庫是svn,我需要不時將sit庫中的變化與svn同步。這就是爲什麼我需要重置當前未檢出的分支。 – 2012-08-03 10:48:42

+0

@ knittl,更新了問題以避免混淆。 – 2012-08-03 10:50:56

回答

2

當然,很容易。

git update-ref -m "message" refs/heads/whatever new-value old-value 

該消息是你想在reflog中出現的任何東西。你可以省略。

old-value是爲了避免競爭條件。它在更新之前檢查ref是否還有該值,所以如果在處理它時另一個腳本更新它,則操作將失敗。如果你沒有比賽條件的風險,你不必指定它。

你當然要必須知道你在做什麼。注意不要在那裏放棄任何重要的修改。

您也不得對檢出分支這樣做。通過執行git checkout [email protected]{}來避免檢查任何分支可能是最有用的。這將使特別編號HEAD直接存儲提交ID,您可以更新任何參考資料,並且無論您想要什麼,都可以返回並返回git checkout