1、撤销commit
撤销并保留修改
git reset --soft <commit_id> 会将改动放在缓存区
git reset --mixed <commit_id> 不把改动放在缓存区
不保留修改撤销
git reset –hard <commit_id>
tip: <commit_id>: 要撤销的前面一个commit
缓存区 : add的代码就在缓存区
2、修改最后一次提交
git commit -m 'initial commit'
git add forgotten_file
git commit --amend
tip:上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容
3、撤销add
git reset HEAD <file>
4、丢弃工作去文件的改动
git checkout -- <file>
5、撤销merge/pull操作
git reset --merge
tip:因为pull操作实际上包含了fetch+merge操作
6、stash操作
git stash //能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git stash save "remark" //作用等同于git stash,区别是可以加一些注释
git stash list //查看当前stash中的内容
git stash pop //将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。
tip:注:该命令将堆栈中最近保存的内容删除(栈是先进后出)
git stash apply //将堆栈中的内容应用到当前目录
git stash apply <stash_name> //指定恢复哪个stash到当前的工作目录
tip:不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况
git stash drop <stash_name> //从堆栈中移除某个指定的stash
git stash clear //清除堆栈中的所有内容
7、.gitignore中添加忽略文件
git rm -r --cached .
git add .
git commit -m
'update .gitignore'
tip:把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交,这样就不会出现忽略的文件了
8、与远程仓库同步
git fetch origin --prune
9、checkout远程分支
git checkout -b dev(本地分支名) origin/dev(远程分支名)