git用法之常用命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git用法之常用命令相关的知识,希望对你有一定的参考价值。
1、git 安装好后,如何配置?
a: 设置本地用户名、邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新。
$ git config --global user.name "John Doe" $ git config --global user.email [email protected]
这是设置全局的用户名、邮箱。当然如果你要在某个项目单独修改也可以,不加 --global 再在项目单独设置一次就好。
b: 生成ssh 公钥
ssh-keygen -t rsa -C "邮箱"
然后根据提示连续回车即可在~/.ssh
目录下得到id_rsa
和id_rsa.pub
两个文件,id_rsa.pub
文件里存放的就是我们要使用的key。
c: 上传公钥到github或gitlab
找到id_rsa.pub复制内容,到github或gitlab个人设置,Add SSH key 后保存,即可。
d: 可以测试一下,是否配置成功:
ssh -T [email protected]
如果配置成功,则会显示:
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
2、关于 git diff 比较代码异动?
有以下几种比较方式:
a: git diff HEAD
比较当前工作区和上次提交文件的差异。
b: git diff
比较当前工作区文件和暂存区文件的差异。
如果没有暂存区,则跟上面 git diff HEAD 一样,比较的是工作区和上次提交文件的差异。
c: git diff --staged 或者 git diff --cached
比较暂存区和上次提交文件的差异。
d: git diff abc.js
比较尚未暂存的abc.js文件更新了哪些地方。
e: git diff --staged/--cached abc.js
比较暂存区的abc.js文件跟上次提交的abc.js更新了哪些地方。
f: git diff commit_id1 commit_id2
比较 commit_id1和commit_id2 两个版本之间的差异,具体的commit_id可以通过 git log 命令查看。
g: git diff commit_id1:filename commit_id2:filename
比较 commit_id1和commit_id2 两个版本之间filename文件的差异。
3、reset 和 checkout 的差别:
reset:当文件加入了 stage 区以后,如果要从stage删除,即退出暂存区。则使用 reset, 此时工作区的文件不做任何修改,如:git reset a.js
这个命令就是 git stage/add a.js 的反操作。
checkout: 当文件加入了 stage 区以后,后来又做了一些修改,这时发现后面的修改有问题,想回退到提交到暂存区的状态,使用 checkout 命令:
git checkout a.js 此时,工作区的内容丢失,之前暂存区和commit的文件不受影响。
4、关于分支,分支是Git最最重要的一个超级核心、好用、有用、牛叉的一个东西!
git branch xxx 新建xxx分支
git checkout xxx 切换到xxx分支,注意跟丢弃文件的那个命令差别:git checkout -- a.txt 多一个 --
git checkout branch xxx 新建并切换到xxx分支,一句话跟上面两句话作用一样,省事!
git branch -d xxx 删除xxx分支
git branch -D xxx 强制删除xxx分支,如果xxx分支有修改未提交,用-d是删不掉的,需要用 -D 强制删除
git push origin :xxx 删除xxx分支,并提交到服务器(删除服务器上的xxx分支)原理:冒号不能省略,本地没有xxx分支,此时push一个空分支,相当于删除服务器上xxx分支
git branch 查看当前项目所处的分支
git branch -a 查看当前项目所有分支,当前分支用 * 标记;远程服务器有 而本地没有的分支,会被标红。
分支如此如此重要,实际工作中,关于分支的使用,应该严格按照以下几个基本原则进行:
1、首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活; 2、那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本; 3、你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
5、关于 git reflog
这个也是很好用的一个东西。比如,现在本地开发,提交了3个commit版本,ID假定为:111,222,333
此时,我回退到 HEAD ,就是服务器上最后一次提交的那个版本,意味着,这三个commit版本的代码我都没了,git log 也看不到之前3次commit的信息。但如果我又想要回到 222 的commit ID时候的代码,怎么办?
此时,git reflog 这个超级强大命令,就可以派上用场了,他包含了提交、回退过所有的commit信息。然后找到commit id,通过 git reset --hard commit_id 即可以回退到之前提交的任何一个版本。git reset --hard commit_id 只要你能找到 commit id,他就能给你回退到当时的版本,也超级强大!
6、关于分支合并
将 master 代码 合并到 dev 分支。切换到master分支后,
git merge dev “fast forward” 模式的分支合并
git merge --no-ff -m "merge with no-ff" dev 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。建议用这种!
以上是关于git用法之常用命令的主要内容,如果未能解决你的问题,请参考以下文章