4

我目前使用 git 的方式如下:

  1. 克隆,获取 repo
  2. 为特定问题创建主题分支
  3. 做一些提交
  4. 结帐主分支
  5. 将主题分支合并到主分支
  6. 推送新的主分支

不幸的是,这有时会变得混乱。我想做的是将一些较小的提交合并到一个较大的提交中。

此外,有时将新分支中的所有提交合并到一个提交并将其合并到 master 也是一个好主意。

例子:

git branch update-docs
git checkout update-docs
git add -A .
git commit -m 'updated networking doc'
git add -A .
git commit -m 'updated manager doc'
git checkout master
git merge update-docs

如您所知,我将在主分支“更新的网络文档”和“更新的管理器文档”中有两个提交。

如果我现在只想在 master 分支中有一个名为“更新的文档”的提交,例如其中包含这两个提交的更改,我该怎么办?

我认为你必须使用 git rebase 来完成这类任务。我只是不知道如何使用它。

我已经尝试过:

git checkout master
git rebase update-docs

但这将更改合并到 master 而不留下任何提交,现在 repo 搞砸了。

那么有人会分享你必须使用的命令吗?

解决方案:

git checkout -b update-readme
git commit -am 'rewritten readme'
git commit -am 'added author name'
git rebase -i master

打开文本编辑器:

pick 6dbcbf1 rewritten readme
pick b815bbf added author name

现在您将其更改为:

pick 6dbcbf1 rewritten readme
squash b815bbf added author name

如果使用 vim,则使用 ":w" 和 ":q" 保存,它将打开另一个编辑器,您可以在其中定义新的提交名称

rewritten readme

然后你合并回购:

git checkout master
git merge update-readme
4

1 回答 1

4

之后git merge update-docs,执行git rebase -i origin/master。这将弹出一个交互式变基编辑器,它允许您压缩提交重新排列它们

于 2013-01-03T11:14:56.300 回答