场景一:删除不再存在的分支
要删除不再存在的分支,我按照 StackOverflow 问题的答案中的说明如何在本地和 Github 中删除 Git 分支?通过发出以下命令:
$ git push origin :0.9-doc-rewrite
$ git push origin :path-and-#24
场景 2:合并现有非主分支中的更改
为了更新 upstream/0.9 分支,我做了以下事情:
$ git checkout --track origin/0.9
$ git fetch upstream
$ git merge upstream/0.9
$ git push
场景 3:跟踪新的非主分支
不确定这是最好的处理方式,但这是我所做的:
$ git branch flexible-task-declarations upstream/flexible-task-declarations
Branch flexible-task-declarations set up to track remote branch flexible-task-declarations from upstream.
$ git checkout flexible-task-declarations
$ git push origin flexible-task-declarations
要确认所有分支都在同一个提交:
$ git branch -av
这将显示所有分支——本地和远程——并显示最近的提交消息和 SHA1 哈希。
网络研究可能会揭示处理场景 3 的更好方法
与简单的 Git 克隆或 SVN 签出相比,Git 分叉之间的一个关键区别在于,除非您这样做,否则您的分叉将永远不会与主存储库保持同步。幸运的是,有一个简单的工具可以帮助您做到这一点。你的 fork 是独立的,并且在 Git 术语中等同于 master,所以如果你想跟踪 master 的更改,你可以在你的 fork repo 中创建一个跟踪分支,并在你想要提交某些东西时将这些更改合并到你的 fork 的 master 分支中。我强烈推荐“GitHub”gem,它是一个可以安装的工具,可以帮助您轻松跟踪与您相关的任何其他存储库中的更改。有关安装和使用,请参阅本页底部的 README 文本:http:
//github.com/defunkt/github-gem/tree/master
忽略 Github Fork Queue这是邪恶的!对于喜欢从贡献者那里挑选单个提交但不希望合并到整个分支中的维护者来说,fork 队列是一个工具。如果你玩弄 fork 队列,你会损坏你的 fork(虽然它可以被修复,请阅读出错了)。github 上的许多新手觉得他们应该对 fork 队列做点什么,因为那里有很多可能相互冲突的更改,而且他们不知道保持 fork 最新的假定方法是什么。阅读让你的叉子保持最新状态并找出答案!
Django 的 Github 工作流程
Django 项目有关于如何在 Github 上协作的说明,它使用似乎是处理分叉和拉入上游更改的标准方法。
不同的初始分叉配置
Long Nguyen 在 Michael Hartl 的博客上题为为 GitHub 上的开源项目设置 Git 存储库的客座文章描述了一种有趣的方法来设置您分叉的 Github 存储库。根据文章,此方法的目标是:
- 使存储库保持同步,以便每个存储库都包含完整的“官方”存储库
- 允许开发者获取官方更新
- 鼓励在 master 以外的分支上工作