1: git reflog
命令,它会记录本地仓库所有分支的每一次版本变化。实际上只要本地仓库不被删除,随你怎么折腾,都能回退到任何地方。reflog
记录只存在于本地仓库中,本地仓库删除后,记录消失。执行此命令如下图所示:
2: git reset --hard [版本号]
,如果记不清版本号,也可以根据上图第 3 行的信息,执行 git reset --hard HEAD@{2}
命令,其中 HEAD@{2}
就是上图第 3 行第 2 列所示,这个命令的意思是回到当前分支最近两次提交版本变化前:
3:执行 git status
查看整个仓库的状态:
4:使用 git add [文件名]
命令跟踪此新建文件,即把新增文件添加到暂存区,以备提交
5:暂存区记录的只是修改。如果要撤销暂存区的修改怎么办?根据上图的提示,执行 git reset -- [文件名]
或者 git rm --cached [文件名]
命令即可
6: git diff
,它可以用来查看工作区被跟踪的文件的修改详情。注意,只有在版本区中存在的文件才是被跟踪文件。
7:并使用 git diff --cached
查看暂存区的全部修改
8: git commit
-m "备注信息" 命令把暂存区的修改提交到版本区,生成一个新的版本
9: git log
,它用来查看版本区的提交历史记录
关于查看提交历史记录的命令,有些常用的选项介绍一下:
git log [分支名]
查看某分支的提交历史,不写分支名查看当前所在分支git log --oneline
一行显示提交历史git log -n
其中 n 是数字,查看最近 n 个提交git log --author [贡献者名字]
查看指定贡献者的提交记录git log --graph
图示法显示提交历史- 你可能需要查看时间正序排列的信息,那么可以使用
git log --reverse
命令
10:git config -l
可以查看配置信息
11:git reset --soft HEAD^
撤销最近的一次提交,将修改还原到暂存区。--soft
表示软退回,对应的还有 --hard
硬退回,后面会讲到,HEAD^
表示撤销一次提交,HEAD^^
表示撤销两次提交,撤销 n 次可以简写为 HEAD~n
。软退回一个提交后执行 git branch -avv
命令查看分支信息
12:git pull 更新分支
13:git push 提交分支,加 -f 强制提交
14:git fetch
,它的作用是将远程仓库的分支信息拉取到本地仓库,注意,仅仅是更新了本地的远程分支信息,也就是执行 git branch -avv
命令时,查看到的 remotes
开头的行的分支信息。
15:而由于前面执行过 git fetch
命令,所以也可以执行 git rebase origin/master
命令来实现 “使本地 master 分支基于远程仓库的 master 分支”
16:git branch [分支名]
可以创建新的分支
17: git checkout [分支名]
切换分支
18: git branch
查看分支信息
19:给命令设置别名,git config --global alias.ch checout.
20: git checkout -b [分支名]
创建分支并切换到新分支。
21: git push [主机名] [本地分支名]:[远程分支名]
即可将本地分支推送到远程仓库的分支中,通常冒号前后的分支名是相同的,如果是相同的,可以省略 :[远程分支名]
,如果远程分支不存在,会自动创建
22: git branch -u [主机名/远程分支名] [本地分支名]
将本地分支与远程分支关联,或者说使本地分支跟踪远程分支。如果是设置当前所在分支跟踪远程分支,最后一个参数本地分支名可以省略不写,这样之后, 直接git push 即可提交,无需再git push origin dev1:dev1 了,这个命令的 -u
选项是 --set-upstream
的缩写
23:git branch --unset-upstream [分支名]
即可撤销该分支对远程分支的跟踪,同样地,如果撤销当前所在的分支的跟踪,分支名可以省略不写
24:git push [主机名] :[远程分支名]
,如果一次性删除多个,可以这样:git push [主机名] :[远程分支名] :[远程分支名] :[远程分支名]
。此命令的原理是将空分支推送到远程分支,结果自然就是远程分支被删除。另一个删除远程分支的命令:git push [主机名] --delete [远程分支名]
。删除远程分支的命令可以在任意本地分支中执行。两个命令分别试一下
25: git branch -D [分支名]
删除本地分支,同样地,此命令也可以一次删除多个,将需要删除的分支名罗列在命令后面即可。在此之前,先介绍一个极少用到的命令:给本地分支改名 git branch -m [原分支名] [新分支名]
,若修改当前所在分支的名字,原分支名可以省略不写