新手了解 有不对的地方指点下

首先, 了解下什么是GIT,GIT是一款开元的分布式版本控制工具, 在世界上的所有分布式版本控制工具中,GIT是最简单,最流行,同时也是最常用的

相比于其他版本的控制工具而言,GIT也有着自己的特点

举个例子,GIT与集中式版本控制中的SVN相比来说,区别主要在于以下几点:

1 很多情况下, git的速度远远比SVN快

2 SVN是集中式管理, git是分布式管理

3 SVN使用分支比较笨拙, git可以轻松拥有无限个分支

4 SVN必须联网才能工作, git支持本地版本的控制工作

5 旧版本的SVN会在每一个目录置放.svn, git只会在根目录下拥有一个.git

集中式版本控制

分布式版本控制

话不多说 回到主题上,命令行实现个人开发,和团队开发的GIT使用

因为涉及到隐藏文件的显示,所以实现打开隐藏文件的显示

全部显示
defaults write com.apple.finder AppleShowAllFiles -bool true
全部隐藏
defaults write com.apple.finder AppleShowAllFiles -bool false

个人开发演练的代码

1.进入到所需工作的目录, 并且初始化一个代码仓库

lanoudeMac-mini-5:~ lanou$ cd /Users/lanou/Desktop/GIT演练/个人开发
lanoudeMac-mini-5:个人开发 lanou$ git init
Initialized empty Git repository in /Users/lanou/Desktop/GIT演练/个人开发/.git/

2.需要给GIT仓库配置一个用户名和邮箱,如果不配置的话,会自动设置你的用户名为电脑用户名,邮箱为电脑用户名@apple.com,因为后面涉及到针对用户的管理,所以需要

设置用户名

lanoudeMac-mini-5:个人开发 lanou$ git config user.name "weiboqy"
lanoudeMac-mini-5:个人开发 lanou$ git config user.email "weiboqy@163.com"
lanoudeMac-mini-5:个人开发 lanou$

设置好后并没用任何的显示,可以在工作目录下的/.git/config文件中查看自己输入的用户名和邮箱是否存在

3.初始化代码

lanoudeMac-mini-5:个人开发 lanou$ touch main.m
lanoudeMac-mini-5:个人开发 lanou$ git add main.m

touch main.m的作用是在工作目录之下,.git目录之外创建一个main.m文件 ,这个文件我们用来实验

git add main.m 作用是 将工作区的代码 添加到暂缓区中

lanoudeMac-mini-5:个人开发 lanou$ touch main.m
lanoudeMac-mini-5:个人开发 lanou$ git add main.m
lanoudeMac-mini-5:个人开发 lanou$ git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: main.m(绿色) lanoudeMac-mini-5:个人开发 lanou$ touch main.h
lanoudeMac-mini-5:个人开发 lanou$ git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: main.m(绿色) Untracked files:
(use "git add <file>..." to include in what will be committed) main.h(红色) lanoudeMac-mini-5:个人开发 lanou$

4.git status 查看文件的状态

Untracked files(红⾊色⽂文件):新添加的⽂文件或者新修改的⽂文件在⼯工作区中,没有被添加到暂 缓区.
Changes to be committed(绿⾊色):将⼯工作区的代码已经添加到暂缓区中,可以被提交到
代码仓库中了

这时候需要了解下GIT的几个核心概念了

工作区:工作文件夹(仓库文件夹)除.git目录以外的内容

版本库:.git目录,用于存储记录版本信息

暂缓区(stage)

分支(master):git自动创建的第一个分支

git add:把文件修改添加到暂缓区

git commit:把暂缓区的所有内容提交到当前的分支

5.修改文件

lanoudeMac-mini-5:个人开发 lanou$ open main.m
lanoudeMac-mini-5:个人开发 lanou$

open main.m  直接打开,修改好之后保存 git add main.m 添加到暂缓区

如果一个一个文件 添加到暂缓区会比较麻烦, git add . 可以讲工作区的所有文件到添加到暂缓区

