Git
- 美化git log查询
git log --pretty=oneline
- 查看工作区和版本库里面最新版本的区别
git diff HEAD -- file
- 撤销/一键还原
git checkout -- file
效果:
一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
- 关联远程库
git remote add origin git@server-name:path/repo-name.git
- 第一次推送要加上 -u 将本地仓库和远程连起来
git push -u origin master
- 查看分支合并图
git log --graph
- 禁用
Fast forward合并
git merge --no-ff -m "merge with no-ff" dev
- 恢复暂存区
-
git stash pop:恢复的同时把stash内容也删除 -
git stash apply
- 强行删除分支
git branch -D feature-vulcan
- 查远程库信息
git remote -v
- 创建远程
origin的dev分支到本地
git checkout -b dev origin/dev
- 提示
no tracking information(设置本地分支和远程分支的链接)
git branch --set-upstream-to <branch-name> origin/<branch-name>
- rebase操作
效果:可以把本地未push的分叉提交历史整理成直线。
目的:使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
- 标签tag
命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;
命令git tag可以查看所有标签。
回退
git reset --hard HEAD^
效果:head is now commit version. head^ is last commit version.
原理:Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD指向改变了。(HEAD严格来说不是指向提交,而是指向master,master才是指向提交的)
后悔药:Git提供了一个命令git reflog用来记录你的每一次命令。
SSH加密
本地Git仓库和GitHub仓库之间的传输是通过SSH加密的。
-
创建SSH Key。
在用户主目录下,看看有没有.ssh目录,再看看这个目录下有没有
id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到
.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。 -
登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴
id_rsa.pub文件的内容。
为什么要用SSH验证
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。
SSH警告
因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。









网友评论