git clone
将远程仓库中的项目下载到本地仓库
用法: 进入到git工作目录,输入git clone https://github.com/rodickmini/taptempo.git 进行克隆
将远程仓库中的项目下载到本地仓库
git checkout
切换分支或将修改的文件恢复
用法:
clone
下代码后,代码默认会在master
分支,我们需要把代码切换到一个自己的分支,这样的话,我们随便怎样修改,怎样提交,都不会影响到master
或其它分支。
git checkout -b feature-test
这个时候,feature-test
分支和master
分支的代码是完全一样的,但是此后,你做的所有修改都不会影响master
分支,只会在feature-test
分支上往下进行。
git status
显示当前工作目录的文件状态
用法
git status
- 结果中,
- Changes to be committed列出了已经add了还没有commit的文件
- Changes not staged for commit列出了修改了,但还没有add的文件
- Untracked files列出了新加入的,还没有被git管理起来的文件
git add
作用
将一个普通文件交给git管理或者将修改过的文件添加到git的索引库中。当我们使用
git commit
时,git将依据索引库中的内容来进行文件的提交。
用法
git add index.html
如果我们一次修改比较多的文件,需要把所有修改的文件都添加到索引库,可以使用:
git add --all
如果我们误把一个文件添加进了索引库,可以使用以下命令将其“拉回”暂存区:
git reset HEAD index.html
如果我们想把一个文件恢复成修改前的状态,可以使用以下命令,就撤销了我们所有的修改:
git checkout index.html
但是,执行这个命令要慎重哦!一旦执行,你的所有修改都找不回来啦!
在执行之前,看一下这次修改了那些东西,那么就需要使用git diff命令:
git diff index.html
git diff
命令会调出一个类似于vi的文本编辑器(只读),里面红色的部分说明你删除了<h1>catch
the beat</h1>
这一行,绿色的部分说明你添加了display:
block;
这一行。看完了,按q
键就可以退出啦~git commit
作用
将所有添加到索引库的文件提交到本地仓库
最简单的commit操作如下:
git commit -m "upd"
所以commit message
主要要说3件事:
- 是upd(更新)、add(添加)还是del(删除)操作
- 操作了什么文件(或者什么内容)
- 为什么要做这个操作(或者能够解决什么bug,解决什么问题)
git push
作用
将本地仓库的修改推送到远程仓库
用法
git push origin feature-test
如果不push,协作的小伙伴们将永远不知道你关起门来做了什么伤天害理的事儿,所以,当我们做完功能后,要记得使用git push
将自己的改动推送到远程代码仓库。
如果远程仓库当前没有feature-test
这个分支,将会新建分支。
git fetch
作用
将远程代码仓库的代码下载到本地
用法
本地仓库维护着一堆“remote-tracking branches”,翻译过来叫“远程跟踪分支”,对应着本地仓库里remote/master
remote/develop
这些分支。
fetch操作后,远程跟踪分支就和远程代码仓库里的相应分支代码保持一致了~
git fetch
fetch
操作默认只会fetchorigin
仓库的分支,如果要fetch其它仓库的分支,需要在后面加上仓库名:
git fetch repo-caiyou
通常,我们的feature分支在完成使命后会被管理员删除掉,而我们各自的本地却不知道,硬盘空间吃紧。所以,如果我们想在管理员删除了远端的某些分支的时候,将自己本地对应的“远程跟踪分支”删除掉,需要在fetch操作时加一个-p
参数:
git fetch -p
git merge
作用
将一个或多个分支合并
用法
比如我们当前在develop
分支上,git
fetch
之后,我们把远程代码仓库中的develop
分支下载到了本地仓库,但是并没有merge
到我们当前工作的develop
分支里,看log
的话,我们会发现我们本地的develop
分支和remote/develop
分支还差了老远~因此需要进行如下操作:
git merge origin/develop
这样,develop
分支就和remote/develop
分支一样了。
git merge
操作通常还用在别的一些场景中,比如,我们的同事在feature-x
分支上做好了某个业务,此时,需要将feature-x
分支合并到develop
分支,便于在测试环境上线,就需要先切换到develop
分支:
git checkout develop
再将feature-x
分支merge到develop
分支:
git merge feature-x
当然,如果是比较大的变更,或是涉及到比较重要的文件时,这类业务上的merge操作建议在github上使用pull-request
,或是gitlab系统里的merge-request
,贸然merge产生大量冲突会很蛋疼的哦~
git pull
作用
将远程代码仓库里的代码下载下来并自动合并到当前工作的分支
用法
git pull
不负责任地讲,git pull
基本上等于git
fetch
+ git merge FETCH_HEAD
,但是,git
pull
操作无法看清中间的代码差异和合并的逻辑(其实是我不太清楚啊。。。),曾经踩过坑,代码合并出问题,所以我个人不会直接使用git pull
这个操作,毕竟,耿直boy们更喜欢手动挡嘛~
git log
作用
查看代码提交日志
用法
git log
会显示最基本的log信息,但是不直观,不能看清分支之间的分叉、合并、前因后果,所以个人习惯加上--all
`--decorate--graph
这3个参数:
git log --all --decorate --graph