更改代码时我需要遵循的正确GitHub流程是什么?

时间:2015-09-08 02:12:07

标签: git github version-control

开发人员A(我自己)有一个本地仓库和一个远程仓库,远程仓库是开发者B仓库的一个分支,本地仓库是远程仓库的克隆。 当Developer B要求我对程序代码进行更改时,Developer A执行RStudio中的更改(在本例中),Developer A转到SourceTree,打开本地仓库,提交程序更改,推送更改到我的远程仓库和上游仓库。一切都在同步,我们很高兴。

但是,如果开发人员B拒绝开发人员A的更改,那么我的本地和远程存储库现在与上游不同步,Git将不允许我推送任何更改。对于无知,我所做的是删除本地和远程repos,再次fork远程,将其克隆到本地,重做更改,在源树中提交并再次推送。这是太多的工作,应该有更好的方法,对吗?

1 个答案:

答案 0 :(得分:2)

您应该在主题分支上进行所有工作(让我们称之为topic),而不是在主分支上(让我们称之为master)。如果为每个"任务创建一个新分支"您被分配后,此分支仅存在于您的本地仓库中。稍后您将把它推送到您的前叉并发出一个Pull Request,将upstream/masteryour_fork/topic进行比较。

如果upstream的所有者未合并您的更改,则不会造成任何真正的伤害; upstream没有分支,也没有提交这些更改。您只需在本地仓库上签出master,然后重新开始新的主题分支。

当您的Pull请求处于打开状态时,您可以继续将更改推送到fork上的分支,它将自动更新Pull Request。这里的期望是,您将解决阻止upstream所有者合并您的更改的任何问题。

如果您对跟踪上游分支的本地分支进行了更改,则可以选择以下几种方法:

  • 如果您想保留更改,请执行git branch在当前HEAD上创建新的分支指针,然后只需git reset --hard upstream/branch_name
  • 如果您不想保留更改,请git reset --hard upstream/branch_name