• 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:构建过程或辅助工具的变动
  • 相关阅读:
    (转)SpringMVC学习总结
    Golang-函数的defer
    Golang-闭包
    Golang-匿名函数
    Golang-init()
    Golang-递归
    Golang-函数、包、变量的作用域
    Golang-for、break、continue、goto、return
    Golang-程序流程控制 if、switch
    Golang-进制、源码反码补码、位运算
  • 原文地址:https://www.cnblogs.com/agang-php/p/10350337.html
Copyright © 2020-2023  润新知