Git工作流程为大型协作项目提供小的变更?

时间:2012-04-01 20:34:10

标签: git

我已经开始尝试通过在我的空闲时间提供小错误修正来贡献一大片(一千万左右的C ++系列),着名的开源项目。该项目由Git管理,我完全不熟悉。我试图找到有关如何最好地使用它的信息,但我似乎发现的是关于琐事的复杂宗教争论,比如是否使用git fetchgit pull。任何人都可以非常简单地告诉我,为了促进以下工作流程,我需要执行哪些命令?

  1. 查看完整的来源。
  2. 开始处理某些功能或错误修复
  3. 继续每天检查完整的来源,并将目前为止的更改合并到其中。
  4. 生成包含树和远程主存储库之间所有差异的补丁
  5. (必要时)回滚自上次提交以来的任何更改
  6. (必要时)回滚我的树和远程主存储库之间的任何差异

2 个答案:

答案 0 :(得分:4)

  1. 查看完整的来源。

    git clone git://url

  2. 开始处理某些功能或错误修复

    如果您同时处理多件事,建议您这样做 为每个功能分别创建分支。这些通常都是 被称为主题分支。

    git checkout -b <branch name> <desired base commit>

  3. 继续每天检查完整的源代码并合并我的更改 远在它。

    如果您使用主题分支,则可以使用简单的git pull。相反,如果 你正在做大师(你跳过第(2)步),然后我会 建议使用git pull --rebase。这样你的工作将以此为基础 关于源头大师的最新提示。

  4. 生成一个补丁,其中包含了我的树和树之间的所有差异 远程主存储库

    一旦你确信你已经编写了一个无错误的功能(好的 幸运!)您可以合并更改(如果您使用主题分支) 通过git merge master,解决所有冲突并提交。然后你可以 使用

    生成补丁

    git format-patch <base commit for your feature>

  5. (必要时)回滚自上次提交以来的任何更改

    要回滚,您可以使用git reset <options>。有几个 选项,我建议你看看man git-reset 差异非常微妙。如果你想摆脱你的工作 完全(你真的确定吗?),--hard选项应该这样做 特技。另一方面,如果要还原已提交的更改 如果单独提交,git revert <commit>就是你的朋友。

  6. (必要时)回滚我的树和树之间的任何差异 远程主存储库

    不确定你的意思,但如果你的意思是更新本地回购 根据上游的最新变化,我相信(3)解决了这个问题。

答案 1 :(得分:1)

1$ git clone <repository> <directory>
2$ <edit as you please>     # suggest 'git checkout -b <new branch>' prior to edit
3$ git pull origin master
4$ git push origin master    # you probably won't have permission for this, ask repo admins
5$ git reset --hard
6$ git checkout -b <new branch> origin/master   # not a rollback, just leave your stuff and shift to a new branch.