Git常用命令积累 - ThinkingAndDoing/MySourceCode GitHub Wiki

ssh认证
如果使用公钥认证机制,客户端A需要将自己生成的公钥(~/.ssh/id_rsa.pub)发送到服务端B的~/.ssh/authorized_keys文件中。当进行公钥认证时,客户端将告诉服务端要使用哪个密钥对,并告诉服务端它已经访问过密钥对的私钥部分~/.ssh/id_rsa(客户端从自己的私钥中推导,或者从私钥同目录下读取公钥,计算公钥指纹后发送给服务端。所以有些版本的ssh不要求存在公钥文件,有些版本的ssh则要求私钥和公钥同时存在且在同目录下),然后服务端将检测密钥对的公钥部分,判断该客户端是否允许通过认证。

ssh认证的过程其实是客户端(ssh命令端)读取自己的私钥并推导出指纹发送给服务端(sshd端),服务端也使用自己保存的公钥推导出指纹进行对比,如果指纹相同说明服务端的公钥和客户端的私钥是配对的。

如下是公钥、私钥的指纹计算方式:
$ ssh-keygen -l -f ~/.ssh/id_rsa
2048 SHA256:[email protected] (RSA)
$ ssh-keygen -l -f ~/.ssh/id_rsa.pub
2048 SHA256:[email protected] (RSA)

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-GiORRAqMXEFt/agent.28161; export SSH_AUTH_SOCK;
SSH_AGENT_PID=28162; export SSH_AGENT_PID;
echo Agent pid 28162;
输出结果中明确说明了导出了几个环境变量,同时也可以知道ssh-agent使用Unix Domain 套接字的方式监听在本机上以及其pid为28162。到时候可以直接使用kill 28162杀掉这个进程,更直接的方式是使用ssh-agent -k,它会根据当前的环境变量SSH_AGE T_PID来杀进程。

【git ssh配置】

1、设置Git的user name和email:(如果是第一次的话)(git config —global -l可以查看当前所有配置)
$ git config —global user.name “xxx”
$ git config —global user.email “[email protected]
2、生成密钥
$ ssh-keygen -t ed25519 -C “[email protected]
连续3个回车。如果不需要密码的话。
最后得到了两个文件:id_ed25519和id_ed25519.pub。
3、添加密钥到ssh-agent
确保 ssh-agent 是可用的。ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。# start the ssh-agent in the background
$ eval `ssh-agent -s` 或者 eval “$(ssh-agent -s)”
Agent pid 59566
添加生成的 SSH key 到 ssh-agent。
$ ssh-add ~/.ssh/id_ed25519
4、登陆Github, 添加 ssh 。
把id_ed25519.pub文件里的内容复制到Setting → SSH Key
5、测试:
$ ssh -T [email protected]
选择 yes
Hi xxx! You’ve successfully authenticated, but GitHub does not provide shell access.
如果看到Hi后面是你的用户名,就说明成功了。
6、从远程服务器[email protected]:ThinkingAndDoing/MySourceCode.git下载代码到本地
git clone [email protected]:ThinkingAndDoing/MySourceCode.git

【代码提交步骤】
1. git add .
2. git commit -m “add the comments” 若要修改comments,使用git commit —amend
3. git push origin localbranch:remotebranch

【git clean & git reset 清空本地更改】

1,清除所有新增文件或者文件夹
git clean -df
2,恢复所有被修改的,或者被删除的文件
git reset —hard HEAD
3,回到当前分支最新状态
git clean -df; git reset —hard HEAD ; git pull; exit

【git branch 分支管理】

1,删除远程的test分支
git push origin —delete test
2,拉取远程分支origin/Python并创建本地分支PythonLocal
git checkout -b PythonLocal origin/Python
3,删除本地分支test
git branch -d test
4,显示所有本地和远程分支
git branch -a

【git push 代码提交】

1,将本地分支PythonLocal的更改推送到远程分支Python,若本地分支与远程分支同名,直接git push即可
git push origin PythonLocal:Python

【git format-patch】

1,将最新提交的更新和上一次提交的更新做一个patch
git format-patch -1或者git format-patch HEAD^
2,应用刚才做成的patch
git am -3 0001-WarningModule.patch
3,列出所有Commit中包含"WarningModule"的版本
git log | grep -A 2 -B 4 -i WarningModule > log.txt

【git clone 从远程Git服务器下载代码】

1,从远程服务器[email protected]:ThinkingAndDoing/MySourceCode.git下载代码到本地
git clone [email protected]:ThinkingAndDoing/MySourceCode.git

⚠️ **GitHub.com Fallback** ⚠️