git工作原理

git的工作原理还是比较简单的,当我们创建了本地代码仓库后,会在本地代码仓库的根目录中生成一个.git的隐藏文件。

.git为一个文件目录,又叫做版本库。在本地代码仓库文件夹中,除.git目录之外的所有与.git同级的目录及其子目录都叫做工作区。

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

版本库(Repository):.git目录,用于存储记录版本信息
   暂缓区(stage)
   分支(master):git自动创建的第一个分支
   HEAD指针:用于指向当前分支
git add和git commit的原理

git add :把文件修改或者新添加的文件添加到暂存区
git commit :把暂存区的所有内容提交到当前分支

下图就可以解释git add 和 git commit的原理:

git常用的命令

0、git init 初始化

1、git add filename.txt  添加要往远程传的文件到一个临时列表

2、git commit -m "xxx"  # 说明为啥上传

3、git push origin master  # 上传

4、git clone https://github.com/triaquae/Weibo  # 克隆远程的项目

5、git status  查看修改结果

6、git log  查看修改过几次

6.1、git reflog  查看修改过后所有历史操作

7、git log --pretty=oneline  查看修改过的所有版本

8、git reset --hard 加版本  回滚到哪个版本

9、git reset --hard head^  回滚到上个版本

10、git reset --hard head^^  回滚到上上(回滚到上两个)个版本

11、git reset HEAD filename.txt  撤回提交到暂存区的操作

12、git checkout --filename.txt  撤销工作区操作(可以多个文件)

13、git rm filename.txt  删除暂存区

14、git checkout -b "dev"  创建分支(引号里是分支名)

15、git push origin xxx  提交到分支库(xxx表示分支名)

16、git branch  查看分支

16.1、git checkout dev  切换到分支库

17、git merge dev  合并分支库到主库(dev表示分支库)

18、git pull  拉远程库的文件

19、git stash  缓存工作区的内容

20、git stash list  查看暂存区的内容

21、git stash apply  把暂存区的内容恢复到工作区

22、git stash pop  把暂存区的内容恢复到工作区并且把暂存区的删除

23、版本回退:
git reset --hard HEAD : 回退到当前的版本
git reset --hard HEAD^ : 回退到上一个版本
git reset --hard HEAD^^ : 回退到上上个版本
git reset --hard HEAD~100 : 回退到前100版本
git reset --hard 版本号(前5位)

我们修改或者新添加的文件起初是处于工作区,通过git add命令可以把工作区的文件移动到版本库中的暂缓区(stage)。

处在暂缓区(stage)的代码可以通过git commit -m “提交的注释” 提交到版本库中的分支(master)。

处在分支(master)中的代码可以通过git push命令push到共享版本库。

注意:只有分支中的文件才可以push到共享版本库。

初始化共享版本库

文件夹作为共享版本库

1.创建共享版本库文件夹,然后终端进入该文件夹下执行以下命令创建一个空的共享版本库
git init --bare
2.项目经理将共享版本库的内容先下载下来,命令后面的地址即为共享版本库所在服务器的地址+路径
git clone 地址
3.添加需要忽略的文件
touch .gitignore
去github上搜索.gitignore->Objective-C,把Objective-C中的内容粘贴到创建的.gitignore文件中(或者直接把github中的Objective-C文件下载到该目录下)。然后执行以下命令
git add .gitignore
git commit -m “添加了需要忽略的文件”
4.项目经理初始化项目
git commit -m “初始化项目”—>提交到本地代码仓库
5.将项目push远程仓库中
git push origin
6.当源代码管理是使用git,并且在Xcode进行多人开发的操作
注意:当使用git,项目中用到了静态库就不需要通过命令行进行添加

git版本备份

1.1.0版本开发完成,之后对1.0版本进行备份
git tag -a weibo1.0 -m “这个是1.0版本” : 给某一个版本打上标签(weibo1.0是标签名称)
git tag : 查看所有的标签
2.需要将1.0版本的标签,push到服务器
git push origin weibo1.0
3.继续开发2.0版本
4.发现1.0版本有bug,从标签里面clone 1.0版本,从标签创建一个fixbug分支,在分支中修复bug
git clone 共享版本库
git checkout weibo1.0(标签的名称)
git checkout -b weibo1.1fixbug(分支名称)
5.修复后的版本上传AppStore/将1.0fixbug进行备份/将1.0fixbug版本和2.0版本进行合并\
git tag -a weibo1.1 -m “这个是修复了1.0版本bug的1.1版本”
git tag
git push origin weibo1.1
将子分支中代码合并到主分支,pull—>weibo1.1fixbug—>push master—>其它同事更新
6.删除分支
git branch -r(r是远程仓库的意思,这个命令可以查看远程仓库中的分支)
git branch -r -d 分支名称

