iOS Git基本使用

原创 2016年08月31日 18:29:32

一:Git简介和概念

SVN:集中式版本管理工具

Git:分布式版本管理工具, 由Linux之父开发, 先提交到 本地版本库的暂缓区】,然后在提交到本地仓库的【分支中】,最后将本地版本库提交到远程服务器的【共享版本库】


暂缓区(stage)

分支(master):在SVN中开发都是在trunk主线中开发,而Git会自动创建一个分支master,而Git是在master分支中进行开发的

HEAD指针:指向当前分支,Git可以创建无数个分支,可以用HEAD保存当前所在的分支

版本号:git版本号是由sha1算法生产的40位哈希值,SVN是用的数字从1开始累加


客户端管理工具:SourceTree、GitHub、Xcode


二:Git命令行操作

当Mac安装了Xcode的时候就安装了Git,所以Git不用再安装了

git  init     // 初始化本地代码仓库(包含.git文件)


git  config  user.name  "用户名"                      // 配置该仓库的 用户名和邮箱

git  config  user.email   "邮箱"     

git  config  --global  user.name "用户名"       // 配置全局的用户名和邮箱,所有仓库都共享这一套用户名和邮箱

git  config  --global user.email   "邮箱"

git  status                                                           // 查看状态

git  log                                                                //  查看版本信息

git  reflog                                                           // 可以查看版本回退的信息

红色:该文件被添加或被修改,但是没有添加到git的【暂缓区stage

绿色:在暂缓区但没有提交到本地版本库 


git   add  文件名                         // 将新添加的文件或修改的文件添加到  暂缓区,  . 代表将该目录下所有文件添加到暂缓区

git   rm    文件名                         // 从暂缓区中 删除,仍然需要提交到分支

git  commit   -m  "注释"      //  把暂缓区的所有内容提交当当前分支


git   reset  --hard   HEAD                     //  强制回退到当前最新版本

git   reset  --hard   HEAD^                   //  强制回退到当前最新版本的上一个版本

git  reset  --hard   HEAD~100      //  回到前100个版本


----------------------git 版本回退需要所有开发人员都要操作,比较麻烦-------------------------

git  reset  --hard  版本号     // 操作的是本地仓库

git  push  -f                       // 提交到共享版本库

这还不够,其他同事也需要进行回退 git  reset  --hard  版本号,然后重新拉去最新代码 git  pull, 一般回退需要版本备份,以免回退失败


git   tag                                      // 查看标记

git   branch   [-r]                       // 查看分支


版本备份:打tag

git  tag  -a  标记名  -m "注释"             //  本地操作

git  push  origin  标记名                     //  推送到共享代码库中


>   git  tag  -a  Weibo1.0   -m  "这是1.0版本" 

>   git  push  origin  Weibo1.0 

打分支:

1. 创建一个文件夹用于存放要修复bug的项目:如 Xxx1.0FixBug

2. 将共享版本库克隆到新建的bug文件夹中

>  cd /Users/macmini/Documents/GIT/Developer/manager/Weibo1.0FixBug 
>  git clone /Users/macmini/Documents/GIT/Server/Weibo 


3. 切换到tag,      git  checkout   标记名

因克隆是克隆共享代码库中的最新代码,我们需要将当前最新代码切换到之前打标记的tag的代码上

>  cd /Users/macmini/Documents/GIT/Developer/manager/Weibo1.0FixBug/Weibo 
>  git checkout Weibo1.0 

4. 创建并切换到该分支,        git  checkout  -b  <分支名称>

分支是在tag的基础上创建的,上步已经切换到tag上了

>  git checkout -b Weibo1.0FixBug 

5. 修复bug,并提交

6. 打tag

> git  tag  -a  Weib1.1  -m  "修复了1.0bug的1.1版本"
> git  push origin Weib1.1 

合并分支:

1.先从新建的分支中拉去最新代码,2. 再将代码推送到master分支中

Source Control --->  pull  (Xxx1.0FixBug)


Source Control --->  push  (master)



7. 删除分支

先切换分支并删除  

git  branch  -d   Xxx1.0FixBug                          // 删除本地分支

git  branch  -r  -d  origin/Xxx1.0FixBug          //  删除本地版本库分支

git   push   origin  --delete   Xxx1.0FixBug     // 删除远程版本库中的分支

> git checkout  origin/master
> git branch -d Weibo1.0FixBug
> git branch -r -d origin/Weibo1.0FixBug
> git push origin --delete Weibo1.0FixBug 

SVN中checkout用于检出代码, Git使用Clone,Git中的checkout 用于切换标记或分支


创建新人的共享版本库

1.在服务器上创建一个新的共享版本库文件夹

2.对该文件夹进行初始化共享版本库   git init --bare

3.添加远程共享仓库



4. Source Control --- Push (NewWeibo/master(create)) 

将当前代码推送到新创建的远程仓库中的master分支中,这样新创建的远程仓库就有代码了


