Git使用笔记

全局Git配置

  1. 查看用户名和邮箱
git config user.name 
git config user.email
  1. 修改用户名和邮箱
git config --global user.name "username" 
git config --global user.email "email"
  1. 生成SSH公钥
ssh-keygen -trsa -C"邮箱"
  1. 重置git本地密码
git config --system--unsetcredential.helper

新建代码库

# 在当前目录新建一个Git代码库     
git init     
# 新建一个目录,将其初始化为Git代码库 git init [project-name]     
# 下载一个项目和它的整个代码历史     
git clone [url]    

分支管理

  1. 查看远程分支
使用如下命令查看所有远程分支: git fetch git branch -r
  1. 拉取远程分支并创建本地分支
# - 方法一
# 使用如下命令: 
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

分支文件对比

  1. 显示出branch1和branch2中差异的部分
git diff branch1 branch2 --stat
  1. 显示指定文件的详细差异
git diff branch1 branch2 具体文件路径
  1. 显示出所有有差异的文件的详细差异
git diff branch1 branch2
  1. 查看branch1分支有,而branch2中没有的log
git log branch1 ^branch2
  1. 查看branch2中比branch1中多提交了哪些内容
git log branch1..branch2

注意,列出来的是两个点后边(此处即dev)多提交的内容。

  1. 不知道谁提交的多谁提交的少,单纯想知道有什么不一样
git log branch1...branch2
  1. 在上述情况下,在显示出每个提交是在哪个分支上
git log -lefg-right branch1...branch2

注意 commit 后面的箭头,根据我们在 –left-right branch1…branch2 的顺序,左箭头 < 表示是 branch1 的,右箭头 > 表示是branch2的。

文件撤销操作

  1. 未使用 git add 缓存代码时

可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ,不写就成了检出分支了!!)。放弃所有的文件修改可以使用 git checkout . 命令。此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。

  1. 已经使用了 git add 缓存了代码

可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。

此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。

  1. 已经用 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. 生成账户1的公钥:
ssh-keygen -trsa -C"[email protected]" 
# 生成过程中记得给ssh公钥文件起个名字,如:id_rsa1
  1. 将ssh key添加到SSH agent中,
ssh-add ~/.ssh/id_rsa1
  1. 生成账户2的公钥:
ssh-keygen -trsa -C"[email protected]" 
# 生成过程中记得给ssh公钥文件起个名字,如:id_rsa2
  1. 将ssh key添加到SSH agent中,
ssh-add ~/.ssh/id_rsa2
  1. 配置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

问题记录:

  1. 执行****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
[email protected]: 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_*
  1. 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

热门相关:佣兵的战争   龙组兵王   林氏荣华   女王嫁到:老公,太凶了   脑洞大爆炸