6.给git命令起别名

lanoudeMac-mini-5:个人开发 lanou$ git config alias.st "status"
lanoudeMac-mini-5:个人开发 lanou$ git config alias.ci "commit -m"
lanoudeMac-mini-5:个人开发 lanou$

如果每次都是输入很长的命令,会比较麻烦,所以这就有了别名的存在

git config alias.别名 "本来的命令代码"

相比于这样而已,会有很大的便利之处

7.查看历史版本

lanoudeMac-mini-5:个人开发 lanou$ git log
commit 503c029c159acb0caa86a178715b1193733b2e34
Author: weiboqy <weiboqy@163.com>
Date: Sun Mar 27 20:10:34 2016 +0800 main.m
lanoudeMac-mini-5:个人开发 lanou$ git reflog
503c029 HEAD@{0}: commit (initial): main.m
lanoudeMac-mini-5:个人开发 lanou$

如果想查看历史版本的话,必须要将文件提交到分支中,也就是git commit命令

查看历史版本有两种方式,如上行所示,当历史版本较多时,建议使用git reflog

GITde 版本号是有sha1加密算法生成的40位哈希值,所以非常复杂。。

那为什么有历史版本的作用呢,比如说,现在使用的文件被我用炸了,没有太好的办法进行恢复,那么我只需要回退到某一个时期的历史版本就迎刃而解.

8.历史版本回退

lanoudeMac-mini-5:个人开发 lanou$ git reset —hard HEAD //回退到当前,但还没有上传到分支的版本
//不做解释了,因为版本数目不够
git reset —hard HEAD^ //回退到前一个版本
git reset —hard HEAD^^ //回退到前一个的前一个版本
git reset —hard HEAD~100 git reset —hard 版本号前7位 //会退到前100个版本

团队开发演练的代码

团队开发可以使用文件夹/GitHub/oschina来进行代码共享

1.文件夹共享

如果所示的关系,weibo作为代码共享库

所以先创建好weibo的仓库, 成为代码共享库

lanoudeMac-mini-5:weibo lanou$ cd /Users/lanou/Desktop/GIT演练/团队开发/代码共享库/weibo

lanoudeMac-mini-5:weibo lanou$ git init --bare

git init --bare, 成为代码共享库, 因为是成为代码的共享库,所以不能是简单的gie init

2.项目经理将代码共享库的内容克隆下来(clone)

lanoudeMac-mini-5:项目经理 lanou$ git clone /Users/lanou/Desktop/GIT演练/团队开发/代码共享库/weibo/

3.项目经理初始化项目

创建一个忽略⽂文件: 在和.git等级⺫⽬目录下创建⼀一个.gitignore⽂文件,在该⽂文件中指定需要忽略的⽂文件

在GitHub搜索.gitignore排名第一的就是 或者可以去https://github.com/github/gitignore/blob/master/Objective-C.gitignore查看OC需要忽略 的内容,将内容填写到. gitignore中

4.将.gitignore添加到暂缓区并提交到分支

git add .

git commit -m "注释"

5.创建项目

不能在项目经理目录下的微博下创建项目,因为已经包含了 Git repository,所以要返回到上一个目录下创建

在使用完毕之后 都要遵循以下一个顺序

修改代码—>git commit(提交到本地) —>git push (上传到服务器)

在使用前都需要pull下,以便别人修改了你没有看到

如果有其他人需要加入开发,需要git clone 共享代码库的地址

需要注意的是 代码冲突,以及storyboard的冲突问题

建议在团队合作的时候 不要使用storyboard, 尤其是共用一个storyboard,特别容易发生冲突, 哪怕是移动storyboard的位置。

附上一张总结性的图

