例如我的提交历史如下
commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a
Author: test <test@36nu.com>
Date: Fri Sep 22 20:55:38 2017 +0800
add d.txt
commit 0fb295fe0e0276f0c81df61c4fd853b7a000bb5c
Author: test <test@36nu.com>
Date: Fri Sep 22 20:32:45 2017 +0800
add c.txt
commit 7753f40d892a8e0d14176a42f6e12ae0179a3210
Author: test <test@36nu.com>
Date: Fri Sep 22 20:31:39 2017 +0800
init
假如要删除备注为add c.txt
commit为0fb295fe0e0276f0c81df61c4fd853b7a000bb5c
的这次提交
- 首先找到此次提交之前的一次提交的commit
7753f40d892a8e0d14176a42f6e12ae0179a3210
- 执行如下命令
弹出如下界面git rebase -i 7753f40
``` - 将
0fb295f
这一行前面的pick改为drop,然后按照提示保存退出 - 至此已经删除了指定的commit,可以使用
git log
查看下
起因: 不小新把记录了公司服务器IP,账号,密码的文件提交到了git
方法:
git reset --hard <commit_id>
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_id> 每次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