zoukankan      html  css  js  c++  java
  • Git的基本使用

    Git的基本使用

    git init

    把当前目录变成Git可以管理的仓库:

    $ git init
    Initialized empty Git repository in C:UsersydtDesktop练习git-test	est
    

    git status

    可以查看当前状态

    $ git status
    On branch master
    nothing to commit, working tree clean
    

    当前工作区是干净的

    假设在当前目录创建了新建文本文档.txt,git status查看状态

    $ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            "346226260345273272346226207346234254346226207346241243 (2).txt"
    
    nothing added to commit but untracked files present (use "git add" to track)
    

    新增了文件,并且未add和commit(修改监控包括了文件内的修改,当前目录的文件增删、重命名等)

    git diff

    git status可以告诉我们什么文件被修改过,而如果想知道具体的修改,可以用git diff

    $ git diff 新建文本文档.txt
    diff --git "a/346226260345273272346226207346234254346226207346241243.txt" "b/346226260345273272346226207346234254346226207346241243.txt"
    index d800886..31ed750 100644
    --- "a/346226260345273272346226207346234254346226207346241243.txt"
    +++ "b/346226260345273272346226207346234254346226207346241243.txt"
    @@ -1 +1 @@
    -123
     No newline at end of file
    +1231231
     No newline at end of file
    

    git add

    将文件添加进仓库暂存区

    $ git add .        添加所有的文件、文件夹
    $ git add <file>   添加指定名称的文件,<>内部写文件全称
    
    $ git add 新建文本文档.txt
    

    没有任何显示,说明添加成功

    git status查看状态

    $ git status
    On branch master
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
    
            new file:   "346226260345273272346226207346234254346226207346241243.txt"
    

    新建文本文档.txt已经在暂存区。

    git commit

    将暂存区的修改全部提交到分支,-m为提交的说明信息

    $ git commit -m"第一次提交"
    [master (root-commit) ad7f5fe] 第一次提交
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 "346226260345273272346226207346234254346226207346241243.txt"
    

    提交成功

    git status再次查看状态

    $ git status
    On branch master
    nothing to commit, working tree clean
    

    工作区是干净的

    版本库&工作区&暂存区

    image
    工作区:就是在电脑里能看到的目录

    暂存区:用git add把文件添加进去,还未进行commit的区域,就是暂存区;

    版本库: 工作区有一个隐藏目录.git,就是Git的版本库。

    git log

    显示从最近到最远的提交日志

    $ git log
    commit 64fcede692e5db64cbee83d1965a2c15ddaa24e3 (HEAD -> master)
    Author: ydt <468602953@qq.com>
    Date:   Fri Aug 17 14:24:30 2018 +0800
    
        xxx
    
    commit ad7f5fe1afbb208e8596b925c4a6198cbe72c5b0
    Author: ydt <468602953@qq.com>
    Date:   Fri Aug 17 14:15:57 2018 +0800
    
        第一次提交
    

    可以加上--pretty-oneline,输出简略信息

    $ git log --pretty=oneline
    64fcede692e5db64cbee83d1965a2c15ddaa24e3 (HEAD -> master) xxx
    ad7f5fe1afbb208e8596b925c4a6198cbe72c5b0 第一次提交
    

    上面的HEAD表示当前版本。那么HEAD^就是上一个版本,那么HEAD^^就是上上个版本,如果版本数较多,可以用HEAD~100,表示上100个版本。

    git reset

    回退到指定版本

    $ git reset --hard HEAD^
    HEAD is now at ad7f5fe 第一次提交
    

    查看提交记录

    $ git log
    commit ad7f5fe1afbb208e8596b925c4a6198cbe72c5b0 (HEAD -> master)
    Author: ydt <468602953@qq.com>
    Date:   Fri Aug 17 14:15:57 2018 +0800
    
        第一次提交
    
    

    成功回退到上个版本

    回退后可以发现,之前的版本已经不存在,如果窗口没有关闭,可以向上查找之前的log信息,找到之前版本的版本号(取前几位就行)

    $ git reset --hard 64fc
    HEAD is now at 64fcede xxx
    

    可以看到,成功回到最新的提交 xxx。

    git reflog

    用来记录你的每一次命令

    假如窗口关闭,找不到新版本的commit id,就可以用git reflog来查找

    $ git reflog
    ad7f5fe (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
    64fcede HEAD@{1}: reset: moving to 64fc
    ad7f5fe (HEAD -> master) HEAD@{2}: reset: moving to HEAD^
    64fcede HEAD@{3}: commit: xxx
    ad7f5fe (HEAD -> master) HEAD@{4}: commit (initial): 第一次提交
    

    同样,顺利的找到了最新版本 xxx

    git checkout -- file

    丢弃工作区的修改

    这里有两种情况

    • 一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    • 一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

    git reset HEAD

    可以把暂存区的修改撤销掉,重新放回工作区。

    这里我们将txt随便做点修改,然后add进暂存区,查看状态:

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            modified:   "346226260345273272346226207346234254346226207346241243.txt"
    
    

    接下来执行撤销:

    $ git reset HEAD 新建文本文档.txt
    Unstaged changes after reset:
    M       新建文本文档.txt
    

    查看状态:

    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            modified:   "346226260345273272346226207346234254346226207346241243.txt"
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    可以看到,现在暂存区是干净的,工作区有修改

    根据需要,还可以进一步删除工作区的修改:

    $ git checkout -- 新建文本文档.txt
    

    至于撤销commit,就该用到版本回退 git reset --hard了。

  • 相关阅读:
    Python——数据结构——字典
    Python——print()函数
    Python数据结构——序列总结
    elasticsearch全文检索java
    elasticsearch单例模式连接 java
    【转载】信号中断 与 慢系统调用
    设计模式——状态模式(C++实现)
    设计模式——观察者模式(C++实现)
    C++调用C方法
    设计模式——外观模式(C++实现)
  • 原文地址:https://www.cnblogs.com/y-dt/p/9748507.html
Copyright © 2011-2022 走看看