如何从我的提交中删除一些文件

use*_*146 2 git github gerrit

我已经上传了一个Gerrit,现在我想从提交中删除一些文件,我该怎么做?

San*_*san 6

假设您已向 gerrit 提交了三个文件 a.java、b.java、c.java,并且您想从提交中删除 b.java。请按照以下步骤操作。

  1. 如果您在不同的分支中,请挑选特定的提交。
  2. 使用以下命令从提交中删除文件。(对要删除的文件执行此操作。)

    git reset HEAD^ path/to/file/b.java
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用以下命令修改提交。

    git  commit --amend
    
    Run Code Online (Sandbox Code Playgroud)

参考:https : //superuser.com/questions/229290/how-to-amend-the-last-commit-to-un-add-a-file/229296#229296?newreg=011d1b3234a8444295fbdd12b6d513b4


Kal*_*kki 5

因此,您需要生成一个新的补丁集,以替换旧的补丁集。假设您自尝试编辑提交以来未进行任何其他操作,请执行

git rm <files>
git commit --amend
Run Code Online (Sandbox Code Playgroud)

您已经安装了gerrit commit钩子,不是吗?如果有的话,您就很好走了,并准备好进行推销了。您没有它,您需要将gerid Web界面的Change-id行复制到提交消息的末尾,否则gerrit将无法用新的补丁集替换以前的补丁集。

提交文件后(与修补程序集1中的内容一样,具有相同的Change-id行),将修补程序推送至gerrit

git push origin HEAD:refs/for/master
Run Code Online (Sandbox Code Playgroud)

或您要推送到的任何存储库和分支。

将来,一旦您从gerrit克隆存储库,就应该安装commit钩子。如果用例如克隆

git clone ssh://firstname.lastname@gerrit/project
Run Code Online (Sandbox Code Playgroud)

你可以用

cd project
scp firstname.lastname@gerrit:hooks/commit-msg .git/hooks
Run Code Online (Sandbox Code Playgroud)

替换适用于您的案例的路径和机器名称。