本篇为git学习笔记的第三篇文章。
一、关联远程仓库
将本地的git仓库托管到远程git仓库上,如github,也可以选择其他的git托管网站,或者自己搭建git服务器,如gitlab。接下来选择使用github来学习如何将本地git仓库托管到github上。
登录github,新建一个空的仓库
空仓库新建完成,github会提示我们如何将已经存在的仓库推送到github上。我们看到github提供了两个仓库地址,https//github.com/worm0527/gitTest.git 和git@github.com:worm0527/gitTest.git。这两个地址有何区别呢?如果使用以https开头的地址进行关联,那么关联时需要输入github的账号和密码,在以后提交代码的时候同样需要输入账号和密码。如果使用SSH地址(以git@开头的地址),使用之前需要配置SSH KEY。配置完key之后,进行关联就不需要输入账号和密码,在以后代码提交的时候同样也不需要输入账号和密码,较使用https更为方便。
配置SSH KEY
我们使用SSH地址关联远程仓库,关联之前需要生成和配置ssh key。Windows下打开Git Bash,在命令行中输入
$ ssh-keygen -t rsa -C 'some comment'
然后一路回车,在回车过程中会要求设置key的密码,这里不进行设置,直接回车。最后默认回会在C:\Users\你的用户名\ .ssh路径下生成id_rsa和id_rsa.pub两个文件。id_rsa中保存的为私钥不能公开,id_rsa.pub为公钥可以随意公开。
我们也可以使用-f指定文件生成路径和文件名,-C后面表示生成key的注释,在生成的公钥中可以查看。
ssh-keygen用法如下图:
接下来,登录github,找到账号的settings,找到SSH and GPG keys配置项,点击New SSH key进行配置。如下图:
最后点击Add SSH key保存配置。
我们在平时的工作和学习中经常会碰到配置多个ssh-key的情况,可以参考这篇文章配置多个ssh-key。
将本地的git仓库关联到远程
配置完ssh-key后,进入本地仓库目录打开Git Bash,然后执行命令:
$ git remote add origin https://github.com/worm0527/gitTest.git $ git push -u origin master
执行完命令后就将本地的git项目关联到远程仓库了,以后就可以使用git push、git pull进行提交和更新操作了。
从远程仓库克隆
代码关联到远程仓库后,其他开发人员就可以从该远程仓库获取代码。使用命令:$ git clone https://github.com/worm0527/gitTest.git
二、分支管理
创建分支
有的时候开发新的功能,这时候就需要拉取新分支,等开发完成后再合并到主分支上。可以使用命令(如新建dev分支):$ git checkout -b dev
该命令的意思是创建并切换到dev分支。也可以将该条命令分成两条命令执行,如下:
$ git branch dev #创建名为dev的新分支 $ git checkout dev #切换到dev分支
创建完成可以通过git branch进行查看,如下图(当前位于dev分支):
推送分支到远程仓库
有的时候新功能开发需要多人协作完成,所以就需要将新建的分支推送到远程仓库,供合作的开发人员拉取进行开发使用。使用命令:
$ git push -u origin dev #远程分支名需要与本地分支名称相同,否则会推送失败
完成后,使用命令:
$ git branch -a
可以查看远程存在的分支,如下图:
如图,我们看到dev分支已经推送到远程仓库。通过以上操作后,我们就可以在该分支上进行协作开发。以后就可以直接使用git push进行代码的推送、git pull进行代码的更新。
其他开发人员,只要使用命令:
$ git checkout -b dev origin/dev
便可以将该分支拉取到本地。
注意:
我们同样可以使用git push origin dev命令推送新建分支,但是这样在以后的操作中就不能直接使用git push和git pull进行代码的推送和更新,直接使用会导致操作失败,会提示如下信息:
该提示信息告诉我们当前分支没有设置upstream,可以再次使用命令git push -u origin dev进行推送,其实该命令就是git push –set-upstream origin dev的简写。更为详细的解释,可参考Git push和pull的默认行为合并分支
开发完成并测试完毕后需要将dev分支的代码合并到master主分支。首先切换到master分支,然后执行命令:
$ git merge dev
删除分支
新功能上线完毕后就可以将该分支删除了。
删除远程分支可以使用命令:
$ git push origin :dev #删除远程分支
或者
$ git push origin --delete dev #删除远程分支
删除远程分支后再删除本地分支,使用命令:
$ git branch -d dev #删除本地分支
重命名远程分支
如,我们需要将远程的dev分支重命名为dev1。
可以先删除远程分支:
$ git push origin :dev #删除远程分支
然后,重命名本地分支:
$ git branch -m dev dev #重命名本地分支
最后,将重命名后的本地分支推动到远程:
$ git push -u origin dev1 #将重命名后的分支推送到远程