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

标签 git github version-control

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

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

最佳答案

您应该在主题分支(我们称之为topic)上完成所有工作,而不是在主分支(我们称之为master)上。如果您为分配的每个“任务”创建一个新分支,则该分支仅存在于您的本地存储库中。稍后您会将其推送到您的 fork 并发出 pull 请求,将 upstream/masteryour_fork/topic 进行比较。

如果upstream的所有者不 merge 您的更改,那么不会造成真正的伤害; upstream 没有分支,也没有提交这些更改。您只需在本地存储库上 checkout master 即可,然后在新的主题分支上重新开始。

当您的 pull 请求打开时,您可以继续将更改推送到分支上的分支,它将自动更新 pull 请求。这里的期望是您将解决阻止上游所有者 merge 您的更改的任何问题。


如果您对跟踪上游分支的本地分支进行了更改,您有几个选择:

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

关于git - 更改代码时需要遵循的正确 GitHub 流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32448250/

相关文章:

git - 如何结合使用 Git 和 Dropbox?

java - 如何使用 BFG Repo-Cleaner

eclipse - 提交项目不显示在 Eclipse 中提交对 Git 存储库的更改 pop 窗口

eclipse - 如何解决 Eclipse 中的错误 "No file system is defined for scheme: sourcecontrol"

git - 我可以将 git blame 配置为始终忽略某些提交吗?想要一劳永逸地修复 git blame

Github 将差异保存到文件并共享

git - git 中的 HEAD 是什么?

git - 为什么 git 先压缩对象,然后再接收它们?我觉得应该反过来

git - 为什么 git push origin master 不起作用?

git - 如何使用git-filter-repo将一个仓库作为子目录 merge 到另一个仓库