5

新手开源贡献者在这里。

我在 GitLab 上分叉了TortoiseGit 存储库,然后将其克隆到我的计算机上,编辑了一个文件,然后提交到分支master

几天过去了,我想用上游的最新更改更新我的本地工作副本,然后推送到我的远程分支并打开合并请求(当然还有更多的开发/测试等)

我在我的仓库中添加了一个远程调用upstream,现在我不确定推荐的操作是什么:

  1. git pullupstream/master到我签出的分支master
  2. git pull --rebase//
  3. git fetch其次是git rebase

这些是我在研究过程中发现的方法。不幸的是,在 GitHub、GitLab 甚至像 Linux 内核这样的项目中工作时,我找不到对每个项目的全面审查,也没有关于哪一个是典型实践的建议。

我尝试了方法 1 和 3。方法 1 ( pull) 生成合并提交(--ff-only不可能),而我的历史在某种程度上被污染了。它也会产生冲突。方法 3 ( rebase) 两者都不做,但我不确定rebase提交被推送到远程后的行为如何,所以我担心它可能会导致问题继续进行。

所以这是我的问题。
谢谢你。

4

2 回答 2

3

TortoiseGit 团队成员在这里。

我在我的仓库中添加了一个名为 upstream 的遥控器,现在我不确定推荐的操作是什么:
1. git pull 从 upstream/master 到我签出的分支 master
2. git pull --rebase //
3. git fetch 后跟 git rebase。

不同的团队使用不同的工作流程。
请参阅Pro Git (v2) - 5.1 分布式 Git - 分布式工作流

在 TortoiseGit 团队中,我们更喜欢保持简单的历史记录,并且贡献者通常负责在变基时解决冲突。

因此,大多数时候,我们使用“ git fetch 后跟 git rebase ”,尤其是在贡献时。然后,如您所说,在 GitHub/GitLab 上创建拉/合并请求(通过使用 git push),或更新拉/合并请求(通过使用 git push和 force )。

请参阅我如何贡献?HowToContribute.txt以获取其他详细信息。

于 2019-04-09T01:42:06.910 回答
1

我在 GitLab 上 fork TortoiseGit 存储库,然后将其克隆到我的计算机上,编辑一个文件,并提交给分支 master 几天过去了,我想用上游的最新更改更新我的本地工作副本

如果上游您指的是主仓库,您可以

  1. git fetch origin
  2. git rebase origin/master

假设origin指向主仓库

在这种情况下,变基会在您变基的分支之上重放当前分支(您的本地master分支)的提交,这是对.origin/mastermasterorigin

例如:

master提交之前的分支:

  • C
  • b
  • 一个

master提交后分支:

  • xxx <- 你的提交
  • C
  • b
  • 一个

几天后,TortoiseGit 的 git 提交origin/master现在看起来像这样。

  • 3
  • 2
  • 1
  • C
  • b
  • 一个

您可以通过在origin/master. 您的本地master分支现在将如下所示:

  • xxx <- 你的提交
  • 3
  • 2
  • 1
  • C
  • b
  • 一个

我在我的仓库中添加了一个名为 upstream 的遥控器,现在我不确定推荐的操作是什么

然后你可以简单git push upstream master地更新你的叉子。

于 2019-04-08T07:57:25.133 回答