Git使用笔记
全局Git配置
- 查看用户名和邮箱
git config user.name
git config user.email
- 修改用户名和邮箱
git config --global user.name "username"
git config --global user.email "email"
- 生成SSH公钥
ssh-keygen -trsa -C"邮箱"
- 重置git本地密码
git config --system--unsetcredential.helper
新建代码库
# 在当前目录新建一个Git代码库
git init
# 新建一个目录,将其初始化为Git代码库 git init [project-name]
# 下载一个项目和它的整个代码历史
git clone [url]
分支管理
- 查看远程分支
使用如下命令查看所有远程分支: git fetch git branch -r
- 拉取远程分支并创建本地分支
# - 方法一
# 使用如下命令:
git checkout -b 本地分支branch_x origin/远程分支名name
# 使用该方式会在本地新建分支branch_x,并自动切换到该本地分支branch_x。
# - 方式二
# 使用如下命令:
git fetch origin 远程分支名name:本地分支branch_x
# 使用该方式会在本地新建分支branch_x,但是不会自动切换到该本地分支branch_x,需要手动checkout。
stash
git stash
git pull
git stash pop
分支文件对比
- 显示出branch1和branch2中差异的部分
git diff branch1 branch2 --stat
- 显示指定文件的详细差异
git diff branch1 branch2 具体文件路径
- 显示出所有有差异的文件的详细差异
git diff branch1 branch2
- 查看branch1分支有,而branch2中没有的log
git log branch1 ^branch2
- 查看branch2中比branch1中多提交了哪些内容
git log branch1..branch2
注意,列出来的是两个点后边(此处即dev)多提交的内容。
- 不知道谁提交的多谁提交的少,单纯想知道有什么不一样
git log branch1...branch2
- 在上述情况下,在显示出每个提交是在哪个分支上
git log -lefg-right branch1...branch2
注意 commit 后面的箭头,根据我们在 –left-right branch1…branch2 的顺序,左箭头 < 表示是 branch1 的,右箭头 > 表示是branch2的。
文件撤销操作
- 未使用 git add 缓存代码时
可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ,不写就成了检出分支了!!)。放弃所有的文件修改可以使用 git checkout . 命令。此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。
- 已经使用了 git add 缓存了代码
可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
- 已经用 git commit 提交了代码
可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commitid
git log 可以查看请交历史记录
cherry-pick
使用场景:对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。
这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。
Git提交规范
https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
Git同机器配置多个Git账户,做到公私分离
- 生成账户1的公钥:
ssh-keygen -trsa -C"zhangsan@email.com"
# 生成过程中记得给ssh公钥文件起个名字,如:id_rsa1
- 将ssh key添加到SSH agent中,
ssh-add ~/.ssh/id_rsa1
- 生成账户2的公钥:
ssh-keygen -trsa -C"lisi@qq.com"
# 生成过程中记得给ssh公钥文件起个名字,如:id_rsa2
- 将ssh key添加到SSH agent中,
ssh-add ~/.ssh/id_rsa2
- 配置ssh
vim ~/.ssh/config
# 配置如下内容:
# 粘贴到config文件中
#公司的git地址
Host git.***.com
User git
Hostname git.***.com #公司的git地址
IdentityFile ~/.ssh/id_rsa1 #访问公司git的SSH KEY
Port *** #公司的git端口
Host gitee.com
User git
Hostname gitee.com #github的地址
IdentityFile ~/.ssh/id_rsa2 #访问github的SSH KEY
问题记录:
- 执行****git命令时提示秘钥权限太开放Permissions 0644 for '/Users/liuml/.ssh/id_rsa_tz' are too open.** **错误信息如下:
Update failed
Warning: Permanently added 'gitee.com,..*.' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/lisi/.ssh/id_rsa_tz' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/lisi/.ssh/id_rsa_tz": bad permissions
git@gitee.com: Permission denied (publickey).
Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决方式:
可以执行以下命令将秘钥文件的权限设置为700。
chmod -R 700 ~/.ssh/config ~/.ssh/id_rsa_*
- git****客户端 提示Load key "/home/xxx/.ssh/id_rsa.pub": invalid format
解决方式:
vim ~/.ssh.config
Host x.x.x.x
User git
IdentityFile /home/xxx/.ssh/id_rsa1 # 此处没有.pub
IdentitiesOnly yes
Git常用命令笔记
转载地: https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
镜像配置
替换设置
可以直接在配置文件中动态替换 Github 的地址,这样不用每次克隆的时候都修改地址
git config --global url."https://kgithub.com/".insteadOf "https://github.com/"
测试
git clone https://github.com/kubernetes/kubernetes.git
取消设置
git config --global --unset url.https://github.com/.insteadof
查看 Git 配置信息
git config --global --list
no matching host key type found. Their offer: ssh-rsa 问题解决
修改ssh配置文件 ~/.ssh/config, 增加配置项,一劳永逸
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
上面配置默认对所有连接的服务器生效,也可以通过制定服务器使部分服务器生效
Host 172.16.x.x
HostName k8s-node001
User root
Port 22
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa