2012-08-03 126 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