git的status、branch、add、commit等就不说了,说点复杂点的。
git log --author=“author” 查看某个人的提交记录
git log -p 会列出某个commit id的修改内容
git log -p filename 会列出修改内容
git log --graph --pretty=oneline --abbrev-commit
git diff
git diff --staged 如果已经git add了,那么直接用git diff是看任何东西的,必须加上–staged
git blame filename 查看一个文件中每一行最后是谁修改的。根据commit id,通过git show可以看到此人在修改这一行代码的同事修改了其他哪些代码。
git reset --hard 修改了,已经git add了,或者已经git commit了,可以用这个reset命令,reset命令不会留下commit id记录,但是revert会留下记录。
git reset --soft 基本和hard的功能差不多,但是和hard的区别是,soft会保留文件的改动,并且文件会处于需要git add的状态
git revert
git checkout – filename 撤销某文件未git add的修改
git checkout – . 撤销当前目录及其子目录下所有未git add的修改
git checkout branch_name 切换到另一个分支
git checkout -b new_branch_bame 新建分支并切换到新分支
git show [commit id] commit id可省略,默认看最新的改动
git show id1 id2 看差异
git push origin 本地分支名 说明:网上说后面还要加上远程分支名,实践证明不需要,加了反而push失败,如果远程没有这个分支名,会自动创建分支名,如果远端有,则默认传到这个分支上
删除远程分支:先用git branch -d aaa删除本地分支,然后再用【git push origin --delete aaa 】删除远端的
git diff base_commit_1 commit_2 查看从base_commit_1到commit_2的差异
git branch -m oldBranchName newBranchName 修改分支名
查看两个分支的差异:git log br_a ^br_b git log br_a…br_b git log br_a…br_b
git clone -b branch_name https://…git git clone时只克隆某一个分支
git stash save “your msg” 在stash的时候,给stash加一个log,而不要直接用git stash
git stash show -p stash@{0} 看stash list中每个stash的内容
git stash drop stash@{0} 删除某一个stash
git stash pop和本地文件冲突了,怎么abort? ----> 直接用git reset --hard即可。
git remote -v 显示当前仓库下载地址。git clone后跟此地址可以下载此仓库。
查看两个分支的差异
要查看两个分支的差异,主要用到的命令就是git log br_a…br_b --left_right --graph。但是你会发现这条命令,很难看出差异。我们还要点技巧,要先根据git配置中描述方法,将git看提交记录的形式美化,这样才能直观的看出两个分支的差异。
按照git配置中的方法配置后,看两个分支的差异的效果:
左侧的方向箭头表示当前提交只在对应的分支才有,这样就很直观。