在学习了廖雪峰老师的git教程后把常用的命令总结了出来
- 注:在使用这些命令前请安装好Git软件,地址:https://git-scm.com/downloads,同时去注册一个git类的数据仓库账号,国外的如github、gitlab,国内的如码云等。
1、在建好的目录下来初始化一个git项目
git init
2、添加文件
2.1、添加所有文件
git add .
2.2、添加指定文件
git add 文件名
eg: git add readme.md
3、提交到仓库
git commit -m "说明"
eg: git commit -m "Update"
4、查看仓库状态
4.1、如果你修改了某个文件,我们可以通过以下命令来查看状态
git status
4.2、如果想知道某个文件具体修改了哪些内容,用以下命令
git diff 文件名
eg: git diff readme.md
- 注:在确认修改无误后需要再次对修改的文件做git add 和 git commit命令来提交到仓库。
5、显示从最近到最远的提交日志
git log
6、版本回退
在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
git reset --hard HEAD^
7、不想回退版本
找到回退之前的版本的commit版本值(sha1值),来进行反悔操作。
git reset --hard commit值
eg: git reset --hard f8dad 注: 这个值只需要取前五位即可。
8、查看回退记录
前面的反悔操作是建立在你还没关闭git bash窗口看得到回退前那个最新版本的commit id值,如果我们关闭了窗口后想反悔怎么办,使用以下命令来查看
git relog
9、查看工作区和版本库里面最新版本的区别
git diff HEAD -- 文件名
eg: git diff HEAD -- readme.txt
注:每次修改,如果不用git add到暂存区,那就不会加入到commit中。
10、让文件回到最近一次git commit或git add时的状态。
git checkout -- 文件名
eg: git checkout -- readme.txt //把readme.txt文件在工作区的修改全部撤销
11、删除版本库的文件
git rm 文件名
eg: git rm test.txt
之后再使用git commit -m “description”,文件就从版本库里面删除了
12、把误删的文件恢复到最新版本
git checkout HEAD -- test.txt //这个恢复的前提是没有执行commit命令才行。
- 注意:git checkout — test.txt 针对的是rm test.txt
如果是git rm test.txt, 参看之前的版本回退, git reset — hard 文件名
13、将本地仓库推送到远端仓库
13.1、建立远端地址
git remote add origin 你远端的github地址
eg: git remote add origin git@github.com:michaelliao/learngit.git
13.2、推送到远端仓库
git push -u origin master //推送到主分支,以后可以直接:git push origin master
14、把创建好的远程仓库上克隆到本地
git clone 远程地址
eg: git clone git@github.com:michaelliao/gitskills.git
git里面重要概念–分支(具体概念参考教程:廖雪峰教程-分支
15、创建分支
比如我们要创建dev分支:
git checkout -b dev
注:git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
git branch dev
git checkout dev
16、切换分支和查看当前分支
16.1、切换
git checkout master
16.2、查看当前分支
git branch //git branch命令会列出所有分支,当前分支前面会标一个*号。
- 注:你切换到分支上过后,就可以专注自己分支的开发,使用git add和git commit来进行操作就可以了。提交过后你切换到master分支是无法查看到刚才你在分支上提交的内容的。
17、合并分支
git merge dev //合并指定分支到当前分支(比如这个在master下合并dev)
18、删除分支
git branch -d dev //删除dev分支
19、分支合并冲突
一般来说在合并分支时与master存在冲突的情况下只能手动去把文件修改一致才行。合并过程冲突的话,可以使用cat 文件名来查看冲突的内容,冲突部分会用<<<<<<< HEAD这样的字样标注。
具体操作教程:分支合并冲突
20、分支管理策略
前面的分支操作属于Fast Forward模式,这种模式下,删除分支后,会丢掉分支信息,接下来不使用这种模式。
使用这个模式的其它操作几乎都一样,只是在合并的时候加一个参数和一个commit信息。如下:
git merge --no-ff -m 'no-ff' dev
查看分支历史图
git log --graph --pretty=oneline --abbrev-commit
21、实际开发使用分支管理的原则
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
22、bug分支
有时候我们在开发的过程中遇到bug,需要及时去修复,但是目前分支上的开发任务又没法提交,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等修复bug以后恢复现场后继续工作。
22.1、保存当前分支工作现场
git stash //执行了这个命令后用git status就不会看到未提交的信息。
- 注:使用这个命令的前提是你的文件已经git的暂存区里面了。在保存好上面的工作现场后,你就需要去创建自己专门的bug修复分支,来进行修复,之后再合并和删除bug分支即可,做完这些过后你需要恢复我们开始保存好的工作现场。
22.2、恢复工作现场
git stash list //查看工作现场的位置
git stash apply //恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash pop //恢复的同时把stash内容也删了
git stash apply stash@{0} //恢复指定的stash,这个stash@{0}参数可以从git stash list查看
23、features分支
当我们在开发新功能时需要新建一个分支,但是在开发完过后不要这个功能了,需要删除这个未合并的分支。
git branch -D feature //删除未合并的分支需要使用大D。
24、可以抓取和推送的origin的地址
git remote -v //如果没有推送权限,就看不到push的地址。
25、推送到分支
25.1、推送到主分支
git push origin master
25.2、推送到其它分支
git push origin dev
26、多人协作开发
这个参考教程,比较详细:多人协作开发
总结为以下几步:
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
补充
1、将本地分支推送到远程仓库
git push --set-upstream origin 分支名
eg: git push --set-upstream origin dev