1.1. ssh key验证身份(一机一key)

电脑上放私钥,账户上放公钥
不要使用https协议(每次都要输入密码,太不方便)

1.2.生成ssh key

运行

  1. ssh-keygen -t rsa -b 4096 -C 邮箱

然后一直回车,直到没提示

  1. cat ~/.ssh/id_rsa.pub

得到公钥内容,粘贴到GitHub(设置页面)
https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agenthelp.github.com

1.3.如何测试配对成功

ssh -T git@github.com 如果询问yes/no,回答yes

2.1.上传代码

新建GitHub Repo,复制其ssh地址(即下面的git@xxxxxx)
git remote add origin git@xxxxxx
origin为远程仓库默认名字,可以换,但建议不要换
git push -u origin master
推送本地master分支到远程origin的master分支,如果提示git pull … 就pull一下
git pull是先把远程分支合并到本地对应的分支 如果远程分支没有更新过,才可以省略 git pull
-u origin master 的意思是设置上游分支 之后就不用再设置上游分支了,直接git pull;git push

2.2.如何上传其他分支

方法一:

  1. git push origin x:x

第一个x为本地,第二个为远程
方法二:先切换再上传

  1. git checkout x
  2. git push -u origin x

强制上传: (工作一般用不上)

  1. git push -u origin master -f

2.3.如何上传到两个远程仓库

  1. git remote add repo2 git@xxxxxx
  2. git push -u repo2 master

3.1.下载代码

  1. git clone git@xxxxxx

cd 目标路径
四连操作 git add / git commit / [git pull] /git oush

3.2.下载分支

先下载整个仓库,然后git checkout 分支名
或者自己搜难记的命令( https://stackoverflow.com/questions/1778088/how-do-i-clone-a-single-branch-in-git/7034921#7034921)
下载速度慢,看git clone 满速下载( https://jscode.me/t/topic/789)

3.3.git clone变形 (记得每次下载完cd目录)

  1. git clone git@?/xxx.git

会在当前目录创建一个xxx目录,xxx.git是本地仓库

  1. git clone git@?/xxx.git yyy

本地新建yyy目录

  1. git clone git@?/xxx.git .

注意最后的点和空格,不新建目录,但是当前目录最好是个空的目录

  • 国内GitHub替代品(GitHub大牛多)

CODING - 一站式软件研发管理平台 (腾讯战略投资)
gitlab.com
码云 码云 Gitee — 基于 Git 的代码托管和研发协作平台 (开源中国)

4.1. git高级操作

使用 bash alias简化命令(gst/ga/gc/gl/gp)

  1. touch ~/.bashrc
  2. echo 'alias ga="git add"'>> ~/.bashrc
  3. echo 'alias gc="git commit -v"'>> ~/.bashrc
  4. echo 'alias gl="git pull"'>> ~/.bashrc
  5. echo 'alias gp="git push"'>> ~/.bashrc
  6. echo 'alias gco="git checkout"'>> ~/.bashrc
  7. echo 'alias gst="git status -sb"'>> ~/.bashrc

最后 code ~/.bashrc 在文件最后加上(好看的glog)

  1. alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- | less"

然后重启命令行,或者运行 source ~/.bashrc
美化历史命令:git rebase -i xxxx 中止 git rebase —abort 继续 git rebase —continue
通灵术:git stash (藏)/git stash pop (出)


不忘初心 方得始终

5.1.提交代码显示 Merge branch ‘master’ of gitee.com

参考:https://www.jianshu.com/p/14f9eb70e99e

解决方法:git pull 时添加 —rebase

  1. git pull --rebase
  2. git push

注意事项:

  1. 执行 git pull —rebase的时候必须保持本地目录干净。 即:不能存在状态为 modified 的文件。(存在Untracked files是没关系的)
  2. 如果出现冲突,可以选择手动解决冲突后继续rebase,也可以放弃本次rebase