一、git是什么

1、git是一种分布式的版本管理系统,

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

二、git和svn的对比

1、git是完整独立的分布式的版本库,不用备份代码,每个开发人员克隆到本地都是一个版本库,但是svn是集中式的,SVN只能有一个指定中央版本库,如果服务器的版本库出现问题,整个代码库就完了。

2、下载速度,git下载速度远快于svn,几个G的版本库,git只需要10多分钟,svn可能要一个小时

3、git创建分支简单,可以快速创建分支,隔绝自己修改的代码,svn的版本分支,分支是一个完整的目录。且这个目录拥有完整的实际文件

4、git克隆项目到本地,包含了完整的日志,在没网络的情况下也是没有影响,但是svn需要从服务器上拉取,断网情况下将不能查看。

5、 GIT把内容按元数据方式存储,而SVN是按文件,因为git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等

6、git配套的开发平台和系统很多,例如github,gitlab

7、git学习成本高

三、git安装

   ubuntu :sudo apt-get install git就可以直接完成Git的安装,非常简单。

centos: yum install git

mac: brew install git

四、git和github区别

git是版本控制软件,github是一个网站,代码托管平台,可以在上面建立仓库,进行代码提交。

利用github创建远程仓库

从远程库克隆

三、理解工作区和暂存区

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000

在初始化git版本库之后会生成一个隐藏的文件 .git ,可以将该文件理解为git的版本库 repository,而我们自己建立的项目文件夹即工作区 working directory ,在.git 文件夹里面还有很多文件,其中有一个index 文件 就是暂存区也可以叫做 stage ,git还为我们自动生成了一个分支master以及指向该分支的指针head

https://blog.csdn.net/faithmy509/article/details/81773138

git checkout --file  撤销工作区的修改,覆盖工作区对应的文件file,是对工作区起效果

git reset HEAD --file  撤销暂存区提交的文件,这个命令仅对暂存区有效果,不影响工作区

四、理解分支

git diff 比较的是工作区和暂存区的差别
git diff --cached 比较的是暂存区和版本库的差别
git diff HEAD 可以查看工作区和版本库的差别

首先,你在工作区创建了一个文件或者修改了一个文件

然后你有输入了git add,此时文件实际上是被添加到了暂存区(stage),也就是那个index文件

接着,你又输入git commit,这才算是正式提交。Git默认给我们创建了一个master分支(以后会详说)和一个指向master分支的HEAD指针(就是上面的HEAD文件)

git checkout -b branch-name origin/branch-name

四、版本库文件

  • description文件:仅供GitWeb程序使用
  • config文件:包含项目特有的配置选项
  • info目录:包含一个全局性排除(global exclude)文件,用以放置那些不希望被记录在 .gitignore文件中的忽略模式(ignored patterns)
  • hooks目录:包含客户端或服务端的钩子脚本(hook scripts)
  • HEAD文件:指示目前被检出的分支
  • index文件:保存暂存区信息
  • objects目录:存储所有数据内容
  • refs 目录:存储指向数据(分支)的提交对象的指针

五、git工作流程

1、添加或者修改文件
2、git add . 保存到暂存区
3、git commit  将暂存区的内容进行保存,把信息写入历史,相当于生成该项目的一个快照

六、

git config修改配置,一个存在项目目录下面,一个存在用户目录下面

vim ~/.gitconfig

vim .git/config

七、常用命令

git init 项目初始化

git config user.name 'username'.  //commit保存快照的时候会记录谁提交的

git config user.email 'email'

git remote -v 查看远程仓库

git remote add origin git@github.com:HappyYears/git.git

git  remote set-url origin git@github.com:HappyYears/git.git

git show xxxx. 展示某个快照的所有代码变动

git log -p  查看日志,展示具体提交记录,代码变化

git add filename

git commit -m 'test'

git rm filename

git rm --cached filename

git mv filename newfilename  git自动识别重命名某个文件

git config --global alias.st status

git pull

git push

git log ----graph

  • 查看日志:git log
  • 查看日志,并查看每次的修改内容:git log -p
  • 查看日志,并查看每次文件的简单修改状态:git log --stat
  • 一行显示日志:git log --pretty=oneline / git log --pretty='format:"%h - %an, %ar : %s'
  • 查看日志范围:
    • 查看最近10条日志:git log -10
    • 查看2周前:git log --until=2week 或者指定2周的明确日期,比如:git log --until=2015-08-12
    • 查看最近2周内:git log --since=2week 或者指定2周明确日志,比如:git log --since=2015-08-12
    • 只查看某个用户的提交:git log --committer=user.name / git log --author=user.name
    • 只查看提交msg中包含某个信息的历史,比如包含'测试'两个字的:git log --grep '测试'
    • 试试这个 : git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit 感觉好用就加成 alias ,方便日后用,方法:git config --global alias.aliasname 'alias-content'

