Git开发流程图如下:
Remote Server上最重要发布的版本是图中Trunk Repository这个仓库,所有开发人员在Git上fork出自己的仓库,也就是图中Your GitHub Repository这个仓库。
为了方便测试,自己可以注册两个github的账号,我的Trunk的github账号是yejingtao;另一个账号yejingtaomgtv模拟remote server上的成员账号,用yejingtao账号创建主仓库,yejingtaomgtv从主仓库的fork按钮fork出一个个人仓库。
右侧本地部分分为绿色和彩色两大部分,绿色是工作区,也就是你代码编写、运行、调试的区域;ABC等彩色部分是暂存区,暂存区是本地与Remote交互的缓冲区。
将自己Remote的git仓库clone到本地
$git clone https://github.com/yejingtaomgtv/testgit.git
如果需要指定remote版本clone,添加-b branchname参数
通过git status来查看代码状态,如下图我status了两次,第一次是刚clone下代码时,第二次是修改了部分文件后。
然后自己开发过程提交代码分为add和commit两布
$git add .
Or
$git add [filename]
常用是这两个,第一个是添加当前目录下所有变更文件到缓冲区;第二个是指定文件名的方式。
提交代码
$git commit –verbose
如果你看到如下报错:
是因为remote git需要你的认证信息,可以根据提示通过git config来配置自己的账号密码信息。
$git config --global user.name"yejingtaomgtv"
$git config –global user.email“[email protected]”
配置成功后再次执行:
$git commit –verbose
该页面看起来花花绿绿,其实只需要关注红框的部分:
1, 提交的版本
2, 绿色的是变更的文件的列表
3, 后面详细部分,白色的是没有变动的,不需要关系,红色减号开头的是被删除的,浅蓝色加号开头的是被添加的。其实我只是在两个文件中各添加了一行”new”而已,不知道为什么git把原本的最后一行也做了删除和添加的操作。
你也可以只git commit,省略修改细节,而且强烈建议通过-m给你的更新添加一些注释,我常用的提交命令:
$git commit -m “修改注释信息”
以上只是将工作区代码提交到了本地仓库,你可以留意下你github上的代码都没有被修改。
在push到Remote仓库前需要获取最新的Trunk Repository的代码,因为很可能你的小伙伴在你开发的工程中做了版本更新。
首先要在本地再添加一个远程的Trunk Repository的分支,在我的案例中就是yejingtao的远程git地址
$git remote add upstream https://github.com/yejingtao/testgit.git
为了方便测试,自己去yejingtao的github上修改一些内容,来模拟主线版本的更新。
OK,下面将主线代码更新到本地,也就是上图第5步:
$git fetch upstream
这里只是将Remote Trunk更新到了本地的缓冲区,你可以去自己的文件系统里也就是工作区去看一下,并没有真正更新到你的项目。
$git merge upstream/master
如果看到下面报错,说明版本冲突了,需要通过git log命令查看下
$git log -p upstream/master
同样只需要注意加减号就行了。
Merge结束后,再执行一下git status,
如果刚才merge有冲突的地方你会发现你的工作区冲突的文件变成了:
<<<<<<< HEAD
new
=======
55555555
>>>>>>> upstream/master
等号上面是你本地缓冲区的内容,等号下面是你刚从upstream里merge下来的内容,自己手动修改下决定如何处理。
修改完毕后,请继续add、commit,然后执行上图第7步操作:
$git push
Push成功后你自己的Remote仓库里的版本就更新了,你如果想合并到Trunk版本,需要向管理员发起merge请求,由Trunk管理员review完你的代码后确定合并。