版本控制(git)iOS学霸笔记iOS从入门到精通 ∷ 工作篇

轻松使用SourceTree进行代码版本管理

2016-02-19  本文已影响16890人  Hermione__Hu

以前刚刚接触SourceTree的时候,觉得很简单,遇到冲突了去包文件里面删掉那些明显的标记,然后在谁也不知道谁删掉了谁的文件的情况下,只要不报冲突就算是自己给自己的版本推上去了,这样明显不是SourceTree的初衷
(其实我以前就是这么干的...现在觉得自己还是too young too naive...)
幸好,在我的老大Thomas的指引下,和我的好同事Poul的共同探讨+实践下,应该算是弄明白了SoucreTree的使用

大家都知道git是分布式的代码管理工具,理论上面大家都明白,可是实践高于理论,那么请尝试着采用以下的方法来理解它的原理吧!

准备工作

第一步:创建自己的本地分支

(服务器配置工作暂时不说了,这不是本文的重点)

你需要打开SourceTree,注意右侧BRANCHES,REMOTES,(如果你是第一次使用SourceTree的话,这个BRANCHES的类目下面基本上只有一个master,这个master是本地的master,REMOTES这个类目下也有一个master,这是服务器远端的master)

关键点:我们在BRANCHES这个类目下新建一个branch
方法如下图:

317264EB-EF22-4EDA-8E3F-2FB18085A37A.png

为了代码管理的方便,我们尽量遵循

工作流程

上班第一件事:merge

上班第一件事就是从服务器拉取其他同事的代码到本地进行merge
我们所要做的就是按照如下进行:

  1. 右击自己新建的DEV,选择checkout到master上,(如果已经是master就不需要切换了----如何分辨出当前在哪个分支下?答:当前的分支是粗黑体)中文版本为检出到master
  2. 然后点击fetch,从远端获取最新动态
  3. 然后点击merge,选中到最新的节点,OK即可
  4. 最后再checkout到自己新建的DEV,右击master选择merge master into DEV

这样就完成了合并代码

下班最后一件事:commit

务必记住在开始代码编写工作前请先checkout到DEV,直到工作完成,我们来commit代码

  1. commit自己写的的文件,这样自己的文件就被提交到了自己的DEV分支中
  2. checkout到master,然后右击DEV,选择merge DEV into master
  3. 将working space中不需要commit的文件或者需要解决冲突的文件discard掉
  4. push到远端即commit成功
  5. 注意提交成功后切换到DEV

最后附上一些参考资料,感兴趣的可以看看

中英文版本的GIT Document

感谢你们!


2016.2.24补充:
当我编写代码完成,发现远端有新动态,此时的操作:

  1. 先将Working Copy中需要commit的文件commit到DEV上(在comment区域做上自己的版本注释)
  2. 切换到master上,选择merge DEV into master(此时SourceTree会告诉你,你当前落后了多少超前了多少,如果没有这样的提示,就fetch一下远端)
  3. 进行merge(将本地的master与远端的master进行合并)
  4. 没有问题,push到远端
  5. 切换到DEV,选择merge master into DEV

2016.3.2补充一:
除了使用merge的方式和代码,还有一种是rebase,探索中......
2016.3.2补充二:(IMPORTANT----可有效避免冲突的发生频率)

E5A8EE98-853A-4888-AB1B-40B4C6834B8F.jpg

在SourceTree的设置中,如上图修改文件为以下文件

Mac OSX

*.DS_Store

Xcode

*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
*.xcuserstate
project.xcworkspace/
xcuserdata/

#Git
.gitingore
.gitingore.swp


2016.3.8补充:
尽量不要使用pull,我的理解是pull是一种强制将远端拉取下来,所以尽量使用fetch吧,这样才能更好的合代码
另外,在遇到冲突时,可以进workingcopy去看看是什么文件冲突,右边会有红绿色块,并且也会有冲突标记,在这里,你可以进行选择性discard(丢弃)不需要的代码来解决冲突

按照上述的工作方式,我已经和同事合作了一段时间,效果还不错,给我们的工作带来很多便利
如果有任何问题可以问我,我尽量解决~O(∩_∩)O

上一篇下一篇

猜你喜欢

热点阅读