linux git使用说明

一些认识

之前对github和git一直傻傻分不清,以为是两种不同的版本管理工具。现在才认识到git是一种版本管理工具,而github只是一个远程仓库。实际上没有github这种远程仓库,你计算机中git也会建立一个本地的仓库,或者链接到其他的远程仓库。

1. git的安装

输入命令安装git,并查看版本以确认安装成功。

sudo apt-get install git
git --version

2. git的使用

先解释一些概念,git分四层管理代码。

  1. 你目录中的文件是第一层
  2. 缓存区,每次add之后,当前目录中要追踪的文件会作为一个版本会存放在缓存区。注意不是所有的文件。一般一个文件生成之后,会标记为“未追踪”,但是否对其做版本管理还是要选择的。例如一些编译文件就没有必要追踪。对需要做版本管理的问件,用add添加,不需要的用clean删除。
  3. 本地仓库,每次commit之后,缓存区最新的版本就会存放在本地仓库。这里要提及一个HEAD的概念。HEAD是当前的版本指向,每次更新或者回退都会修改HEAD的指向,但对仓库中每一个版本并不会删除。所以即使回退到过去还是有机会回到现在的版本的。
  4. 远程仓库,每次push之后,会将本地仓库中HEAD所指向的版本存放到远程仓库

这里附上一些我常用的命令作为备忘录,详细的使用效果请参考我文末附上的博客链接。

命令 功能
git init 在本地的当前目录里初始化git仓库
git status 查看当前仓库的状态
git add -A 增加目录中所有的文件到缓存区
git add file 增加相应文件到缓存区
git commit -m "信息" 将缓存区中更改提交到本地仓库
git log 查看当前版本之前的提交记录
git reflog 查看HEAD的变更记录,包括回退
git branch -b branch_name 建立一个新的分支
git diff 查看当前文件与缓存区文件的差异
git checkout -- file 取消更改,将缓存区的文件提取覆盖当前文件
git reset --hard 版本号 回退到相应版本号,同样也可以回退到未来的版本号
git clean -xf 删除当前目录中所有未追踪的文件
git config --global core.quotepath false 处理中文文件名

这些命令用于处理本地仓库的版本管理足够了,下面我介绍与远程仓库打交道。

  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。参数--pretty=oneline

  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

  • 一、初始化

    1、首先安装git软件,安装环境是centos 7.x下的云服务器。使用命令:

    #yum install git

    2、设置用户名和邮箱(必须):

    # git config --global user.name "Your Name"
    # git config --global user.email "[email protected]"

    3、创建一个版本库,选择一个合适的地方,创建一个空目录:

    # mkdir learngit    #在服务器中创建learngit文件夹
    # cd learngit     #进入learngit 文件夹
    # pwd     #显示当前工作路径

    结果:(使用root用户权限)

    /root/learngit

    4、初始化这个目录为git可以管理的仓库,使用命令:

    # git init
    
    Initialized empty Git repository in /root/learngit/.git/

    已经成功初始化git仓库,并且是空的,路径在/root/learngit/,这个目录就是git可以管理的仓库。

    5、把文件添加到git仓库

    #vi  read.txt  #创建一个文本文件
    # i  "hello ,world"    # 编辑文件内容
    # :x        #保存并退出

    第一步   使用命令 git add 告诉git,把文件添加到仓库:

    # git add read.txt

    第二步  用命令git commit告诉git,把文件提交到仓库:

    # git commit -m "wrote a read file"

    说明: git commit命令,-m 后面是本次提交的说明,是对提交更改的内容的说明,方便以后很快的查找版本更新的内容。

    git commit 命令执行成功后,会告诉你,1个文件被改动,插入了1行内容(read.txt有1行内容)。

    为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

    # git add file1.txt
    # git add file2.txt file3.txt
    # git commit -m "add 3 files."

     二、更新文件内容

    1、继续更新文件内容

    #vi read.txt
    #hello world #第二行添加hello ,world
    #:x  

    2、查看文件现在状态

    #git status

    linux git使用说明_第1张图片

    可以看到,文件已经修改,但是还没有提交。

    3、查看更改的内容,使用命令:

    #git diff read.txt

    linux git使用说明_第2张图片

    可以看见更改的内容,增加了一行内容。

    4、再次提交版本

    #git add read.txt

    此时的状态 :git status

    linux git使用说明_第3张图片

    提交:

    #git commit -m "add hello world"

    linux git使用说明_第4张图片

  • 开发中常用操作

    删除文件:git rm 文件名[删除本地git仓库文件, 提交后远程服务器上的文件才会消失]

    查看状态:git status

    添加记录:git add 文件名 或 git add . [将文件提交到远程git服务器上]

    添加描述:git commit -m "描述或备注类似svn提交时的注释"

    同步数据:git pull  [获取git远程服务器上的数据也可以具体到某一分支如: git pull origin 分支名]

    提交数据:git push origin 分支名

    分支操作

    查看分支:git branch

    创建分支:git branch 分支名

    切换分支:git checkout 分支名

    创建+切换分支:git checkout -b 分支名

    合并某分支到当前分支:git merge 分支名

      [比如,如果要将开发中的分支(deve),合并到稳定分支(master),
         首先切换的master分支:git checkout master。
         然后执行合并操作:git merge deve。
         如果有冲突,会提示你,调用git status查看冲突文件。
         解决冲突,然后调用git add或git rm将解决后的文件暂存。
         所有冲突解决后,git commit 提交更改。]

      注意点:

      分支衍合
         分支衍合和分支合并的差别在于,分支衍合不会保留合并的日志,不留痕迹,而 分支合并则会保留合并的日志。
         要将开发中的分支(dev),衍合到稳定分支(master)。
         首先切换的master分支:git checkout master。
         然后执行衍和操作:git rebase deve
         如果有冲突,会提示你,调用git status查看冲突文件。
         解决冲突,然后调用git add或git rm将解决后的文件暂存。
         所有冲突解决后,git rebase --continue 提交更改。

    删除分支:git branch -d 分支名

      删除分支执行git branch -d 分支名
         如果该分支没有合并到主分支会报错,可以用以下命令强制删除git branch -D 分支名

    删除远程分支:git push origin :name

    撤销修改:git checkout -- file

你可能感兴趣的:(linux基础)