跳转至

Git

配置Github SSH Keys

在使用github时,由于一些原因,HTTPS连接经常为TIMEOUT,需要反复尝试clone。github的大部分代码都支持了SSH连接,目前使用来看,都很顺畅,但是相比HTTPS需要简单配置一下SSH公钥。

在github账户设置的SSH and GPG key中,新建SSH keys,拷贝生成的id_rsa.pub,考虑到多台机器,可以设定Title用来区别。公钥是以ssh-rsa开头,生成时设定的comment结尾的字符串。

ssh-keygen -t rsa -b 2048 "comment"

提交PR

提交PR前的第一步,配置用户的姓名的邮箱,也就是签名,否则PR提交之后的作者是Unknown

  1. 首先在 Github 上fork项目至自己的仓库,这样将会有完全修改的权限

  2. clone至本地后, 此时git remote -v将会看到自己的仓库地址

origin  git@github.com:robbinlol/jhrwiki.git (fetch)

origin  git@github.com:robbinlol/jhrwiki.git (push)
  1. 更新代码前一定要和远程保持更新,如果是一个更新频繁的项目的话,此时可能会提示无法合并,因为本地产生冲突,使用git stash暂存此次更改

  2. 正常更新代码的三个操作,git add, git commit --signoff -m "comment", git push origin master,之后可以使用git tag指令,方便记录提交,而不是通过git log或者git reflog查找不那么移动的哈希id1

  3. 如果两次提交之间只有小的变动,如果作为两次提交,操作历史的图将会不那么好看,可以考虑git rebase指令,相当于重新定位git HEAD的位置,并把两次的提交合并

  4. 最后,如果真的因为弄乱HEAD造成分离,可以考虑git resetreset默认的程度是--mixed,保留源码,回退了Index(也就是add 操作的暂存区)和commit,此外还有--soft--hard两种方式,分别为保留了源码和Index以及完全回退到指定版本

git reset HEAD^2 # 回退两个版本

git reset commitID # 回退到指定版本

git操作技巧

  • 取消staging区域的文件
git restore --staged files
  • 创建.gitignore文件 直接说明需要忽略的规则
*.cc
*.py
src/
include/
lib/
  • git merge合并分支以及手工解决冲突
git checkout A
git merge B
# 出现冲突的话,手动删除不一致的地方,再进行后续操作
Back to top