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

首先, 了解下什么是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. DDD 领域驱动设计-看我如何应对业务需求变化,领域模型调整?

    写在前面 上一篇:DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对? "愚蠢的应对",这个标题是我后来补充上的,博文中除了描述需求变化.愚蠢应对和一些思考,确实没有实质性 ...

  2. [c++] Templates

    Template是编译时多态.所有的模板都是在编译时产生对应的代码,它没有面向对象中的虚表,无法实现动态多态. Function Template A function template is a p ...

  3. php相册功能实现(包含php图片上传,后台管理,浏览和删除)教程例子

    相册功能实现(包含php图片上传,后台管理,浏览和删除)教程例子包括五个部分: 一.相册首页 <html> <head> <meta charset="utf- ...

  4. 如何添加并设置远程桌面(RD)授权服务器

    上一篇日志中介绍了如何将现成的远程桌面授权服务器添加到对应的远程桌面回话主机中. 本篇日志将引导您如何添加配置相应的远程桌面授权服务器,这样就可以根据所购买的授权类型和授权级别添加需要甚至" ...

  5. Java位运算总结-leetcode题目

    按位操作符只能用于整数基本数据类型中的单个bit中,操作符对应表格: Operator Description & 按位与(12345&1=1,可用于判断整数的奇偶性) | 按位或 ^ ...

  6. sqlite - java 初学

    进来准备使用一种embedded database,即嵌入式数据库,方便随项目本地存储.目前学习打算是sqlite和H2. document:http://www.runoob.com/sqlite/ ...

  7. 在ASP.NET Core使用Middleware模拟Custom Error Page功能

    一.使用场景 在传统的ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAtt ...

  8. 创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL

    创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL 用惯.NET的研发人员都习惯性地使用SQLServer作为数据库.然而.NET Core ...

  9. android Can't bind to local 86XX for debugger

    For some reason eclipse DDMS always gives the error 'Can't bind to local 86XX for debugger' every ti ...

  10. 【Java每日一题】20161220

    package Dec2016; public class Ques1220 { public static void main(String[] args) { Integer num1 = new ...