gpt4 book ai didi

git - 干净的工作树下 `git branch -f ` 和 `git checkout ; git reset --hard ` 之间的区别?

转载 作者:IT王子 更新时间:2023-10-29 01:27:39 26 4
gpt4 key购买 nike

到目前为止,我一直使用 git checkout <branch_name>; git reset --hard <hash>将分支移回较早的提交。

然后我遇到了this question , 但答案和评论并没有详细解释它们之间的区别。

假设我有一个干净的工作树,它们之间有什么内部差异

git branch -f <branch_name> <hash>

git checkout <branch_name>
git reset --hard <hash>

这些差异(如果有的话)对高级用法有什么微妙的影响吗?

最佳答案

主要区别在于 git branch -f <branchname> <commitref>移动 <branchname>指向指定的提交而不触及 HEAD索引工作副本,而git checkout <branchname> && git reset --hard <commitref>修改所有三个。

如果你想在不移动的情况下快速重新排列分支 HEAD或修改您当前的工作树,然后 git branch -f是一个很好的方法。如果您有未提交的更改,它也可以工作,如果您使用 git checkout,这并不总是可能的.

另一个区别与性能有关,但它只与非常的大型项目有关。
在这些情况下,使用 git checkout 修改您的工作树和 git reset --hard可能是具有大量磁盘 I/O 的昂贵操作。另一方面,使用 git branch -f只有一个 单个文件 将被写入磁盘,即包含 <commithash> 的文件。由 <branchname> 引用.

关于git - 干净的工作树下 `git branch -f <branch_name> <hash>` 和 `git checkout <branch_name>; git reset --hard <hash>` 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28149804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com