git 开发中的总结
一、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工作流程
六、
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'
- 查看最近10条日志:
git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch 状态。
git merge 则不会显示 feature,只保留单条分支记录。
- feat:新功能(feature)
- fix:修补bug
- docs:文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- test:增加测试
- chore:构建过程或辅助工具的变动
git 开发中的总结的更多相关文章
- git开发中常用命令
项目代码克隆岛本地 git clone 项目地址 #如:git clone http://cngit.fir.ai/data_service/distributedstorage.git 克隆指定分支 ...
- fir.im Weekly - iOS开发中的Git流程
本期 fir.im Weekly 收集了微博上的热转资源,包含 Android.iOS 开发工具.源码等好用的轮子,还有一些 APP 设计的 Tips,希望对你有用. 精仿知乎日报 iOS 端 @我偏 ...
- GIT在iOS开发中的使用
前言 在iOS开发中,很多公司对项目的版本控制管理都使用了git,当然也有部分公司使用的是svn.当年我最初接触的是svn,觉得使用起来挺方便的,但是每次切分支都需要下载一份新的代码起来,这实在太麻烦 ...
- 团队项目开发中,常见的版本控制有svn,git
团队项目开发中,常见的版本控制有svn,git
- 开发中关于Git那些事
如果你想精通Git,直接到 Git官网 把这本ProGit掌握已足以Pro Git 此文主要介绍一切开发中常用的git命令和一些配置技巧(诸如git别名配置,log打印技巧,版本回退以及分支管理等). ...
- 开发中关于Git那些事(续:Git变基)
其实上一篇写的内容仅仅是Git的冰山一角,如果你认为Git就是简简单单的几行命令,那只能说明你还没有真正了解Git这个强大的内容寻址文件系统.这篇文章,还是接着介绍一些实用但是很少有人知晓的一些命令, ...
- ssh keygen命令实现免密码通信(git库获取操作权限:开发人员添加到git库中,获取操作权限)
先看两个机器实现免密码登陆通讯: 假设 A 为客户机器,B为目标机: 要达到的目的: A机器ssh登录B机器无需输入密码: 加密方式选 rsa|dsa均可以,默认dsa 做法: 1.登录A机器 2.s ...
- 项目开发中git常用命令、git工作流、git分支模型
#新建代码库git init # 在当前目录新建一个Git代码库git init [project-name] # 新建一个目录,将其初始化为Git代码库git clone [url] # 下载一个项 ...
- [更新中]【fit-flow使用总结】djang开发中git flow使用总结
djang开发中git flow使用总结 初次接触可以先看看此链接上关于git flow的东西http://danielkummer.github.io/git-flow-cheatsheet/ind ...
随机推荐
- 查看dsym的报错信息(友盟)
//搜索显示报错信息的命令在终端直接运行(来源老版提示) export dSYMPath="$(find ~/Library/Developer/Xcode -iname '*.dSYM' ...
- MVC 实用构架实战(一)——项目结构搭建
一.前言 在<上篇>中,已经把项目整体结构规划做了个大概的规划.在本文中,将使用代码的方式来一一解说各个层次.由于要搭建一个基本完整的结构,可能文章会比较长.另外,本系列主要出于实用的目的 ...
- Copycat - configure
Copycat server之间的configure是如何,何时被同步的? 大家可以看到,只有leader可以同步配置 1. 显式的调用LeaderState.configure Leader ...
- 状压dp的另一种形式
做的那么多都是一些比较怎么说呢,都是在数网格一类的题目之中,这些题目有些有点固定的套路,而一些需要状态压缩的题目呢,则么是真正对状态转移的考验. 这道题呢,被彻底打脸了,以后一定要任性一点一道题做不出 ...
- LeetCode 496 Next Greater Element I 解题报告
题目要求 You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset ...
- Python开发【模块】:tornado.queues协程的队列
协程的队列 协调生产者消费者协程. from tornado import gen from tornado.ioloop import IOLoop from tornado.queues impo ...
- 对CountDownLatch的初步学习
CountDownLatch的中文翻译为"闭锁",在JDK1.5中 CountDownLatch类加入进来.为程序猿进行并发编程提供有利的帮助. 首先我们先看看JDK文档中对于Co ...
- 【接口】【面试题】http协议相关面试题
浏览器输入 url 按回车背后经历了哪些? 1.在 PC 浏览器的地址栏输入一串 URL,然后按 Enter 键这个页面渲染出来,这个过程中都发生了什么事? 1.首先,在浏览器地址栏中输入 url,先 ...
- String[]与List<String>的相互转换
String[]转List String[] arr = new String[]{"a","b","c"}; List<String ...
- 由于找不到 MSVCR100.dll,无法继续执行代码
由于找不到 MSVCR100.dll,无法继续执行代码.重新安装程序可能会解决此问题 360软件管家中找到 进行安装即可