git删除某次提交(某个commit)的方法
例如我的提交历史如下 commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a Author: test Date: Fri Sep 22 20:55:38 2017 +0800 add d.txt commit 0fb295fe0e0276f0c81df61c4fd853b7a000bb5c Author: test Date: Fri Sep 22 20:32:45 2017 +0800 add c.txt commit 7753f40d892a8e0d14176a42f6e12ae0179a3210 Author: test Date: Fri Sep 22 20:31:39 2017 +0800 init 假如要删除备注为add c.txtcommit为0fb295fe0e0276f0c81df61c4fd853b7a000bb5c的这次提交 首先找到此次提交之前的一次提交的commit7753f40d892a8e0d14176a42f6e12ae0179a3210 执行如下命令 git rebase -i 7753f40 弹出如下界面 \`\`\` 将0fb295f这一行前面的pick改为drop,然后按照提示保存退出 至此已经删除了指定的commit,可以使用git log查看下 https://zm10.sm-tc.cn/?src=l4uLj4zF0NCIiIjRzMmRitGckJLQj5CMi9DNyMo%3D&uid=795f1af4fd3eaa5ef91c5882bddbe215&hid=f358bbb5ca80da6db643212ec30bad5d&pos=2&cid=9&time=1537315867584&from=click&restype=1&pagetype=0000004000000402&bu=ss\_doc&query=git+%E5%88%A0%E9%99%A4%E6%9C%80%E8%BF%91commit&mode=&v=1&uc\_param\_str=dnntnwvepffrgibijbprsvdsdichei 起因: 不小新把记录了公司服务器IP,账号,密码的文件提交到了git 方法: git reset --hard git push origin HEAD --force 其他: 根据–soft –mixed –hard,会对working tree和index和HEAD进行重置: git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息 git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可 git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容 HEAD 最近一个提交 HEAD^ 上一次 每次commit的SHA1值. 可以用git log 看到,也可以在页面上commit标签页里找到. commit合并: http://www.douban.com/note/318248317/ 总结: cmds = \["git checkout -- .", "git clean -fd", "git pull"\] retcode, stdout, stderr = self.cmd.subprocess\_popen( cmd.split(" "), cwd=git\_repo) cwd设置工作目录 git checkout -- .点表示当前目录,git checkout -- file则为具体文件 删除 一些 没有 git add 的 文件; git clean 参数 \-n 显示 将要 删除的 文件 和目录 \-f 删除 文件,-df 删除 文件 和 目录 git clean -n git clean -df git clean -f