git fork master 在本地和远程总是领先于 origin/master
git fork master always ahead of origin/master, on local and remote
我的本地存储库和我的分支总是领先于 origin/master。我目前只是在不创建单独的分支的情况下推送给我的主人。这是我的工作流程,这与我一直用于其他项目的工作流程相同,没有问题:
git pull origin master
修改代码
git commit -m "made change"
git push remote master
remote 是我的个人叉子。然后我从 github 向 origin/master 提交一个拉取请求,它总是会毫无问题地合并。
使用这个工作流,我的本地存储库总是领先于我对存储库所做的所有提交。即使在我的拉取请求被合并到 origin/master 之后,我在 github 上的分支和我的本地仓库都说它们比 origin/master 早了 x 个提交(即使提交显示在提交中起源大师的历史)。另一个烦人的副作用是,每次我从 origin master 拉取时,我都必须进行合并提交,因为我的本地仓库认为它在前面。
有人知道会发生什么吗?我一直使用这个工作流程,但我以前从未遇到过这些问题。
上游存储库的维护者可能正在使用 GitHub 上的 "rebase and merge" 按钮。这 复制 您对 中的新提交(据说有所改进,但实际上可能根本没有改进——可能只是 不同)提交他们的 存储库。复制的提交具有不同的哈希 ID,因此是不同的提交。
此操作的最终结果是他们将领先于您的分支 N 次提交并且您将领先于他们的由相同的 N 次提交分支。 (这里的 N 是您的拉取请求中的提交数。)毕竟这只是一个简单的计数问题:当您开始拉取请求时,您有:
...--o--o--* <-- their-branch
\
1--2--3 <-- your-branch
在您的存储库中,带编号的提交是您的新提交。然后他们 复制了 那些提交,这样一旦你获得它们,你就有:
...--o--o--*--A--B--C <-- their-branch
\
1--2--3 <-- your-branch
其中 A-B-C
是您的 1-2-3
的副本。由于 *
是 两个 分支上的最后一次提交,它们现在领先 3,而你也领先 3.
你可以通过从他们那里获取任何提交到一个真实的、实际的 local Git 存储库(而不是某个遥远的 GitHub 一个你必须猜测的地方)并检查提交哈希 ID 和提交。如果您的提交已被复制到新的提交,哈希 ID 将不匹配,即使关于提交的其他所有内容 确实 匹配。
如果是这种情况,他们希望您像他们一样放弃您的 提交以支持他们新的和(据说)改进的提交。您可以选择是否执行此操作。如果你选择不做,你会让你以后的工作更加困难。如果你选择这样做,你会让你当前的工作对你自己来说更加困难(尽管这可能是一个非常低/小的难度)。那是你的选择,因为他们使用了 "rebase and merge".
我的本地存储库和我的分支总是领先于 origin/master。我目前只是在不创建单独的分支的情况下推送给我的主人。这是我的工作流程,这与我一直用于其他项目的工作流程相同,没有问题:
git pull origin master
修改代码
git commit -m "made change"
git push remote master
remote 是我的个人叉子。然后我从 github 向 origin/master 提交一个拉取请求,它总是会毫无问题地合并。
使用这个工作流,我的本地存储库总是领先于我对存储库所做的所有提交。即使在我的拉取请求被合并到 origin/master 之后,我在 github 上的分支和我的本地仓库都说它们比 origin/master 早了 x 个提交(即使提交显示在提交中起源大师的历史)。另一个烦人的副作用是,每次我从 origin master 拉取时,我都必须进行合并提交,因为我的本地仓库认为它在前面。
有人知道会发生什么吗?我一直使用这个工作流程,但我以前从未遇到过这些问题。
上游存储库的维护者可能正在使用 GitHub 上的 "rebase and merge" 按钮。这 复制 您对 中的新提交(据说有所改进,但实际上可能根本没有改进——可能只是 不同)提交他们的 存储库。复制的提交具有不同的哈希 ID,因此是不同的提交。
此操作的最终结果是他们将领先于您的分支 N 次提交并且您将领先于他们的由相同的 N 次提交分支。 (这里的 N 是您的拉取请求中的提交数。)毕竟这只是一个简单的计数问题:当您开始拉取请求时,您有:
...--o--o--* <-- their-branch
\
1--2--3 <-- your-branch
在您的存储库中,带编号的提交是您的新提交。然后他们 复制了 那些提交,这样一旦你获得它们,你就有:
...--o--o--*--A--B--C <-- their-branch
\
1--2--3 <-- your-branch
其中 A-B-C
是您的 1-2-3
的副本。由于 *
是 两个 分支上的最后一次提交,它们现在领先 3,而你也领先 3.
你可以通过从他们那里获取任何提交到一个真实的、实际的 local Git 存储库(而不是某个遥远的 GitHub 一个你必须猜测的地方)并检查提交哈希 ID 和提交。如果您的提交已被复制到新的提交,哈希 ID 将不匹配,即使关于提交的其他所有内容 确实 匹配。
如果是这种情况,他们希望您像他们一样放弃您的 提交以支持他们新的和(据说)改进的提交。您可以选择是否执行此操作。如果你选择不做,你会让你以后的工作更加困难。如果你选择这样做,你会让你当前的工作对你自己来说更加困难(尽管这可能是一个非常低/小的难度)。那是你的选择,因为他们使用了 "rebase and merge".