设置
第1步:创建SSH Key**
用户主目录下(C:\Users\lzj)看有没有.ssh目录,.ssh目录下有没有SSH Key的秘钥对id_rsa(私钥文件)和id_rsa.pub(公钥文件), 私钥不能泄露,公钥可以告诉任何人。
若无,使用Git Bash创建SSH Key:
ssh-keygen -t rsa -C “youremail@example.com” #一路回车,使用默认值即可
第2步:往GitHub中添加ssh key
登陆GitHub,打开“Account settings”,“SSH Keys”页面
Add SSH Key——填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
本地Git仓库和GitHub远程仓库间的传输是通过SSH加密的,每台电脑的git有一个ssh,只有将这个ssh绑定到GitHub中,才能往GitHub远程仓库中推送本地仓库,允许在GitHub中添加多个ssh,即允许多台电脑向同一个GitHub账号推送
将本地仓库与一个远程仓库关联
git remote add origin git@github.com:账户名/仓库名.git #本地库与远程库关联,且远程库起名为origin
git remote add github1 git@github.com:账户名/仓库名.git #远程库可以自己起名,如github1
git remote rm origin #删除和origin库的关联
查看关联的远程库信息
git remote #查看远程库信息
git remote -v #查看远程库详细信息,会出现远程库抓取fetch和推送push地址
推送本地库到远程仓库:
远程库与本地库其实是一样的,只是存了一份到网上,方便随处取而已
git push -u origin master #将本地master分支所有本地commit的东西全部推送到远程仓库origin的master
git push -u origin dev #将本地dev分支上已经commit的东西全部推送到远程仓库origin的dev
git push origin master #-u表示对应的分支关联起来,以后不加-u推送的时候会自动关联
git push gitHub1 master #推送master到远程库github1的master
克隆远程库
git clone git@github.com:Liangzhijian1996/a-byte-of-python.git #克隆远程库到本地成为一个本地库,并自动关联起来
抓取分支
从远程库clone时,默认情况下,只能看到本地库的master
分支;要在dev
分支上开发,就必须抓取远程origin
的dev
分支到本地库
git pull
git checkout -b dev origin/dev #抓取对应的远程库的dev分支来创建本地库的dev分支
git fetch #相当于是从远程获取最新到本地,不会自动merge
git pull #相当于是从远程获取最新版本并merge到本地
git pull = git fetch && git merge
git rebase #把本地未push的分叉提交历史整理成直线,使得我们在查看历史提交的变化时更容易
git pull --rebase = git fetch && git rebase #从远程获取最新到本地,自动merge,然后整理时间线
git pull <远程仓库名> <远程分支名>:<本地分支名>#抓取origin仓库next分支,与本地的master分支合并
git pull <远程仓库名> <远程分支名> #与当前分支合并
git branch --set-upstream 本地分支名 远程仓库名/远程分支名 #有时pull前需建立远程本地分支追踪关系
git pull origin #若已经存在追踪关系,可省略分支名
git pull #若当前分支只存在一个追踪关系,直接git pull
多人协作
多人协作的工作模式(或多电脑)
git push origin dev #每个人都向远程库的dev推送自己的代码
别人已经向origin/dev
分支推送了他的提交,而碰巧你也对同样的文件作了修改,那么就会出现冲突,推送失败。先用git pull
把远程库最新的提交从origin/dev
并且与本地库对应分支合并,再推送
git branch --set-upstream-to=origin/dev dev #设置本地dev分支与远程origin/dev分支的链接
git pull #抓取远程库分支的最新提交与本地库合并。有时会合并失败,那么需要手动解决冲突然后本地提交
git push origin dev #再push到远程库的dev