1、相关概念
[1]git 远程仓库。是代码服务服务器中的一个地址。使用git remote –v可以查看远程库地址
C:\MyProjects\gits\android>git remote -v
origin ssh://[email protected]:29418/Wireless/android (fetch)
origin ssh://[email protected]:29418/Wireless/android (push)
origin 是远程库的别名。
[2] git 本地仓库。是本地代码的存储的仓储。可以使用 git init初始化一个本地仓库,也可以使用git clone 从服务端复制一个仓库到本地。
git clone ssh://[email protected]:29418/Wireless/android
ssh:// 是通信协议, [email protected] 是在git 服务器上的用户名,29418 是端口号,Wireless/android 是库名
[3] 本地Index 库。是本地暂存的代码库,需要提交到本地仓库的代码需要首先添加到Index库。
[4] 工作空间。变更信息都存在该库里面。
[5] stash.可以理解为工作空间的一部分,是工作空间中的保存的一次变更。
2、相关命令
[1]从服务端拉取代码: git pull 与git pull –rebase
git pull是简单的拉去服务端的代码并与本地代码合并。
git pull –rebase拉取代码后,并将远程最新提交点作为本地代码提交的基点,再进行合并。 【推荐方式】
从上述图片中看一下git pull的作用。
[1] 在14:33 zfzeng提交了6.6视觉问题的代码,之后 hejin和xiajw两位同事都在这个提交之后工作,他们的起始代码状态是一致的,代码基点(base)都是6.6视觉问题.
[2] 在14:35 hejin完成了一次开发,提交酒店日志代码merge到服务端。期间,没有其他同事提交新代码。
因此hejin提交是在本地base之上,也是服务端最新代码之上做的提交。提交之后,服务端的最新提交变成酒店日志代码merge,而不是之前的6.6视觉问题。
[3] 在14:41xiajw提交了Flight单程推往返,在他本地base仍然是6.6视觉问题,但是由于服务端有的新的提交酒店日志代码merge,因此,提交到服务端之后,服务器做了合并工作,产生了Merge”Fligt 单程推往返” into rel/6/7
从上图看到。出现了两条分支线合并的情况。这种方式可以保持单个分支较为清晰的历史记录。即:Flight单程推往返 是在6.6视觉问题基础上开发的。
弊端:出现两条分支线,比较复杂,如果有更多用户,分支情况更加复杂
git pull –rebase的作用
同样可以拉去到服务器最新的代码。如果xiajw先做git pull –rebase,就会保持分支线是直线。即将酒店日志代码merge拉去到本地,并将其作为Flight单程推往返的基点。变成如下的路径:
2 Flight单程推往返
1酒店日志代码merge
0 6.6视觉问题
git pull –rebase 要求workspace和index是干净的。
3、工作流程:
3.1 git checkout –b rel/6.7 origin/rel/6.7
3.2 git status
3.3 git add ./file_pathes 或者 git rm file_pathes
3.4 git commit –m “comment”
3.5 git stash
3.6 git pull –rebase
3.7 如果有冲突,则需要merge冲突
3.8 如果解决了所有冲突,运行下面命令 git rebase –continue.
3.9 push代码到远程分支,或则指定分支。git push或git push origin rel/6.7:refs/for/rel/6.7