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工作流程
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:构建过程或辅助工具的变动
posted @ 2019-02-03 14:32  agang_19  阅读(161)  评论(0编辑  收藏  举报