Git常用经验
Git
显示单次commit的改动内容
git show commit-id
git show HEAD~
什么都不带的时候默认显示最近的一次
git show
patch相关
- 生成patch
git format-patch HEAD^
- 应用patch,保留commit信息
git am file
- 打patch,但是不保留commit信息
git apply file
git log特定搜索
- 搜索特定的作者
git log --author name
- 搜索特定的title
git log --grep title
*只查看和某个文件相关的git log
git log filename
git stash的用法
详见git-stash用法小结
常见情景:在git pull的时候提示有本地未保存的修改,此时开发到一半不想要提交也不想删除的时候
git stash
把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录
git stash list
查看现有的stash目录
git stash pop
应用之前缓存的最近一个记录
谨慎使用
git stash drop <stash@{0}>
删除某一个指定的stash
git stash clear
删除所有缓存的stash
github fork 出的仓库怎样与原仓库保持一致
-
git remote -v 查看远程库地址;
-
git remote add upstream XXXXXXXXXXXXXXX.git //upstream 设置原仓库的名字,后面是原仓库的地址;
-
git fetch upstream //抓取原仓库的修改文件
-
git checkout XXX // 切换到需要合并的本地仓库的本地分支。
-
git merge upstream/dev //将原仓库的Dev 分支与本地仓库的当前分支合并
-
git push origin XXX_branch //将当前仓库的本地分支推送到远程分支
git 如何修改已经提交到repo的commit
利用交互式rebase
-
git rebas1. e -i HEAD~N //N是你要修改的倒数第几次commit
-
修改打开的文档,类似于这样
pick abcdef1 Commit message 1
pick abcdef2 Commit message 2
pick abcdef3 Commit message 3如果只修改commit message, 将对应的pick改成reword,
如果要修改code将pick改为edit
如果要合并多个commit,保留最近一个为pick,其他的改为squash -
保存修改
-
git rebase --continue
-
git push origin branch-name -f //强制推送,注意要非常小心!
git revert 单个commit
如果想要撤回之前的某个commit直接执行
git revert <commit-id>