美文网首页
Git常用命令

Git常用命令

作者: RideoCos | 来源:发表于2018-10-11 13:39 被阅读0次

    Git --- 分布式版本控制系统

    几种常用的版本控制系统

    • cvs/vss---锁定模式
    • Subversion(svn)---合并模式
    • 上述都是集中版本控制系统,必须需要中央服务器
    • Mercury ---python版版本控制
    • Git---分布式版本控制

    Part one

    Git 安装完成后进行如下操作:

    • Git安装完成后执行如下命令进行绑定用户
    $ git config --global user.name "xxx"
    
    $ git config --global user.email "xxx"
    
    • 绑定完成后,可通过命令查看
     $ git config user.name
    
     $ git config user.email
    

    Part two 创建版本库

    • 切换工作路径
    进入Git bash 时,Git有默认路径,所以第一步先切换路径(也可以不切换,就使用默认路径)
    $ cd D:/Git/My_Git
    
    • 创建一个文件夹作为Git的仓库
    $ mkdir one
    
    • 查看当前工作路径
    $ pwd
    
    /d/Git/one
    
    • 进入创建的仓库文件夹,并进行Git仓库的初始化
    $ cd one
    $ git init
    
    Initialized empty Git repository in D:/Git/one/.git/
    
    • 查看当前仓库文件
    $ dir -a
    

    注意 : 成功初始化Git仓库后,可以看到,新的仓库中存在三个文件,分别为. / .. / .git,.表示当前目录,.. 表示上级目录,.git是Git用来追踪版本控制的文件,请勿修改

    • 初始化成功可以看到,当前路径的后面多了(master) master表示主干分支
    RideoCos@RideoCos MINGW64 /d/Git/one (master)
    $
    
    • 尝试添加文件到仓库
    首先我们将一个文件复制到Git仓库的文件夹中,也就是将文件放入D:/Git/one文件夹中,再使用Git命令添加此文件到仓库。
    $ git add a.txt
    
    • 查看当前仓库的工作状态
    $ git status
    
    
    On branch master
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
    
            new file:   a.txt
    
    

    可以看到,Git提示在当前master主干下,有一个新文件a.txt没有提交。所以还需提交这个文件到仓库中。

    • 提交文件
    $ git commit -m "本次提交说明"
    
    [master (root-commit) 0d35e3b] 本次提交说明
     1 file changed, 1 insertion(+)
     create mode 100644 a.txt
    
    • 再次查看提交后的状态,当前工作树干净
    $ git status
    
    On branch master
    nothing to commit, working tree clean
    

    注意 : 添加文件到仓库需要两步操作,1.git add file ; 2,git commit -m "xxx",之所以需要两步的原因是因为,Git的操作分为工作区、暂存区、版本库,当在工作区执行git add命令后,实际上是将文件添加到暂存区,在执行 git commit提交后,将暂存区的文件提交到版本库,再进行版本控制。实际工作如下图1-1所示。

    图1-1图1-1
    若图片未能加载,请参考Git 工作区 暂存区 版本库 区别

    Part three 时光穿梭

    • 查看文件改动
    在仓库目录下D:/Git/one对添加的文件a.txt进行修改,将原内容hello world 改动为 good bye,使用命令进行查看改动信息。
    $ git diff a.txt
    
    diff --git a/a.txt b/a.txt
    index 95d09f2..34e219a 100644
    --- a/a.txt
    +++ b/a.txt
    @@ -1 +1 @@
    -hello world
    \ No newline at end of file
    +good bye
    \ No newline at end of file
    
    • 查看当前查看的日志
    $ git log
    
    commit 0d35e3bad423ec2f3d6042f5fee5cf73a7821c41 (HEAD -> master)
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:02:36 2018 +0800
    
        本次提交说明
    
    可以看到,第一次提交文件的具体信息,cimmit id记录了提交的id,Git就是通过每次操作的id来实现版本控制,除commit id 外还有提交的其他信息,包括提交人,提交时间,本次提交说明。

    现在再次提交修改后的a.txt

    $ git add a.txt
    $ git commit -m "修改后提交说明"
    
    • 再来查看日志
    $ git log 
    
    commit d8f41954f5298870fe6ed48fce2987f7f564a7c2 (HEAD -> master)
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:25:23 2018 +0800
    
        修改后提交说明
    
    commit 0d35e3bad423ec2f3d6042f5fee5cf73a7821c41
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:02:36 2018 +0800
    
        本次提交说明
    
    可以看到两次的操作都记录相关信息,现在再次重复上面步骤进行第三次提交操作。在a.txt文本内容添加“你好”。
    $ git diff a.txt
    $ git add a.txt
    $ git commit -m "第三次修改说明"
    $ git log
    
    commit 86d38d7a8c0e09ddb6aac7d12c59fbcb7fdf85c1 (HEAD -> master)
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:29:50 2018 +0800
    
        第三次修改说明
    
    commit d8f41954f5298870fe6ed48fce2987f7f564a7c2
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:25:23 2018 +0800
    
        修改后提交说明
    
    commit 0d35e3bad423ec2f3d6042f5fee5cf73a7821c41
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:02:36 2018 +0800
    
        本次提交说明
    

    现在版本库已经有三条记录了,方便直观的进行Git的"时光穿梭"了。

    • 为了方便显示,现在只看这三次提交的commit id
    $ git log --pretty==oneline
    
    86d38d7a8c0e09ddb6aac7d12c59fbcb7fdf85c1 (HEAD -> master) 第三次修改说明
    d8f41954f5298870fe6ed48fce2987f7f564a7c2 修改后提交说明
    0d35e3bad423ec2f3d6042f5fee5cf73a7821c41 本次提交说明
    

    可以看到,第三次提交即最新版本的commit id后面有一个(HEAD ->master)这句话,如何理解这句话可以参考分支-廖雪峰

    • 获得当前最新版本信息,即当前master指向
    $ git reset --hard HEAD
    
    HEAD is now at 86d38d7 第三次修改说明
    
    • 版本回退
    $ git reset --hard HEAD^
    $ git reset --hard HEAD
    HEAD is now at d8f4195 修改后提交说明
    

    git reset --hard HEAD^ 表示回到当前版本的上一个版本,HEAD^^表示上两个,当想回到的版本较前时,有两种方法。

    • 方法一,HEAR~n,--n表示当前版本前n个版本
    $ git reset --hard HEAD~2
    HEAD is now at 0d35e3b 本次提交说明
    
    这里我先回到第三次的版本后,才执行的回退前两个到第一个版本。
    • 方法二 --hard + commit id 推荐
      1.首先查看commit id
    $ git log --pretty=oneline
    86d38d7a8c0e09ddb6aac7d12c59fbcb7fdf85c1 (HEAD -> master) 第三次修改说明
    d8f41954f5298870fe6ed48fce2987f7f564a7c2 修改后提交说明
    0d35e3bad423ec2f3d6042f5fee5cf73a7821c41 本次提交说明
    

    2.使用commit id 指定回退的版本 commit id 一般只用前几位即可

    $ git reset --hard 0d35e3b
    
    HEAD is now at 0d35e3b 本次提交说明
    

    在经过方法二的操作,已经回到了最开始的版本,即第一次的添加

    • 查看版本库日志
    $ git log
    
    commit 0d35e3bad423ec2f3d6042f5fee5cf73a7821c41 (HEAD -> master)
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:02:36 2018 +0800
    
        本次提交说明
    

    现在看到,版本库只有第一次的添加信息,第二三次找不到信息了。那么如何通过版本回退方法回到第二三版本?

    • git reflog 查看所有操作日志
    $ git reflog
    
    0d35e3b (HEAD -> master) HEAD@{0}: reset: moving to 0d35e3b
    86d38d7 HEAD@{1}: reset: moving to 86d38d7
    0d35e3b (HEAD -> master) HEAD@{2}: reset: moving to HEAD~2
    86d38d7 HEAD@{3}: reset: moving to 86d38d7
    d8f4195 HEAD@{4}: reset: moving to HEAD
    d8f4195 HEAD@{5}: reset: moving to HEAD^
    86d38d7 HEAD@{6}: reset: moving to HEAD
    86d38d7 HEAD@{7}: commit: 第三次修改说明
    d8f4195 HEAD@{8}: commit: 修改后提交说明
    0d35e3b (HEAD -> master) HEAD@{9}: commit (initial): 本次提交说明
    

    可以看到,上面的日志记录了当前所有的操作记录,包括commit id 和 master分支的时间线。时间线是从左到右进行的,最后一次HEAD@{9}即当前时间线下的操作。

    • 通过git reflog 的记录信息中的commit id 进行版本回退
    $ git reset --hard 86d38d7
    
    HEAD is now at 86d38d7 第三次修改说明
    

    查看

    $ git log
    
    commit 86d38d7a8c0e09ddb6aac7d12c59fbcb7fdf85c1 (HEAD -> master)
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:29:50 2018 +0800
    
        第三次修改说明
    
    commit d8f41954f5298870fe6ed48fce2987f7f564a7c2
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:25:23 2018 +0800
    
        修改后提交说明
    
    commit 0d35e3bad423ec2f3d6042f5fee5cf73a7821c41
    Author: RideoCos <huanyu921@163.com>
    Date:   Thu Oct 11 10:02:36 2018 +0800
    
        本次提交说明
    
    • 查看文件内容
    $ cat a.txt
    
    good bye
    
    你好
    
    • 丢掉工作区上的修改
    $ git checkout  a.txt
    

    注意 : 只能删除在工作区上的操作,如果已经提交到暂存区就不能删除。

    • 删除版本
    
    $ git rm a.txt
    $ git commit -m "删除版本库"
    

    Part four 远程仓库

    • 远程克隆仓库到本地 http
    $ git clone https://gitee.com/rideocos/Study.git
    

    git clone后,就可以对本地仓库进行修改,修改后提交到版本库再git push到远程仓库同步更新

    • 本地更新同步到远程
    $ git push
    

    git push 到远程仓库需要输入远程仓库的登录名与密码

    相关文章

      网友评论

          本文标题:Git常用命令

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