GIT 常用命令
获取git 配置信息的命令
git config --list
git config --global user.name “user”
git config --global user.name “user@gmail.com”
git init
相当于在本地建立一个.git目录
git status
git status -s:-s表示short,-s输出标记有两列,第一列是staging,第二列是working
git log
git log --oneline --number 每条log只显示一行,显示number条
git log --oneline --graph 图形化显示分支合并历史
git log --author=xxx 根据作者划分提交
git log --no-merges 根据有没有合入划分提交
git log --stat 改动的相对信息
git log -p 将每一笔提交之间的差异做成patch显示
git diff
不加参数的git diff:
次命令比较的是工作目录和暂存区域快照之间的差异,就是修改之后没有add的内容
git diff --cached
暂存文件和上次提交之间的差异
git diff HEAD
比较工作目录下的文件与commit提交之间所有的改动
git commit -a 会把所有追踪的文件自动add进来,然后提交
git commit --amend提交上一次的commit,针对同一个父节点,删除之前的提交
git reflog 查看所有的commit ID
git reset HEAD
git reset HEAD --filename可以将某一个文件从staged状态取出来
git reset --mixed id,是将git的HEAD变了(也就是提交记录变了),但文件并没有改变,(也就是working tree并没有改变). 取消了commit和add的内容.
git reset --soft id 相当于reset之后有做了一次git add,相当于取消了commit的内容
git reset --hard id相当于将git 的HEAD变了,文件的修改也回退了
git revert HEAD
相当于push的反操作
git rm
git rm file :从staging中移除文件,同时移除working space
git rm --cached 从功能上等同于git reset HEAD,清楚了缓冲区,但是不动功能工作目录树
git clean -df
可以清除目录中没有track的文件
git fetch
fetch将会取到所有你本地没有的数据,所有取下来的分支可以被叫做remotebranches,它们和本地分支一样(可以看diff,log等,也可以merge到其他分支),但是Git不允许你checkout到它们.
git pull
git pull会首先执行git fetch,然后执行git merge,把取来的分支的head merge到当前分支.这个merge操作会产生一个新的commit. 如果使用–rebase参数,它会执行gitrebase来取代原来的git merge
git merge出现冲突可以 rebase到最新的父节点,解冲突再重新merge
eg:
git fetch korg
git checkout -b tmp korg/linux4.14
这样本地的tmp分支就是最新节点了
再git cherry-pick 两笔提交到本地, 再git push