git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch 状态。

git merge 则不会显示 feature,只保留单条分支记录。

  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动

git 开发中的总结的更多相关文章

  1. git开发中常用命令

    项目代码克隆岛本地 git clone 项目地址 #如:git clone http://cngit.fir.ai/data_service/distributedstorage.git 克隆指定分支 ...

  2. fir.im Weekly - iOS开发中的Git流程

    本期 fir.im Weekly 收集了微博上的热转资源,包含 Android.iOS 开发工具.源码等好用的轮子,还有一些 APP 设计的 Tips,希望对你有用. 精仿知乎日报 iOS 端 @我偏 ...

  3. GIT在iOS开发中的使用

    前言 在iOS开发中,很多公司对项目的版本控制管理都使用了git,当然也有部分公司使用的是svn.当年我最初接触的是svn,觉得使用起来挺方便的,但是每次切分支都需要下载一份新的代码起来,这实在太麻烦 ...

  4. 团队项目开发中,常见的版本控制有svn,git

    团队项目开发中,常见的版本控制有svn,git

  5. 开发中关于Git那些事

    如果你想精通Git,直接到 Git官网 把这本ProGit掌握已足以Pro Git 此文主要介绍一切开发中常用的git命令和一些配置技巧(诸如git别名配置,log打印技巧,版本回退以及分支管理等). ...

  6. 开发中关于Git那些事(续:Git变基)

    其实上一篇写的内容仅仅是Git的冰山一角,如果你认为Git就是简简单单的几行命令,那只能说明你还没有真正了解Git这个强大的内容寻址文件系统.这篇文章,还是接着介绍一些实用但是很少有人知晓的一些命令, ...

  7. ssh keygen命令实现免密码通信(git库获取操作权限:开发人员添加到git库中,获取操作权限)

    先看两个机器实现免密码登陆通讯: 假设 A 为客户机器,B为目标机: 要达到的目的: A机器ssh登录B机器无需输入密码: 加密方式选 rsa|dsa均可以,默认dsa 做法: 1.登录A机器 2.s ...

  8. 项目开发中git常用命令、git工作流、git分支模型

    #新建代码库git init # 在当前目录新建一个Git代码库git init [project-name] # 新建一个目录,将其初始化为Git代码库git clone [url] # 下载一个项 ...

  9. [更新中]【fit-flow使用总结】djang开发中git flow使用总结

    djang开发中git flow使用总结 初次接触可以先看看此链接上关于git flow的东西http://danielkummer.github.io/git-flow-cheatsheet/ind ...

随机推荐

  1. 查看dsym的报错信息(友盟)

    //搜索显示报错信息的命令在终端直接运行(来源老版提示) export dSYMPath="$(find ~/Library/Developer/Xcode -iname '*.dSYM' ...

  2. MVC 实用构架实战(一)——项目结构搭建

    一.前言 在<上篇>中,已经把项目整体结构规划做了个大概的规划.在本文中,将使用代码的方式来一一解说各个层次.由于要搭建一个基本完整的结构,可能文章会比较长.另外,本系列主要出于实用的目的 ...

  3. Copycat - configure

    Copycat server之间的configure是如何,何时被同步的?   大家可以看到,只有leader可以同步配置   1. 显式的调用LeaderState.configure Leader ...

  4. 状压dp的另一种形式

    做的那么多都是一些比较怎么说呢,都是在数网格一类的题目之中,这些题目有些有点固定的套路,而一些需要状态压缩的题目呢,则么是真正对状态转移的考验. 这道题呢,被彻底打脸了,以后一定要任性一点一道题做不出 ...

  5. LeetCode 496 Next Greater Element I 解题报告

    题目要求 You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset ...

  6. Python开发【模块】:tornado.queues协程的队列

    协程的队列 协调生产者消费者协程. from tornado import gen from tornado.ioloop import IOLoop from tornado.queues impo ...

  7. 对CountDownLatch的初步学习

    CountDownLatch的中文翻译为"闭锁",在JDK1.5中 CountDownLatch类加入进来.为程序猿进行并发编程提供有利的帮助. 首先我们先看看JDK文档中对于Co ...

  8. 【接口】【面试题】http协议相关面试题

    浏览器输入 url 按回车背后经历了哪些? 1.在 PC 浏览器的地址栏输入一串 URL,然后按 Enter 键这个页面渲染出来,这个过程中都发生了什么事? 1.首先,在浏览器地址栏中输入 url,先 ...

  9. String[]与List<String>的相互转换

    String[]转List String[] arr = new String[]{"a","b","c"}; List<String ...

  10. 由于找不到 MSVCR100.dll,无法继续执行代码

    由于找不到 MSVCR100.dll,无法继续执行代码.重新安装程序可能会解决此问题 360软件管家中找到  进行安装即可