GIT命令行的使用的更多相关文章

  1. Git命令行(转用于学习和记录)

    Git命令行介绍和使用说明(持续更新) 参见:<Git 中文简体教程> 一. 命令“git”或者“git help”查询常用命令 [add]: “git add”——不但是用来添加不在版本 ...

  2. windows下使用TortoiseGit代替Git命令行操作

    windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...

  3. git命令行工作的正确姿势

    git命令行创建并提交新分支到mater分支的常规步骤 git branch new_branch git status 查看修改的文件 git add changed_files git commi ...

  4. 【重要】使用Git命令行上传到GitHub上

    [本人GitHub账号:] 用户名:chenhongshuang 密码:shuangshuang6300 邮箱:2452420371@qq.com 进入GitHub账号后 1·新建项目文件名称例dem ...

  5. git 命令行

    在使用 git 命令行之前需要下载安装软件官方网站:https://git-scm.com/window 或者 mac 等其它版本自行下载 使用方法一:安装后在项目文件夹中右键菜单会有个 Git Ba ...

  6. git命令行工作环境配置【转】

    转自:http://www.cocoachina.com/ios/20171115/21163.html 本文为CocoaChina网友whf5566投稿 前言 笔者一直使用git的图形化工具sour ...

  7. git 命令行下浏览器tig使用记录

    git 命令行下浏览器tig使用记录 tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. 以下是一些使用记录: 安装成功后,在 Repo 文件夹下, ...

  8. Git的基本使用方法和安装&心得体会(使用git命令行)

    这是补发的,使用命令行操作的. (1)选择本地repository的路径 找到后点鼠标右键,选择git bash here. (2) clone到本地 在命令行输入 git clone ADDRESS ...

  9. 每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1

    每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1 -b 12.0:分支 12.0 --depth 1:depth 克隆深度,1 为最 ...

  10. 如何通过Git命令行把代码提交到github上

    1.http://www.cnblogs.com/leesf456/p/5169765.html   参考博客 背景:最近入手了mac,看见mac上的大神都是在用git命令行推代码,我很羡慕有木有,好 ...

随机推荐

  1. Android微信分享图片大于32k进行压缩

    微信分享视频的时候,需要传一个图片数组,大小不能大于32k. 解决方案:使用Bitmap自带的compress方法解决了这个问题. 源码如下: <span style="font-si ...

  2. MyCAT常用分片规则之分片枚举

    MyCAT支持多种分片规则,下面测试的这种是分片枚举.适用场景,列值的个数是固定的,譬如省份,月份等. 在这里,需定义三个值,规则均是在rule.xml中定义. 1. tableRule 2. fun ...

  3. 虚拟机利用Host-only实现在不插网线的情况下,虚拟机与主机实现双向通信,实现ssh连接以及samba服务实现共享

    为了不影响其他的虚拟网卡,我们在VMware下在添加一块虚拟网卡: 然后点击Next,选择连接方式: 点击Finish即可. 重新启动虚拟机,如果这是你手动添加的第一块虚拟网卡,那么应该是eth1. ...

  4. Matrix Factorization SVD 矩阵分解

    Today we have learned the Matrix Factorization, and I want to record my study notes. Some kownledge ...

  5. Nancy之区域和分部视图的使用

    一.前言 在MVC中,区域(Area)和分部视图(PartialView)应该是我们用的十分频繁的两个东西 今天我们就在Nancy中,把这两个东西简单的用起来!   二.简单使用之区域 区域,无论是对 ...

  6. SqlServer 分页查询

    1.not in方法 select top 10 from books where id not in (select top 30 id from books)   2.row_number()函数 ...

  7. webControls与客户端脚本路径

    网上有用的资料不多,在一本电子书中摘抄了内容如下 webControls配置节只有一个clientScriptsLocation属性,此属性用于指定ASP.NET客户端脚本的默认存放路径.这些文件是包 ...

  8. 自定义分页控件PageList

    using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...

  9. for xml path 将单表中一个字段用逗号分隔

    我也是才知道这种用法的,刚好又用到写个简单的例子. select Name from tc_order_detail 如下表,现在要将做到将name每个以逗号连接 declare @df nvarch ...

  10. html 空链接 href="#"与href="javascript:void(0)"的区别

    #包含了一个位置信息 默认的锚是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#但跳动到了页首 而javascrip ...