2014-11-05 39 views
1

我意識到我可以使用git update-ref to fast-forward existing branch that I am not on。然後我發現類似的事情可以通過git branch -f完成。我知道git update-ref更靈活(它可以移動任何參考),however it could be dangerous。那麼使用git branch -f更好嗎?這兩個命令在這些特定場景中是否有區別? (除的,我可以指定自定義參考日誌信息。)使用git branch -f或git update-ref來快速提供現有分支會更好嗎?

+0

僅供參考:即使使用'update-ref',也不存在實際丟失提交的危險,正如您鏈接到的答案中所述。提交將仍然存在,您可以輕鬆恢復它們。 – 2014-11-05 12:38:40

回答

2

隨着git branch -f,它會拒絕更新分支,如果它是一個簽出(所以如果是「當前分支」)

git update-ref沒有這個限制。


Qqwy增加了另一個區別in the comments

  • git branch -f <branchname> [<start-point>]會創建一個名爲<branchname>如果不存在,新的分支。
  • git update-ref <branchname> <newvalue>在這種情況下什麼都不會做。
+0

似乎'update-ref'不提供'branch -f'的相同的自動完成功能。是否有可能改變git的行爲來爲'update-ref'創建相同的體驗? – 2014-11-07 08:57:22

+0

@Zeeker會是一個很好的單獨問題:我沒有在這些命令的自動完成部分中看太多。 – VonC 2014-11-07 09:27:41

+0

我問過[另一個問題](http://stackoverflow.com/questions/26798130/expand-gits-autocomplete-feature-to-plumbing-commands)。 – 2014-11-07 09:33:25