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

首先, 了解下什么是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接入百度自动更新SDK

    一:前言 公司的app,上传到百度应用市场,然后说必须要接入百度的自动更新sdk才能上架,于是从百度官网上去下载jar包,下载的时候必须要带上数据统计,如果使用自动的jar包,还需要带上广告联盟,坑爹 ...

  2. Target-Action回调模式

    前面的博客中提到过回调的概念,是在OC通过协议来实现的回调,和Java中的接口的回调极为相似,下面来介绍另一种方法回调模式: Target-Action回调.首先我们来从字面意思来理解一下Target ...

  3. Hibernate学习之——Hibernate环境搭建

    之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...

  4. Expression Template(表达式模板,ET)

    1.前言 在前一篇文章自己实现简单的string类中提到在实现+操作符重载函数时,为了防止返回时生成的临时对象调用拷贝构造函数动态申请内存空间,使用了一个叫move的函数,它是C++0x新增的特性.既 ...

  5. APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例

    前言     前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相 ...

  6. mybatis入门基础(八)-----查询缓存

    一.什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 1.1. 一级缓存是sqlSession级别的缓存.在操作数据库时需要构造 ...

  7. html+css+js 模拟win7桌面

    不贴代码了,直接上传附件. 附件下载: win7desktop

  8. 将GridView数据导入到excel,并提供下载

    之前项目中需要一个导出数据到Excel的功能,现在将代码记录下来.其实将girdView中的数据导出的代码很简单,如下: ) { Response.Charset="GB2312" ...

  9. 修改nginx版本名称伪装任意web server

    如何修改nginx默认的名称,可以稍微的伪装一下,也可以装x 一般来说修改3个位置,一个是nginx.h.另一个是ngx_http_header_filter_module.c.还有一个ngx_htt ...

  10. Java--JDK动态代理核心源码解析

    1.首先我们了解一下JDK动态代理的使用方法: public static void main(String[] args) { /** * 创建一个Bean对象,该对象实现BeanInterFace ...