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

以前刚刚接触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

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

  • 只能让本地的master向远端的master进行提交工作
  • 忽略工程中二进制文件的改动(建议将二进制文件与代码文件区分路径存放,这样在暂存的文件中我们比较容易识别出哪些文件可以不进行commit,以避免不必要的冲突)
  • 还有不得不说的是,尽量在提交和合并的时候完全Quit出XCODE

工作流程

上班第一件事: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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 因为原文太长超出字数,Lesson 3 就放在另一篇文章里 How to Use Git and GitHub 标...
    赤乐君阅读 10,698评论 1 5
  • 源代码管理工具的起源 为什么会出现源代码管理工具? 为了解决在软件开发过程中,由源代码引发的各种蛋疼繁琐问题 源代...
    小白文_Vincent阅读 8,712评论 2 8
  • 顺序:房,路,树,秋千,人,草,花 性别:男 年龄:24 想要解决问题: 毕业两年依旧迷茫,对未来特别焦虑。不清楚...
    喜拓斋阅读 3,767评论 2 2
  • 西南联大起于忧患。 “七七事变”,日本全面侵华,中国全面抗战爆发,日军自北而上入侵,北大、清华、南开这三所大学被迫...
    北冥有鱼呀阅读 5,866评论 1 9
  • 生命最是无常,也最是情理之中。 此刻的思绪是被外面的鞭炮声引起的,鉴于最近发生的事,我心觉这“声”怕也...
    等冬阅读 2,600评论 0 0

友情链接更多精彩内容