【发布时间】:2022-01-15 19:09:44
【问题描述】:
据我了解
git pull --rebase origin master
等价于
git fetch origin
git rebase origin/master
所以如果我们只是简单地使用git rebase origin/master 而不是git pull --rebase origin master,唯一的区别是来自远程主分支的任何新提交都不会到达我们的本地分支吗?或者是否有我需要注意的极端情况?
假设,如果我们要做的只是变基并且不再与当前本地分支一起工作,那么是否需要合并git fetch origin 步骤?
【问题讨论】:
-
“不适用于当前本地分支”?但是如果你变基,你会保留你的本地分支。如果你想放弃它,你根本不必重新设置它,只需切换到不同的分支。请澄清。
-
是的,您的请求无法计算。如果您不使用本地分支,为什么还要费心重新设置/更新它?还是您所说的“本地分支”实际上是指本地
master并且您想放弃对它的本地提交? -
origin/master是您的 Git 存储库如何记住 他们的 存储库的master。随着他们的存储库获得新的提交,它会过时,因此您必须不时使用git fetch origin刷新它:您的 Git 软件在您的存储库上运行,调用他们的 Git 软件,将其定向到他们的存储库。你的 Git 会得到一个他们 Git 的分支名称和提交哈希 ID 的列表。您的 Git 从他们的 Git 中获取他们拥有而您没有的任何新提交,然后您的 Git 会更新您对其分支的记忆。 -
您可以选择刷新的时间和频率。如果您愿意,您可以在本地删除名称
master(尽管您需要在本地使用其他一些分支名称,或者在本地处于分离的 HEAD 模式下才能执行此操作),这样您就不会想使用您的名称master更多。有些人喜欢,有些人不喜欢;这是品味/意见的问题。 -
@roulette01:
origin/master是一个名字。您的 Git 存储库有两个数据库:一个包含 Git objects(通过哈希 ID 找到),一个包含 names(分支名称、标签名称等)。每个名称仅包含一个哈希 ID。运行git for-each-ref(不是一个对用户非常友好的命令,但试试看),您将看到(几乎)每个名称,包括完整的拼写和相应的哈希 ID,以及对象的类型。origin/master只是refs/remotes/origin/master的简写:这个名字的完整拼写。