-
Notifications
You must be signed in to change notification settings - Fork 54
Description
git的公钥
https 和 SSH 的区别:
-
前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
-
https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
创建本地公有秘钥
$ cd ~/.ssh && ls
进入该文件夹下检查有没有id_rsa.pub 或 id_dsa.pub 文件,如果存在 则已经创建,没有需要创建
//配置git用户名和邮箱:
$ git config user.name "用户名"
$ git config user.email "邮箱"
$ ssh-keygen -t rsa -C "邮箱"
//多个密钥的情况下,可生成ssh key同时指定保存的文件名
$ ssh-keygen -t rsa -f ~/.ssh/ellacf -C "邮箱"
代码参数含义:
- -t 指定密钥类型,默认是 rsa ,可以省略。
- -C 设置注释文字,比如邮箱。
- -f 指定密钥文件存储文件名。
执行后,会填写保存两种密钥的文件夹,和passphrase,全部可以按enter。然后执行ls来查看生成后的文件。
- id_rsa和id_rsa.pub分别是私有密钥和公有密钥。
- 我们指定的文件名就是id_rsa.github,这时~/.ssh目录下会多出id_rsa.github和id_rsa.github.pub两个文件,id_rsa.github里保存的就是我们要使用的key。
多个密钥
- 新增config文件
touch ~/.ssh/config
在config里面添加
Host *.github.com
IdentityFile ~/.ssh/id_rsa.github
User '用户名'
公钥添加到github
- 查看并copy
- 查看copy
cat ~/.ssh/id_rsa.pub
或者直接copy
pbcopy < ~/.ssh/id_rsa.pub
2.登录github ,个人中心 ,ssh key ,添加 Add SSH key
链接测试
$ssh -T [email protected]
修改本地 .git config文件
就是把https的链接方式
修改远程仓库地址
有时候push不上去,提示 the project you were looking for could not be found. 可能是远程仓库地址换了。
- 删除 git remote rm origin
- 添加 git remote add origin [email protected]:
- 修改 git remte origin set-url URL
删除的文件恢复
批量
git ls-fies -d | xargs git checkout --
git 默认不区分文件名大小写
- 配置git 使其对文件名大小写敏感
git config core.ignorecase false
多个github账号的问题
- 最简单的就是在当前的项目里更改username,当前项目的username就是 单独的
git config user.name 'sunyongjian'
git config user.email '[email protected]'
- 配置秘钥(key)...
查看某个commit 具体的代码更改
- git show 哈希值
git diff
git diff //查看尚未暂存的文件更新了哪些部分
git diff filename //查看尚未暂存的某个文件更新了哪些
git diff –cached //查看已经暂存起来的文件和上次提交的版本之间的差异
git diff –cached filename //查看已经暂存起来的某个文件和上次提交的版本之间的差异
git diff hash1 hash2 //查看某两个版本之间的差异
git diff hash1:filename hash2:filename //查看某两个版本的某个文件之间的差异
分支问题
- feature分支
//首先从develop切除feature分支
$ git checkout -b feature-xxx develop
//开发完切回develop
$ git checkout develop
//然后进行合并,-no-ff 参数,以保持分支的合并历史
$ git merge --no-ff feature/xxx
//没问题就可以删除feature分支了
$ git branch -d feature/xxx
- hot fix
从远程 master 切出分支,不要将本地分支 feature 功能带上
git checkout -b hot-fix origin/master
查看log
-
查看某个文件历史修改记录
git log src/index.js
-
一行展示
--oneline
-
作者
--author="sunyongjian"
-
过滤合并
--no-merges / merges
-
根据提交信息
--grep=""
-
查看跟关联的分支和tag,比如从这个commit提交到origin/develop
--decorate
-
结合展示分支结构,merge的去向
--graph
-
按作者分,所有的commit
git shortlog
-
diff改动
--stat
哪些文件有改动,改动的行
-p
具体的代码 -
按数量
-10
-
自定义格式
%cn、%h 和 %cd 这三种占位符会被分别替换为作者名字、缩略标识和提交日期。
git log --pretty=format:"%cn committed %h on %cd"
-
查看某个commit的改动
git show hash
-
查看历史操作
git reflog
可以撤销一些不可逆的操作。比如reset之后,找到reset之前的commit hash,再reset
git show HEAD === git log -1 -p