前言
上一篇讲到git在windows本地的操作,接下来就开始远程操作了
前期准备
注册github帐号, 生成本地电脑的key1
ssh-keygen -t rsa -C "youremail@example.com"
输入文件名中输入自己要保存的文件名,这里我输入id_rsa_home,因为我有两个帐号, 我要自己区分一下
之后将id_rsa_home.pub中的内容全部复制到SSH KEY中
测试是否成功1
ssh -T git@github.com
建立仓库
在github上建立一个仓库:scrapyStudy(这里我拿scrapy学习举例子)
克隆远程仓库
1 | #进入f:\github |
分支
我们在github上新建一个仓库的时候, 发现默认是master分支,为什么会有分支,假如现在我们要开发一个新的功能,可能要一周的时间,这个时间段里面我又要保证我原来的代码是不变的,因为我不想在一个功能还没开发测试OK前就把原来的代码弄乱,这个时候我想到的方案就是重新建一个仓库, 然后把现在master的代码拷贝过去,等我把功能开发完了再合并进来,但是问题来了, 是不是每次开发yi个功能都要新建一个仓库,而且合并起来不是很美麻烦, 现在分支出现了, 它就像一棵树上分叉了, 你从一个枝丫上去开发新功能, 完了直接使用合并命令, 还可以直接回退到枝丫分叉的地方
创建分支
现在HEAD指向的是master分支(默认的),现在我们创建一个分支dev并切换到dev分支1
git checkout -b dev
然后添加一个文件并提交
查看分支
切换分支
我们现在在dev分支, 我再想回到master怎么办1
git checkout master
我们看到dev.txt文件消失了, 我们体会一下,我们切换到master分支,是不是就像从一个枝头跳到另一个枝头,master枝头的地方我们并没有生成dev.txt文件
合并分支
开发完dev功能之后我们想合并到master分支1
2
3#首先切换到master分支
git checkout master
git merge dev
我们发现dev.txt文件回来了,现在明白了一切了
删除分支
dev分支合并完了, 可以删除了1
git branch -d dev
远程上传
现在对分支的整个操作都是在本地操作,github上还没有任何更改,我现在把master分支推送到远程github1
2#git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master:master
解决冲突
开发过程中我们会有多人同时进行,如果两个开发人员同时修改了一个文件A, 开发人员M
他首先提交了文件A到github,这个时候开发人员N没有也修改了文件A, 他试图去提交的时候就会出现问题,我们来演示这个过程
我使用虚拟机安装ubuntu,模拟另一个开发人员
M开始修改dev.txt1
2
3
4
5git config user.email "970049212@qq.com"
vim dev.txt
git add .
git commit -m "modify dev.txt"
git push origin master:master
之后N(windows)也开始修改dev.txt并提交
无法提交到远程
我们需要先解决冲突然后再提交
打标签
常用的git命令
1 | git clone 'url://' |
注意点
解决冲突了,不能强制的把别人的代码盖掉了。一般这个流程,开发完后先add->commit后,再先git pull把服务器上别人的更新拉下来,如果没有冲突就好办,就直接把自己的代码push到服务器,但是就是要保证自己提交的代码是可以运行的,不能有错的直接push上去了
如果把服务器上别人的更新pull下来,出现冲突了,就得先把冲突的文件全部解决掉,然后再走一遍git add->commit->push的流程就好了
然后就是定期pull,最好一天一次
pull之前自己的代码要先git add commit就行了