Git的使用记录总结

作者: coderWen | 来源:发表于2016-02-29 23:29 被阅读269次

    什么是git?

    • git是一款开源的分布式版本控制工具
    • 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
    • git的起源
    • 作者是Linux之父:Linus Benedict Torvalds
    • 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)

    git有什么用?

    • 在项目开发中,实行版本控制
    • 分布式和集中式的最大区别在于:在分布式下
    • 开发者可以本地提交
    • 每个开发者机器上都有一个服务器的数据库
    • git工作流程


    git的原理介绍

    • 如果想了解git的工作原理,有几个核心概念必须知道
    • 工作区(Working Directory):仓库文件夹里除.git目录以外的内容
    • 版本库(Repository):.git目录,用于存储记录版本信息
    • 暂缓区(stage)
    • 分支(master):git自动创建的第一个分支
    • HEAD指针:用于指向当前分支
    • git add和git commit的原理
    • git add :把文件修改或者新添加的文件添加到暂存区
    • git commit :把暂存区的所有内容提交到当前分支

    我们知道Git有 三大区 ( **工作区、暂存区、版本库 **)以及 几个状态 ( untracked、unstaged、uncommited ),下面只是简述下Git的大概工作流程,详细的可以参见本博客的其他有关Git的文章 【链接】 。
    (1)打开你的项目文件夹,除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区,工作区的文件需要添加到Git的暂存区(git add),随后再提交到Git的版本库(git commit)。
    (2)首次新建的文件都是untracked状态(未跟踪),此时需要git add到暂存区,Git便会在暂存区中生成一个该文件的索引,文件此时处于uncommited状态,需要git commit生成版本库。添加到了版本库之后,再对文件进行修改,那么文件的状态会变为unstaged状态。

    git基本使用

    命令行相关补充

    $ svn help
    查看svn所有命令的帮助
    $ svn help 子命令
    git同上

    • 要退出帮助信息,按"q"
    • 翻看下页,按"空格"
    • 翻看上页,按"CTRL+B"
    • 要搜索相关文字,按"/"然后输入"相关文字"
    • 退出当前命令行执行,按"CTRL+Z"

    git的本地操作

    只涉及到本地仓库的概念,commit就是提交到本地仓库的分支,就可以了

    以上两个命令会将用户信息保存在当前代码仓库中
    # 只有配置了用户和邮箱之后,git才能识别出操作的人员信息,通过钩子(hooks)程序可以设置一些动作
    # 例如单元测试发现问题后,自动给相关人员发送电子邮件
    # 注意 暂时不建议投入一毛钱精力深入学习git

    • 如果要一次性配置完成可以使用一下命令,(全局配置)
      $ git config --global user.name longxw
      $ git config --global user.email longxw@gmail.com

    以上两个命令会将用户信息保存在用户目录下的 .gitconfig 文件中

    • 查看当前所有配置
      $ git config -l

    • 实际开发中常用命令(重点)

    • 创建代码,开始开发
      $ touch main.c
      $ open main.c

    • 将代码添加到代码库

      • 查看当前代码库状态
        $ git status
      • 将文件添加到代码库
        $ git add main.c
      • 将修改提交到代码库
        $ git commit -m "添加了main.c"
      • 将当前文件夹下的所有新建或修改的文件一次性添加到代码库
        $ git add .

      提示:
      * 在此一定要使用 -m 参数指定修改的备注信息
      * 否则会进入 vim 编辑器,如果对vim不熟悉,会是很糟糕的事情

    • 添加多个文件

    $ touch Person.h Person.m
    $ git add .
    $ git commit -m "添加了Person类"
    $ open Person.h
    $ git add .
    $ git commit -m "增加Person类属性"
    
    • 注意 使用git时,每一次修改都需要添加再提交(良好的习惯),这一点是与svn不一样的
    • 别名 & 日志
      $ git config alias.st status
      $ git config alias.ci "commit -m"

    个人建议:除非特殊原因,最好不要设置别名,否则换一台机器就不会用了

    • 查看所有版本库日志
      $ git log

    • 查看指定文件的版本库日志
      $ git log 文件名

    • 配置带颜色的log别名

    $ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
    

    提示:在git中,版本号是一个由SHA1生成的哈希值

    • 版本号,让我们在任意版本之间穿梭

      • 查看分支引用记录
        $ git reflog
      • 回到当前版本,放弃所有没有提交的修改
        $ git reset --hard HEAD
      • 回到上一个版本
        $ git reset --hard HEAD^
      • 回到之前第3个修订版本
        $ git reset --hard HEAD~(3) 可能失效
        git reset --hard HEAD@{3} 用这个
      • 回到指定版本号的版本
        $ git reset e695b67 //可能会因为产生临时文件无法回退
        $ git reset 59c58da
        Unstaged changes after reset:
        M Person.h
        $ git reset --hard 59c58da //刚性回退,不会受临时文件影响
    • 单个文件的修改管理
      $ git diff
      1. cat 连续查看文件内容
      2. more 分页查看文件内容
      cat命令详解

    git的远程操作

    (除了涉及到本地仓库,还涉及到远程仓库到概念),用push,pull执行简单远程仓库操作

    • 建立空白代码库(专门用于团队开发)
      $ git init --bare
    • 建立忽略文件.gitignore

    .gitignore可以指定哪些文件不纳入版本库的管理
    参考网址:https://github.com/github/gitignore

    • 将.gitignore添加到代码库
      $ git add .gitignore
    • 创建项目

    提交同时"push"到远程代码仓库

    • 新人加入

    创建新人分支

    • 分支管理,标签

    遇到错误

    没有加入版本管理
    快速解决方案,删除该文件(注意先对该文件备份)
    然后添加进去,重新提交,push,就可以了
    但是导致以前的版本库文件不存在了


    管理多个ssh

    • 创建生成多个ssh(公钥和私钥),如
    ssh-keygen -t rsa -f ~/.ssh/id_rsa_coding -C “longxw1130@163.com”
    

    注意:id_rsa_coding是生成的公钥和私钥的名字,需要换成自己的

    • 在config文件中配置,新建一个config,打开如下配置
    #个人coding
    Host git.coding.net
    User longxw1130@163.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_coding
    貌似不在配置也行哦..没配置,系统弹出如下提示,还是配置下好
    Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
    
    • 添加进known_hosts(可忽略,原因如下)
    ssh-add ~/.ssh/id_rsa_coding
    
    • 注意:
    The authenticity of host 'github.com (192.30.252.131)' can't be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    Are you sure you want to continue connecting (yes/no)? yes
    选了yes之后,会自动添加内容到known_hosts文件中
    

    附录

    SourceTree之git图形管理工具
    廖雪峰Git教程
    易百Git教程

    相关文章

      网友评论

        本文标题:Git的使用记录总结

        本文链接:https://www.haomeiwen.com/subject/klegkttx.html