一 本地分支操作
git log --oneline --decorate --graph --all
git tag "v0" a1aba30
-- 第三个参数是tag名称,第四个参数是commit的hash值,可用第一个命令查看
git config --global alias.lol "log --oneline --decorate --graph --all"
--起别名 此时命令为git lol
git stash save -a "暂存区别名"
--git add之后但没有commit,想切换分支就必须将工作区中的内容备份stash save保存进git栈内
git stash list
--查看当前分支下,git栈的所有备份,可以利用这个列表决定从哪个地方进行恢复
git stash pop --index stash@{0}
--从git栈中读取最近的一次内容,恢复工作区的内容
git stash drop stash@{0}
--清理git栈内的指定备份,如果最后一个参数为空,则默认清理最后一个备份
git stash clear
--清理git栈内所有的备份
git abort --abort
--放弃此次merge操作
二 查看与对比历史记录
主要学习以下几条命令命令 1.git log 2.git show 3.git diff
git log
--显示完整commit信息,若一页显示不全,按空格或f向下翻页,按b向上翻页,按q退出
git log -p
--显示每一次commit之间差异信息
git log --stat
--显示每一次commit之间差异的统计信息
git log --oneline --decorate --graph --all
--显示完整的历史示意图,--oneline显示单行信息,--decorate显示引用信息,--graph显示图形化历史信息 --all显示所有分支信息
git show <commit的对应hash值>
--查看当前分支下的提交
git show master^
--master当前指向的提交记录的第一父提交
git show master^2
--master当前指向的提交记录的第二父提交
git show --stat master^2
--显示提交所做出的改变信息
git diff
--显示工作区和暂存区之间的差异
git diff --cached
--显示暂存区和历史提交之间的差异
git diff HEAD~2 -- master.txt
--显示当前工作区与指定历史提交之间的差异,后面可以指定某个特定文件名
git diff --cached HEAD~2 -- master.txt
--显示暂存区与指定历史提交之间的差异,后面可以指定某个特定文件名
git diff HEAD HEAD~2 -- master.txt
--显示两次历史提交之间的差异,后面可以指定某个特定文件名
git diff --color-words / git diff --word-diff
--显示工作区与暂存区之间文件中,具体单词之间差异
三 撤销修改
主要学习以下几条命令: 1.git checkout 2.git reset 3.git clean 4.git revert
git checkout -- master.txt
--撤销工作区中master.txt的修改,其实是将暂存区中的文件覆盖了工作中的文件
git reset master.txt
--撤销git add后的文件回工作区
git checkout <某次历史提交> -- <指定文件名>
--回退当前工作区中的某个文件的历史版本
git reset <某次历史提交> -- <指定文件名>
--回退暂存区中的某个文件的历史版本
vim .gitingore
git add .gitingore
git commit -m "add ingore"
--可以在.gitingore中增加一些需要忽略的文件,此时git add .的时候就不会对.gitingore中忽略的文件进行add
git clean -n/-f/-df
--git clean主要是删除一些没有git add的文件,-n是显示将要删除的文件和目录, -f删除文件,-df删除文件和目录
git clean -n -X/git clean -X -f
--显示并删除将要删除的.gitingore中忽略的文件
git revert <某次历史提交>
--创建一个commit来覆盖当前的commit,HEAD指针是向后移动的,而
三 重写历史记录
主要学习以下几种命令: 1.git commit --amend 2.git rebase 3.git reset 4.git reflog
git commit --amend
--修改已经提交的commit -m后所带的信息
git checkout -b test_rebase HEAD~
--基于当前分支的上一个提交创建分支test_rebase
git rebase master
--合并master分支,但也git merge的区别就是,合并操作后,当前分支的历史看上去是线性的,而git merge后,当前分支有两条路径。处理流程如下:
--git rebase master
--处理冲突
--git add <冲突文件>
--git rebase --continue
git rebase --abort
--取消此次rebase的操作
git reflog -10
--维护HEAD引用的变化历史,显示近10条的记录
git reset --hard/--mixed/--soft HEAD@{5}
--hard还原了暂存区和工作区的文件到某个具体的commit, 并移动HEAD指针到指定commit
--mixed是默认操作,只还原了暂存区,并移动HEAD指针到指定commit
--soft只是移动HEAD指针到指定commit,并不还原任何文件