【问题标题】:How to add git commits and tags for the history of a project如何为项目的历史添加 git 提交和标签
【发布时间】:2015-07-03 12:42:26
【问题描述】:

我忘记添加应该为我的项目完成的提交和标签。虽然只有很小的更改(我记得并且现在可以进行),但我想提交并创建一个 git 标签。是否可以拉下提交并向其添加 git 标签并推送它?

它太乱了,我想在继续之前先修复它。请指教。

提前致谢。

【问题讨论】:

  • 标签很简单;标签不是提交的一部分,它们只是引用提交,因此您可以随时添加指向任何内容的标签。目前尚不清楚添加提交是什么意思。您想修改现有的提交,还是只提交更多代码?您需要详细说明您的具体情况。
  • 是的,我需要编辑一些文件并提交,然后标记它。现在已经有大约 10 个代码提交了。所以如果提交被标识为 - 1、2、3(我想提交一些代码)、4、5、6、7(想提交代码)和标记)、8、9、10*(想要提交代码和标记).. 并且代码提交都不会改变/破坏现有的代码库(我 100% 确定)。

标签: git tags push commit history


【解决方案1】:

您可以使用交互式变基来做到这一点,但请注意重写您已经共享的历史记录的风险。

首先,使用git rebase -i <commit2> 启动rebase。这将打开一个如下所示的编辑器窗口:

pick 8e1729c <msg3>
pick 5f4f4b1 <msg4>
pick d0936bb <msg5>
pick 652eb5c <msg6>
pick ceebbb7 <msg7>
pick d42a432 <msg8>
pick e203251 <msg9>
pick 7701829 <msg10>

您将像这样编辑此文件中的第一列:

edit 8e1729c <msg3>
pick 5f4f4b1 <msg4>
pick d0936bb <msg5>
pick 652eb5c <msg6>
pick ceebbb7 <msg7>
pick d42a432 <msg8>
pick e203251 <msg9>
pick 7701829 <msg10>

保存文件并退出。 Git 将通过重新应用显示的提交来启动 rebase,但在第一个提交之后停止,以便您可以进行更改或在继续之前简单地添加一个提交。如果您想修改原始的第 3 次提交,只需立即进行更改并继续

git commit --amend
git rebase --continue

如果您想修改原始的第三次提交,请使用“撤消”它

git reset HEAD^

然后在继续之前进行任何您想要的更改

# stage all your changes
git commit
git rebase --continue

rebase 完成后,您可以通过编辑和修改提交 10 来对最后一次提交进行最终更改

# stage changes
git commit --amend

一旦你的提交是有序的,使用git log为你想要标记的两个提交找到新的SHA(rebase和--amend会改变它们!),然后简单地运行

git tag <commit3hash> <tagname>
git tag <commit10hash> <tagname>

并将所有内容推送到您的遥控器

git push -f   # You need to force it, since you've rewritten history
git push --tags

【讨论】:

  • 太好了..感谢您的详细回答。我会仔细尝试并告诉你。
【解决方案2】:

作为重写历史记录的替代方法,您可以在应该完成提交的位置创建一些临时分支,然后将它们合并回 master。

我认为,如果内容已发布,对存储库的其他用户(例如拉取时)的破坏性会小一些,同时仍将提交附加到其预期的父级。

执行第一次提交:

$ git checkout -b first-commit 3
$ [do stuff]
$ git add [stuff]
$ git commit

然后进行第二次提交:

$ git checkout -b second-commit 7
$ [do stuff]
$ git add [stuff]
$ git commit

还有第一个标签:

$ git tag first-tag

然后合并分支:

$ git checkout master
$ git merge first-commit
$ git merge second-commit

并标记它:

$ git tag second-tag

摆脱树枝:

$ git branch -d first-commit
$ git branch -d second-commit

终于推了:

$ git push
$ git push --tags

历史将如下所示:

                                                    second-tag
                                                         |
1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 -- 9 -- 10 -- 11 -- 12
           \                   \                  /      /
            3' -----------------\----------------+      /
                                 7'--------------------+
                                 |
                             first-tag

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 2023-02-09
    • 2014-11-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多