基本步骤命令

1)touch README.md文件是关于工程代码的介绍,类似与使用说明书

2)git init  初始化一个本地的 git仓库,生成隐藏的.git目录(隐藏的.git目录可使用ls -aF命令可以查看到)

3)git add  README.md  把README.md文件添加到仓库中

4)git commit -m "first commit"  执行提交说明,在Gitz中这个属于强制性的

5)git remote add origin https://github.com/XFZLDXF/TEST.git   添加本地仓库origin和指定远程仓库地址

6)git push origin master  推送本地仓库到远程指定的master分支上

到这基本的git使用已经差不多了,暂时也就总结这些后续会更新补充...

git的基础介绍和使用的更多相关文章

  1. Git使用基础介绍

    git教程:一.git的简介:    -git是分布式版本控制系统由Linus为Linux用C语言写的.  -什么是集中式版本控制系统:       版本库是集中存放在中央服务器,干活的时候用自己的电 ...

  2. 1、git基础介绍及远程/本地仓库、分支

    1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...

  3. git基础介绍

    git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...

  4. Git及基础命令的介绍以及如何向本地仓库添加文件

    在介绍Git的使用之前,我们得要先来了解一下Git.那么什么是Git? Git是一个版本管理工具(VCS),具有以下的特点: 分布式版本控制: 多个开发人员协调工作: 有效监听谁做的修改: 本地及远程 ...

  5. Git入门基础详情教程

    前言 写了一篇文章<一篇文章了解Github和Git教程>还觉得不错,继续写了<为了Github默默付出,我想了解你>,那么继续写Git 基础知识. Git 官网:https: ...

  6. Git使用基础篇

    Git使用基础篇 前言 Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多 ...

  7. Git使用基础篇(zz)

    Git使用基础篇 您的评价:          收藏该经验       Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体 ...

  8. Mac下Git的基础操作

    目前最火的版本控制软件是Git了吧,今天简单梳理一下Mac下Git的基础操作~~ 一.什么是Git Git是一个分布式代码管理工具,用于敏捷的处理或大或小的项目,类似的工具还有svn. 基于Git的快 ...

  9. git的基础使用

    GIT """ 什么是git:版本控制器 - 控制的对象是开发的项目代码 代码开发时间轴:需求1 > 版本库1 > 需求2 > 版本库2 > 版本 ...

随机推荐

  1. WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION 图片上传

    CKEDITOR  编辑器   图片上传 WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION (CKEditorFuncNum,图片路径,返回信息); CKEditor ...

  2. 通过配置文件启动odoo-10.0

    odoo-10.0文件夹中找到odoo-bin,这是10.0的启动文件,也是一个py文件 使用pycharm启动后,找到run->edit configuration 找到odoo-bin 找到 ...

  3. Unity全视角跟随鼠标右键转换视角实现——研究笔记

    using UnityEngine; using System.Collections; public class CameraMove : MonoBehaviour { public Transf ...

  4. 微信收藏导出到PC端的方法,不要再傻傻的用网页版转换了!

    微信里面收藏了很多有意思的东西,想转到PC上保存起来,以防万一哪天链接失效了. 另外PC上面看,屏幕大一些,也爽一些. 以前的方法是需要通过网页版来传输一下,现在微信有了PC客户端,很方便,直接安装P ...

  5. python property详解

    Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情.在这篇文章中,我们将看到如何能做以下几点: 将类方法转换为只读属性 重新实现一个属性的setter和getter ...

  6. Oracle学习笔记(二)

    2.Oracle用户管理 (1)创建用户:create user 用户名 identified by 密码(需要dba权限); sql>create user yzw identified by ...

  7. entity framework自动迁移

    第一步,建立测试项目,普通的WinForm类型,EntityMigration: 第二步,从NuGet为项目添加MySql.Data.Entity,由Oracle提供,我选择人气高的: 第三步,建立实 ...

  8. coffeeScript中类的继承[学习篇]

    只是在看深入浅出coffeescript中感觉真的很好,不光是coffe写法简单,生成的js也值得学习,废话不多说了,直接抄个书上的例子 class Pet constructor: -> @i ...

  9. netty研究【1】:编译源代码

    netty作为异步通信底层框架,其优异的性能让我产生了研究他的源码的决定. 代码研究之前,第一步就是要准备环境,至少可以编译通过,下面,就拿github上的4.1分支进行.我的IDE是Intellij ...

  10. JAXB最佳实践

    JAXB主要用来实现对象和XML之间的序列化和反序列化. 本文主要总结JAXB基本使用方法和注意事项! 通过下文的XML示例内容进行JAXB的简单实践 <?xml version="1 ...