5. 新人将新建的远程仓库代码克隆下来来查看项目

 cd /Users/macmini/Documents/GIT/Developer/lisi 
 git clone /Users/macmini/Documents/GIT/Server/NewWeibo 

给新人创建一个新的远程共享仓库让他下载而不是从之前的远程仓库中下载的目的是放在新员工恶意或胡乱操作,影响其他老员工的开发


注意:添加的或修改的都要通过add命令将文件添加到暂缓区,修改也要add操作



共享版本库

共享版本库可以有多种

1.  将文件夹作为共享版本库      git  init  --bare

2. 第三方代码托管平台(GitHub、OSChina) 


1.初始化共享版本库   

git  init  --bare       // 初始化共享版本库(共享版本库没有.git文件) 


> cd /Users/macmini/Documents/GIT/Server/Weibo 
> git init --bare


2.将共享版本库克隆到本地仓库

git  clone  共享版本库位置


> cd /Users/macmini/Documents/GIT/Developer/manager
> git clone /Users/macmini/Documents/GIT/Server/Weibo 


3. 忽略文件

touch  .gitignore     


> git add .

> git commit -m "添加了忽略文件.gitignore" 


该文件内容可以在github官网搜索.gitignore 找到Objective-C.gitignore粘贴该文件的内容到.gitignore里面,然后add到缓存区,再commit到分支中

// SVN 是先使用Xcode初始化项目,然后再进行忽略操作,然后再提交, Git是先做忽略操作,然后再使用Xcode初始化项目

4.初始化项目


直接使用Source Control ---> Commit 直接提交即可, 并提交到共享版本库里面  Source Control ---> Push 



注意:当提交到共享版本库中,去共享版本库库中去找初始化的项目是不能直接看见的,因为项目已经零散的放在objects中的多个文件夹里了


6.同事B将共享版本库的项目克隆到本地

git  clone  共享版本库路径


> cd  /Users/macmini/Documents/GIT/Developer/zhangsan 
> git clone /Users/macmini/Documents/GIT/Server/Weibo 

7. 开发并提交代码

Source Control ---->  commit  并 Push to remote:origin/master


GitHub

1. 创建仓库



仓库创建好之后,使用Xcode克隆项目
1. 首先先配置一下账号 Xcode---> Preferences--->Accounts----> + Add Repository...
HTTPS方式:


Source Control ----> Checkout ----> 选择远程仓库 ---> ...



初始化项目存储到Meituan本地仓库位置并Commit 并 push to remote, 再次查看github就有新项目了



认证的时候可以使用HTTPS,SSH两种方式

公钥:存在github上用来解密

私钥:存在本地.ssh文件下用来加密

生产SSH Keys:

Settings---> SSH And GPG keys ---> generating SSH Keys---> Generating a new SSH Key and adding it to the ssh-agent ---》

在命令行中执行  ssh-keygen -t rsa -b 4096 -C "your_email@example.com"   // 换成自己的邮箱, 然后一路回车 ----》

右键文本编辑器打开id_rsa.pub ,并粘贴文件中的所有内容 -----》

New SSH Key: 将内容粘贴到key中










版权声明:本文为博主原创文章,未经博主允许不得转载。

kidd风的IOS日志之源代码管理工具Git的基本使用

简单的介绍下Git 在应用程序开发过程中,很重要的一部分工作就是如何进行源码的版本控制。当代码出现问题时,我们就需要将代码恢复到原先正常的版本。如果是多个人共同开发一个项目,那么代码的控制就会非常复...
  • hmh007
  • hmh007
  • 2016年02月23日 20:27
  • 974

iOS git checkout之一 HEAD基本和detached 状态

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 1.HEAD基础 git checkout 实际上是修改HEAD文件的内容,让其指向不同的branch。...

GIT基本使用

  • 2014年08月10日 20:41
  • 1.76MB
  • 下载

git的基本使用

  • 2015年01月09日 18:01
  • 2KB
  • 下载

Windows下Git的安装和基本使用方法

Windows下Git的安装和使用Windows下Git的安装和使用 windows下安装Git 创建代码仓库Repository 提交代码到本地仓库 过滤部分文件 查看修改内容 撤销未提交的修改添加...
  • fengser
  • fengser
  • 2016年01月17日 16:30
  • 27165

Git的基本使用

  • 2015年09月03日 19:34
  • 2.31MB
  • 下载

git使用基本语言

  • 2017年11月14日 15:13
  • 95KB
  • 下载

Android基础入门教程——1.5.1 Git使用教程之本地仓库的基本操作

Android基础入门教程——1.5.1 Git使用教程之本地仓库的基本操作标签: Android基础入门教程Git是什么? 一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系...

git branch基本使用

  • 2017年03月14日 10:40
  • 197KB
  • 下载

git 基本命令使用

  • 2015年08月12日 14:04
  • 204KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS Git基本使用
举报原因:
原因补充:

(最多只允许输入30个字)