git是什么

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件(两周开发出来的)。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git是目前世界上最先进的分布式版本控制系统。

为什么用git

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

2、Git 把内容按元数据方式存储,而 SVN 是按文件: 所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

3、Git 分支和 SVN 的分支不同: 分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

4、Git 没有一个全局的版本号,而 SVN 有: 目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

5、Git 的内容完整性要优于 SVN: Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

这么牛逼,为什么不用呢?

怎么用git

  • git常用方法

    两种方式使用:

    http(https)方式:克隆项目时使用http(https)协议,需要输入gitlab的用户名和密码,不建议使用(每次push也都需要输入,比较麻烦,不过大多git客户端支持记录密码)。

    ssh方式:克隆项目时使用ssh协议,需要先在本机创建公钥,然后将公钥填充到gitlab–>个人设置->SSH Keys中。建议采用此方式,一劳永逸(除非换电脑)。

  • 初次使用git的配置

    ##########本地git配置##########
    当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
      
    ##方式一:
    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"
      
    #方式二:将如下内容保存到:$HOME\.gitconfig中.
    [user]
        name = 你的名字
        email = 你的邮箱
      
    ###git提交模板设置,gitcommit_template
    ##设置提交模板格式,编辑$HOME\gitcommit_template,写入如下内容:
    --------------------------------------------------------
    # ==[ 提交总结:简要描述本次提交,要求限制在25个字以内,描述完后下面空一行 ]=====|
    
    
    # ==[ 提交原因:新功能/Bug fix ]=================================================|
    [提交原因]
    # ==[ 详细描述:新功能提交时使用 ]===============================================|
    [详细描述]
    # ==[ Bug ID:针对Bug,填写BugID,未记录的bug填写“未记录的问题” ]====|
    # ==[ 多个BugID用空格分开 ]======================================================|
    [Bug ID]
    # ==[ Bug 原因:描述Bug产生的原因 ]==============================================|
    [Bug 原因]
    # ==[ 解决方法:针对Bug ]========================================================|
    [解决方法]
    # ==[ 其它:描述其它关联情况或需特殊说明的问题等 ]===============================|
    [其它]
      
    --------------------------------------------------------
      
    ##设置提交模板
    git config --global commit.template /Users/loong/.git_template
    
  • ssh方式认证gitlab

    ##########ssh认证配置##########
    #1.本机电脑打开gitbash,生成ssh登录的公钥和私钥
    ssh-keygen -t ed25519 -C "email@example.com" #直接使用ssh-keygen也可以,默认rsa加密类型
    #2.一路回车即可,中间会提示输入秘钥密码,可以不填,如果填写,push时需要输入此密码。
      
    #3.进入到创建密钥过程中提示保存的目录中,打开.pub文件结尾的文件,复制
      
    #4. gitlab公钥配置:将3中复制的内容粘贴到 gitlab--> 右上角用户头像--> 设置--> SSH Keys-->key中,填写标题并保存。
    

奇淫巧技

  • git stash

    常用git stash命令:
    (1)git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
        
    (2)git stash list  :查看stash了哪些存储
        
    (3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
        
    (4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p
        
    (5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 
        
    (6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
        
    (7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
        
    (8)git stash clear :删除所有缓存的stash
    
  • git 挑选部分提交进行合并

    git cherry-pick commitid

  • git分支合并保留源分支的提交记录

    git rebase

  • gitignore妙用,参考github维护的忽略文件集

  • git 代码合并三种方式

    • git merge 分支名

    git-merge介绍

    • git pull (git fetch && git megre)

      用于拉取关联的远程分支提交记录,并合并。

    • git rebase

      可用于合并本地分支(git rebase 分支)、也可以合并远程分支(git fetch && git rebase ),如有冲突,解决冲突后,使用 git rebase --continue 执行 rebase 操作。

    • 几个浏览器插件推荐,遗憾的是只支持github

命令速查

命令速查