这个命令的作用是什么:git branch -f

24

我正在试图弄清楚如何正确使用这个命令。我相信这是我想要的命令和标志,可以将一个分支本质上转化为另一个分支(基本上删除一个分支并创建一个同名的新分支,并带有另一个分支的文件),但我不确定,也不知道语法是否正确。

如果我这样做:

git branch -f master sub-branch

它会从主分支中删除所有文件,并用子分支的文件填充吗?


5
当你移动一个分支时,并没有移动文件 - 所有的分支只是指向特定提交的指针。这个命令将master指针移动到sub-branch指针处。Titas给出了正确的答案,但你可能想要阅读分支是什么,特别是从图3.4开始。 - Nick
@Nick 哦,非常感谢你的解释和资源。显然,我对git还非常新手,所以这对我来说是一个巨大的帮助。 - RileyE
1
没问题。Git 可能会让人困惑,但如果你能想象出提交的“树”以及分支和指向它们的东西,那就有所帮助了。整本在线书都相当易读,因此把它加入书签吧。 - Nick
1个回答

25

-f参数表示--force

  • 如果已存在名为master的分支,除非使用-f,否则git将不允许您覆盖它。
  • 第二个参数(sub-branch)将用于确定master分支的HEAD应该指向哪里。

“git branch -f master <commitId>” 的效果与 “git reset --soft HEAD~<counter until commitId>” 相同吗? - justcode
旧分支会发生什么?它是被嫁接在顶部,还是被删除,或者是重复命名? - noelicus
@noelicus 这将编辑分支以指向一个新的提交,保留分支的推送/拉取目标。旧的提交仍然可以通过 reflog 访问。 - nyanpasu64
在我的情况下,有一种情景是给出命令 "git branch -f branchname"。那么在这种情况下会发生什么呢? - Kavita Kulkarni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接