github如何清除多余commit

worktile 其他 48

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要清除Github上的多余commit,可以执行以下步骤:

    第一步:备份你的代码
    在进行任何删除操作之前,务必备份你的代码。这样即使出现意外情况,你也可以恢复到之前的状态。

    第二步:使用git rebase来清除commit
    1. 首先,打开你的命令行工具,并切换到你的本地代码仓库所在的目录。
    2. 运行以下命令来确保你的本地代码与Github上的代码同步:
    “`
    git fetch origin
    “`
    3. 运行以下命令来检查你的本地git历史:
    “`
    git log
    “`
    4. 确定你要删除的commit之前的commit的哈希值,它们将用于执行rebase操作。
    5. 运行以下命令来执行rebase操作,将要删除的commit之前的commit合并到一起:
    “`
    git rebase -i
    “`
    6. 在打开的编辑器中,你会看到一个包含了所有将要被合并的commit的列表。删除你要删除的commit所在的行,并保存文件退出。
    7. git会自动重新应用修改,你的commit历史就被修改了。

    第三步:将本地历史推送到Github
    1. 运行以下命令来将本地分支的历史推送到Github上:
    “`
    git push origin <分支名> –force
    “`
    注意,使用`–force`选项强制推送是必要的,因为你已经修改了本地git历史。

    第四步:清理Github上的commit
    现在你已经清除了本地代码中的多余commit,但Github上的commit历史仍然包含了这些commit。为了清理Github上的commit,你需要进行一次强制推送。

    1. 打开你的Github仓库页面,并切换到`Code`标签。
    2. 点击右上角的`Settings`按钮,进入仓库的设置页面。
    3. 在设置页面的左侧导航中,点击`Branches`选项。
    4. 在`Branch Protection Rules`部分,点击你要清理的分支的`Edit`按钮。
    5. 在分支保护规则的设置界面中,将`Require branches to be up to date before merging`选项禁用。
    6. 确认你的改动,并保存设置。

    现在,你的Github仓库上的多余commit已经被成功清除了。请记住,这会修改你的仓库的历史,所以在进行上述操作之前,务必备份你的代码,并确保你明白自己在做什么。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    1. 使用Git Rebase命令:
    – 打开命令行窗口,导航到存储库的本地副本所在的目录。
    – 运行以下命令来检查您要清除的提交的哈希值:`git log`
    – 确定要清除的提交的哈希值。
    – 运行以下命令来清除提交:`git rebase -i `
    – 一个文本编辑器将打开,显示将提交应用于当前分支的提交列表。
    – 在编辑器中,删除要清除的提交的行。
    – 保存编辑器中的更改并关闭编辑器。
    – 运行以下命令来终止rebase操作:`git rebase –abort`
    – 运行以下命令来强制推送更改到远程存储库:`git push -f origin `

    2. 使用Git Reset命令:
    – 打开命令行窗口,导航到存储库的本地副本所在的目录。
    – 运行以下命令来检查您要清除的提交的哈希值:`git log`
    – 确定要清除的提交的哈希值。
    – 运行以下命令来清除提交:`git reset –hard `
    – 运行以下命令来强制推送更改到远程存储库:`git push -f origin `

    3. 使用交互式rebase来清除多个提交:
    – 打开命令行窗口,导航到存储库的本地副本所在的目录。
    – 运行以下命令来检查提交日志:`git log`
    – 确定要清除的提交的哈希值。
    – 运行以下命令来开始交互式rebase:`git rebase -i `
    – 一个文本编辑器将打开,显示将提交应用于当前分支的提交列表。
    – 在编辑器中,删除要清除的提交的行。
    – 保存编辑器中的更改并关闭编辑器。
    – 运行以下命令来强制推送更改到远程存储库:`git push -f origin `

    4. 使用git filter-branch命令:
    – 打开命令行窗口,导航到存储库的本地副本所在的目录。
    – 运行以下命令来创建要清除提交的新分支:`git branch new_branch`
    – 切换到新创建的分支:`git checkout new_branch`
    – 运行以下命令来清除多余提交:`git filter-branch –tree-filter “rm -rf path/to/file” HEAD`
    – 运行以下命令来强制推送更改到远程存储库:`git push -f origin new_branch`
    – 可以删除原来的分支:`git branch -D `

    5. 注意事项:
    – 所有这些方法都会修改历史记录,因此在使用之前请确保您清楚了解其影响。
    – 一旦提交被清除,它们将无法恢复,因此请确保您清楚要清除的提交的哈希值。
    – 在修改远程存储库的提交时,需要使用强制推送(`git push -f`)来强制将更改推送到远程存储库,这可能会覆盖其他人的提交。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    清除多余的commit是指删除已提交的代码修改历史记录。这可能会发生在需要重写历史、修复敏感信息泄漏或清理不必要的提交时。下面是在Github上清除多余commit的方法和操作流程。

    ## 1. 使用git rebase来清除commit

    使用git rebase命令可以重写提交历史,可以将不必要的commit从提交历史中删除。下面是在Github上清除多余commit的步骤:

    1. 在本地克隆github仓库:首先将github仓库克隆到本地电脑上。可以使用以下命令将仓库克隆到本地:

    “`
    git clone <仓库URL>
    “`

    2. 创建一个新的branch:在克隆的仓库目录下,使用以下命令创建一个新的分支,并切换到该分支:

    “`
    git checkout -b newBranch
    “`

    3. 使用git rebase来清除多余commit:使用以下命令来开启交互式的rebase,然后删除需要清除的commit。在交互式rebase的过程中,将会显示commit历史,以及可以对每个commit进行操作的选项。

    “`
    git rebase -i HEAD~
    “`

    其中,`n`是需要保留的commit数量。在交互式rebase的编辑界面中,可以通过删除或合并commit来清除多余的commit。保存并退出编辑器后,重写提交历史。

    4. 强制推送commit历史:完成rebase后,本地的commit历史已经被改变。现在需要强制推送这些更改到Github仓库。使用以下命令:

    “`
    git push origin newBranch –force
    “`

    这将强制推送commit历史更改。

    5. 创建一个pull request:在Github仓库页面上,切换到newBranch分支,并创建一个pull request。在pull request页面上,您可以查看commit历史更改,并将更改合并到主分支。

    ## 2. 使用git revert来撤销多余commit

    另一种清除多余commit的方法是使用git revert命令来撤销不必要的commit。这个方法将会保留已提交的更改历史记录,但通过回滚commit的更改,实现清除多余的commit。下面是在Github上清除多余commit的步骤:

    1. 在本地克隆github仓库:同上,将Github仓库克隆到本地。

    2. 创建一个新的branch:同上,在克隆的仓库目录下,使用以下命令创建一个新的分支,并切换到该分支:

    “`
    git checkout -b newBranch
    “`

    3. 使用git revert撤销commit:使用以下命令选择要撤销的commit,并创建一个新的commit。

    “`
    git revert
    “`

    通过重复这个步骤,撤销所有需要清除的commit。每个revert操作都会创建一个新的commit,以撤销之前的commit。

    4. 强制推送commit历史:完成revert后,将更改的commit历史推送到Github仓库。

    “`
    git push origin newBranch –force
    “`

    5. 创建一个pull request:同上,切换到newBranch分支,并创建一个pull request,将更改合并到主分支。

    请注意,在撤销commit时,需要小心不要意外删除了需要保留的修改或引入新的问题。提前备份和检查代码修改是很重要的。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部