参考 上一篇 完成本篇博客,本篇为做者原创,仅供学习参考。html
本篇博文在上一篇的基础上这里记录了个人一个小模拟练习。本篇做为本身的学习笔记,也意在方便其余人的学习使用,达到分享目的。下面主要是操做截图 参考 cankao 参考linux
首先这里我要重点说明一下:git 与 svn 的区别,git 是分布式的管理服务器,一个很好的应用就是 gitHub 网站。是 Linux 内核开源的做者使用27天时间编写成功的,是否是很是牛逼(参考 )。svn 是一个集中式的服务器。集中式的服务器对网络的要求比较大,若是没有网络,他就不能很好地为咱们服务,这也是我为何要分享一下git的使用的缘由之一。可是较大的公司通常仍是出于保密不会使用第三方的托管工具,他们通常都会有本身的内网和代码管理工具。git可以在没有网络的状况下完成对版本的回复,提交修改源码,仅仅在同步服务器的时候须要网络(将本地的服务器仓库副本上传到公司的服务器本来中)。git
首先创建如下文件夹,下面默认已经打开显示隐藏文件(这个请参照上一篇中的命令)注意,下面出现的中文文件夹,没有试验成功,须要修改成英文的名字,这样就可以进行了提交版本等等实验。因为截屏要花费时间,因此下面的博文,从不能实现的地方我进行了修改了英文,前面的重点是一些操做步骤。程序员
将初始化 服务器数据仓库 为远程仓库(就是咱们Project要托管的地方),打开终端,输入命令以下:服务器
经理须要在 项目经理 文件夹中 克隆服务器仓库副本到本地 ,而后再建立工程框架,建立一份滤过性说明文件 .gitignore ,最后将建立好工程框架的数据仓库副本推送到服务器仓库(push),截图以下:网络
在终端中找到路径为 项目经理/数据仓库 的路径,而后为该服务器副本仓库配置用户名,邮箱,而后添加一个工程到副本内部,注意:滤过文件(.gitignore)与(.git)还有 工程文件 三个在同一级目录(服务器副本文件夹)中。下面省去了用户名,邮箱配置,截图以下:框架
下面是将上面作好的工做,推送到公司服务器仓库中:分布式
程序员张三,去从公司服务器仓库 获得整个项目:ide
下面假设李四 和 王五 都作了上面的步骤,这样 三四五都开始编码了,第一天开工了:svn
张三工做,张三打开从服务器上克隆下来的工程文件,开始了本身的编码,编码一天了,开始提交本身的工做到公司服务器。
commit 的时候 顺便再勾选一下左下角的 push to remote
经理晚上要看看张三这我的,这一天的任务量是否完成
点击 Xcode菜单栏上的source control -> pull 进行更新
在pull的时候遇到错误以下:
能够这样的解决:
点击 Xcode菜单栏上的source control -> Discard All Changes 进行将之前的更新撤销,而后再从服务器拉取更新就OK了
作到这里竟然张三提交到服务器的内容,对张3、经理、其余人都不能pull下来。这里我仔细检查了半天,都没有问题啊,缘由是我采用了中文的名字,在生成路径的时候,很是的容易出错,致使系统不能认出来了,因此之后仍是要写成字母为好。下面我又新建的文件,开始继续上面的操做。
注意,user.anme user.email 是必须写的,否则在提交代码的时候会给出警告,不能提交,这里若是忘了,能够在终端输入设置用户名和用户邮箱的命令。
这一次我快速的建立了字母的格式的文件夹,就行了,解决了上面的问题。那么下面我就要基于我字母格式文件夹来模拟操做了。
好了下面的模拟很简单,文件名字也很简单(经理-jl,张三-zs ,王五-ww ,公司远程服务器-sever)
下面模拟王五开始干活,在工程中操做:
接下来,王五提交任务到服务器
因为缺乏用户名与邮箱,上传到服务器的时候,以下:
解决办法:
如今就能够了,提交以后。jl打开而后pull 就能够看到ww(王五)作了什么工做了。
经理要的操做:打开工程-Source Control ->pull....
第二天,张三来的很早,第一件事就是从服务器上down一份最新的工程代码
下载以前:
下载以后:(pull)
致此,已经模拟了项目经理上传框架,员工下载框架,员工上传本身的任务、经理下载查看任务完成状况。
之后我还陆续更新,分支的使用,感受写博客是一件费时的事情,可是呢也有收获,本身可以再一次的学习理解,分享,还能在遗忘的时候快速回顾。
假设这时候公司来了一个新的员工叫 wm(王麻子)
建立分支: $ git branch mybranch 切换分支: $ git checkout mybranch 建立并切换分支: $ git checkout -b mybranch 更新master主线上的东西到该分支上:$git rebase master 切换到master分支:$git checkout master 更新mybranch分支上的东西到master上:$git rebase mybranch 提交:git commit -a 对最近一次commit的进行修改:git commit -a –amend commit以后,若是想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^ 合并分支:(merge from) $ git checkout master $ git merge mybranch (merge from mybranch) 删除分支: $ git branch -d mybranch 强制删除分支: $ git branch -D mybranch 列出全部分支: $ git branch 查看各个分支最后一次提交: $ git branch -v 查看哪些分支合并入当前分支: $ git branch –merged 查看哪些分支未合并入当前分支: $ git branch –no-merged 更新远程库到本地: $ git fetch origin 推送分支: $ git push origin mybranch 取远程分支合并到本地: $ git merge origin/mybranch 取远程分支并分化一个新分支: $ git checkout -b mybranch origin/mybranch 删除远程分支: $ git push origin :mybranch rebase: $ git checkout mybranch $ git rebase master (rebase from master) 举例: $ git checkout server $ git rebase –onto master server client $ git checkout master $ git merge client (fostforward) $ git rebase master server (checkout sever) $ git merge server $ git branch -d client $ git branch -d server
(Over 版本控制仅仅是很浅的学习到这里,之后还要继续学习git的知识,这篇博文话费时间最久,决定之后要减小写博客的时间)因为我的使用习惯问题,实验作完了,能够将原本的隐藏文件设置为隐藏状态了,请看 上一篇 中的命令行。(本人用的是 mac 10.11 目前最新苹果系统)
PS:在公司里请不要随意的升级系统,若是你升级了系统,与你的已经作了一半的工程里面有东西不匹配了,工程报红,就是你的责任了,你会挨批,会很差过的。因此注意不要擅自升级公司里本身的系统。