您当前的位置:首页 > 计算机 > 软件应用 > 开发工具(IDE)

Git 常用问题

时间:12-14来源:作者:点击数:
CDSY,CDSY.XYZ

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

1、查看 copy

cat ~/.ssh/id_rsa.pub

或者直接copy

pbcopy < ~/.ssh/id_rsa.pub

2、登录 github ,个人中心 ,ssh key ,添加 Add SSH key

链接测试

$ssh -T git@github.com

修改本地 .git config 文件

就是把 https 的链接方式

修改远程仓库地址

有时候 push 不上去,提示 the project you were looking for could not be found,可能是远程仓库地址换了。

  • 删除 git remote rm origin
  • 添加 git remote add origin git@github.com:
  • 修改 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 'sunyongjian@1111.com'

配置秘钥 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
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