git仓库 和 sourceTree使用

787 阅读7分钟

GIT (分布式版本控制系统)

Git是一款免费开源分布式 版本控制系统,用于敏捷高效地处理任何或小或大的项目。

扯一些无关的: 苹果的Mac OS系统衍生于Unix(算的上是系统始祖~),而linux是一种类unix系统。

并且Git是linux之父(Linus Torvalds)当年为了维护linux,而发明的版本控制系统--Git!

常用的代码管理网站:

  • 国外的
    • 2.Gitlab:支持无限的公有项目和私有项目。 Gitlab地址:about.gitlab.com/
    • 3.Bitbucket:免费支持5个开发成员的团队创建无限私有代码托管库。 bitbucket地址:bitbucket.org/

  • 国内的:
    • 1.开源中国代码托管:一个账号最多可以创建1000个项目,包含公有项目和私有项目。 开源中国代码托管地址:git.oschina.net/
    • 2.coding.net(码市):一个账号最多可以创建1000个项目,也支持任务的创建。 coding.net地址:coding.net/home.html

git操作:

git操作 一览图


创建项目

我使用的代码管理网站 ----- 码市( CODE MART ) :mart.coding.net

进入官网,创建好账号后,选择 自己的头像下的“Coding.net”项。 点击“Coding.net”  进入代码管理页面 进入代码管理页面后,即可 创建项目了! 点击 创建项目

如下是创建 项目的填写内容! 创建 包含git仓库的项目 项目创建好之后,会显示 项目动态 创建好之后 可查看项目的动态 点击“代码”选项 ,跳转到 代码管理页面。 点击“代码”   到代码管理页面

⭐️选择访问仓库的方式:HTTPSSSH

选择访问仓库的方式:HTTPS、SSH

其中关于配置SSH公钥coding.net/help/doc/gi…

使用“SourceTree” ,进行项目的代码、仓库 管理。

输入 项目的URL ,从网络获取 项目的git仓库

使用“SourceTree”输入之前复制的项目地址   获取之前的仓库

不选择存储仓库 的目标路径,会默认用户 所使用的路径。

输入 之前复制的项目地址   克隆项目仓库

获取到项目仓库后:多出了“git_repository”仓库。即可对该仓库 进行 查看、管理了

获取到项目仓库后   即可查看、管理该仓库了

  • 点击右键,选择 在“Finder”中查看项目仓库

点击右键,在“Finder”中查看项目仓库

在“Finder”中查看项目仓库:

“Finder”中的 项目仓库

  • 点击右键,选择“打开”
    即可对仓库 进行管理、操作

点击右键,选择“打开”       即可对仓库进行管理操作了

在仓库里,引入Xcode工程

远程仓库本地仓库 创建好之后,即可 打开Xcode 在本地仓库里面的路径下 创建工程在仓库所在路径 创建工程

如下是项目工程的代码:(随便 写了一些内容) 工程中 添加一个富文本的Label

对自己的项目工程的(代码)编写 完毕后,在“SourceTree”里面查看 仓库状态了~~~ 查看 仓库的状态 已暂存文件 及 未暂存文件

点击“未暂存文件”,合并自己的代码与之前的代码。再填写 自己对项目的编辑 信息(即:对项目的工作内容) ,用于提交一个本地版本。 点击“未暂存文件”后,提交自己对项目的编辑信息 ⚠️:选择添加“未暂存文件”时,要剔除 开发中常出现的 .DS_Store文件等。 当然也可以操作 忽略文件(“.gitignore”文件)

提交项目信息、构建版本之后,查看 仓库本地(版本)信息提交项目信息、构建版本之后  本地仓库信息 点击推送后: 点击“确认” , 确认“推送到远程仓库” 推送到远程仓库成功: 推送到远程仓库 成功!!

在项目管理网站,查看项目版本 及 其最新信息最新 提交的项目版本及其信息 点击“提交历史”,查看项目仓库的 详细更改历史查看仓库的更改历史

点击“ViewController.m”,进入“ViewController”里面 查看之前的修改 或 进行修改查看之前的修改    点击“编辑”后,可对其进行编辑

编辑(移除多余行) 并 保存: 编辑(移除多余行) 保存 本次编辑 提交成功后的项目最新信息: 最新修改的信息

