在 git 重新定基

Rebasing in git

我有一个关于 git rebase 的问题。

我有我的主要分支 - 称之为 dev。 我已经从 dev 创建了一个分支——称之为 myTest。 我从 myTest 创建了另一个分支 - 称之为 myTest/myTestPart1

----------+------------------- dev
            \
              --------+-------- myTest
                        \
                          ------- myTest/myTestPart1

当有人向dev推送东西时,我会

git checkout dev
git pull

然后我做

git checkout myTest
git rebase dev
git push -f

然后我做

git checkout myTest/myTestPart1
git rebase myTest
git push -f

今天另一个开发人员和我一起工作,他说我需要做

git fetch origin
git rebase origin/dev

我做的和他对我说的有什么区别?

谢谢

如果你想确保你正在使用更新的分支,那么 fetch 命令是强制性的。如果没有这个,...你将重新定位到本地开发历史,这可能与你的有所不同。

来自 atlassian 文档:

In review, git fetch is a primary command used to download contents from a remote repository. git fetch is used in conjunction with git remote , git branch , git checkout , and git reset to update a local repository to the state of a remote.

如果你变基到本地(而不是更新)开发者,你可能会丢失一些信息和一些同事的更新。

一个区别是他使用的句子以大写字母开头并以句号结尾,而你不用。 :)

他的意思是,您正在浪费大量的精力和时间以及 Internet 带宽。您不需要签出 dev 并拉取它以在其上进行变基。由于您不需要结帐 dev,因此您不需要切换到 myTest — 因为您已经在上面了。

myTest 变基到最新版本 dev 的方法是继续 mytest 并说

git fetch origin
git rebase origin/dev

你必须承认这比你正在做的要短得多。