凡是对项目的远程仓库 进行过修改,下次使用项目工程时:要先抓取项目(防止多人开发时,之前搭档对代码的修改及合并。 造成版本不是最新的情况),保证当前项目的版本最新的。 也就是咱们在多人开发时,第二天最好重新拉取下网上的最新版本!除非你是最后一个走的~~😂😂😂😂😂

抓取(最新)远端项目仓库: 抓取 项目修改 抓取最新项目版本信息后,查看项目的修改信息: 项目管理网站上的修改:删除了 2行 项目管理网站上的修改:删除了 1行 点击“拉取”后,再点击“确认” 获取拥有最新信息的项目 : 点击“确认” ,获取拥有最新信息的项目 拉取 成功

再在“Finder”中,查看并打开 工程 在“Finder”中打开 工程

打开工程后:

打开工程后,查看 项目管理网站对项目的修改:</br>少了3行多余行

多人项目管理

将之前项目 再获取一份在本地(选择另一路径 且 为空文件夹)

从URL 克隆项目 点击选择另一个路径

为自己选择的路径 ,添加 仓库的项目名字: “git_repository”


Tips:自己选择的路径 必须空文件夹新文件夹,否则出现如下 提示:

无法克隆到非空文件夹 错误提示


最新拉取的 项目:

最新拉取的 仓库项目

即可开始 两个人同时开发一个工程!假设上方为开发者A下方为开发者B。 分别打开所在位置(右键 --> 在Finder中显示),打开工程文件! 工程文件的位置

开发者A、开发者B分别对工程做修改: 所做的修改

开发者A的版本信息: 开发者A 提交信息

开发者A推送成功后

对于开发者B,则需要重新拉取最新版本的工程!进行合并继续开发!当然也可以在最终自己的代码任务完全完成再合并!

先抓取开发者A修改后的版本

再拉取下来

把自己的版本提交到本地

合并代码块 😂😂😂😂😂😂😂 现在合并的话,会提示冲突!因为版本有不同的地方!

冲突的提示

合并与开发者A的冲突:

冲突展示图:sourcetree有冲突展示功能

合并冲突,提交 “冲突解决后”的版本:

提交到本地的版本

再推送到服务器: 推送完成后

由于最后一次是开发者B提交的版本!所以下次开发时:对于开发者A,必须抓取拉取最新版本! 开发者A 抓取最新版本

A抓取之后,再拉取

拉取到本地之后 即得到了最新版本~~


但是开发者B合并冲突时,不太细心(其实也就是我啦~~😂)

出现了小错误 开发者A帮助,修改错误代码: 修改之后的代码 修改之后,开发者A提交本地版本、推送到服务器! 提交修改信息

推送到服务器

所以开发者B,又需要重新抓取拉取一次 最新版本 (所谓:自作孽,不可活~😂😂😂) 抓取 拉取

拉取之后,版本与开发者A相同: 两者版本相同 这样开发者A与开发者B的项目版本一致了!

先、后工程版本的效果图

⭐️Tip:如果各版本同一处代码有不同修改,必然会有冲突



终端命令行的使用:

直接操作git仓库,更便捷简单!虽然没sourcetree那么直观、形象,但是对于两人的开发来说,也是做够了!

罗列出的Git命令,如下图: Git常用命令

Git的操作:

Git的操作

多人开发 及 命令行操作:

多人开发、命令行操作

使用情况

冲突

<<<<<<< HEAD

=======
                                    

>>>>>>> a3a4813c36a88970f43873546331581a490ea114

终端的一般简易操作:

git clone <url>               //克隆网络库

git init                      //创建本地仓库
git status					//(代码库)状态查看

一般操作步骤:

git add --all			   //表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文
件都添加到暂存区。

或者:
git add .			 



git commit -m"7.0"          //提交版本信息(⭐️本地⭐️)



git pull                    //拉取网络最新版本

    // 解决冲突.......	


git push                    //推送合并后的版本到网上

或者先解决冲突,再提交本地版本。

参:Git版本控制:Git冲突解决 相关错误总结 git多人协作代码合并流程

//查询操作指令:
git log						//打印历史版本
git reflog					//分支引用记录


// git reset --hard 81bef82		//重置旧版本

很久写文章了~ 这文章跨度几个月了,也是醉了。。。😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂






git pull --rebase

在D分支上执行 git merge B 后,D就被合到A上了。 在D分支上执行 git rebase B 后,效果与merge是一样的,但是“D-E”分支就没有了,两个分支就合在一起了。

2017.06.10

goyohol's essay