zoukankan      html  css  js  c++  java
  • git 的基础

    1.在现有的目录中初始化仓库

    [Derek@git]$ git init

    2.把一个文件放到Git仓库中

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

    [Derek@git]$ git add readme.txt

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

    [Derek@git]$ git commit -m "wrote a readme file"
    [master (root-commit) eaadf4e] wrote a readme file
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt

      -m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

      git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。

    3.记录每次更新到仓库

      继续修改readme.txt文件,改成如下内容:

    Git is a distributed version control system.
    Git is free software.

      运行git status 查看结果:

    [Derek@git]$ 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:   readme.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")

    4.查看已暂存和未暂存的修改

    [Derek@git]$ git diff
    diff --git a/README.md b/README.md
    index e69de29..a34691f 100644
    --- a/README.md
    +++ b/README.md
    @@ -0,0 +1 @@
    +this is new line

      若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令。

    [Derek@git]$ git diff  --staged
    diff --git a/README.md b/README.md
    new file mode 100644
    index 0000000..e69de29

    5.提交更新

       每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit

    [Derek@git]$ git commit

      -m 选项,将提交信息与命令放在同一行

    [Derek@git]$ git commit -m 'create'
    [master (root-commit) 88a09aa] create
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 README.md

    6.跳过使用暂存区域

      给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交

    [Derek@git]git commit -a -m  'update'
    [master 86d801b] update
     1 file changed, 1 insertion(+)

    7.查看提交历史

    [Derek@git]$ git log
    commit 86d801bbaa4cc560acc7c8f79a65cac85201f170 (HEAD -> master)
    Author: wangfeng7399 <wangfeng17399@163.com>
    Date:   Tue Feb 19 18:48:48 2019 +0800
    
        update
    
    commit 88a09aa009af29e9a784d6dbb68589f70f1c51be
    Author: wangfeng7399 <wangfeng17399@163.com>
    Date:   Tue Feb 19 18:48:04 2019 +0800
    
        create

      -p 用来显示每次提交的内容差异, -2 来显示最近两次提交

    [Derek@git]git log -p -2
    commit 86d801bbaa4cc560acc7c8f79a65cac85201f170 (HEAD -> master)
    Author: wangfeng7399 <wangfeng17399@163.com>
    Date:   Tue Feb 19 18:48:48 2019 +0800
    
        update
    
    diff --git a/README.md b/README.md
    index e69de29..a34691f 100644
    --- a/README.md
    +++ b/README.md
    @@ -0,0 +1 @@
    +this is new line
    
    commit 88a09aa009af29e9a784d6dbb68589f70f1c51be
    Author: wangfeng7399 <wangfeng17399@163.com>
    Date:   Tue Feb 19 18:48:04 2019 +0800
    
        create
    
    diff --git a/README.md b/README.md
    new file mode 100644
    index 0000000..e69de29

      --pretty  指定使用不同于默认格式的方式展示提交历史, 用 oneline 将每个提交放在一行显示,查看的提交数很大时非常有用

    [Derek@git]$ git log --pretty=oneline
    ca82a6dff817ec66f44342007202690a93763949 changed the version number
    085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test
    a11bef06a3f659402fe7563abf99ad00de2209e6 first commit

    git log --pretty=format 常用的选项 ,列出了常用的格式占位符写法及其代表的意义。

    选项说明
    %H 提交对象(commit)的完整哈希字串
    %h 提交对象的简短哈希字串
    %T 树对象(tree)的完整哈希字串
    %t 树对象的简短哈希字串
    %P 父对象(parent)的完整哈希字串
    %p 父对象的简短哈希字串
    %an 作者(author)的名字
    %ae 作者的电子邮件地址
    %ad 作者修订日期(可以用 --date= 选项定制格式)
    %ar 作者修订日期,按多久以前的方式显示
    %cn 提交者(committer)的名字
    %ce 提交者的电子邮件地址
    %cd 提交日期
    %cr 提交日期,按多久以前的方式显示
    %s 提交说明

    git log 的常用选项

    选项说明
    -p 按补丁格式显示每个更新之间的差异。
    --stat 显示每次更新的文件修改统计信息。
    --shortstat 只显示 --stat 中最后的行数修改添加移除统计。
    --name-only 仅在提交信息后显示已修改的文件清单。
    --name-status 显示新增、修改、删除的文件清单。
    --abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
    --relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
    --graph 显示 ASCII 图形表示的分支合并历史。
    --pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。

    在 限制 git log 输出的选项 中列出了常用的选项

    选项说明
    -(n) 仅显示最近的 n 条提交
    --since--after 仅显示指定时间之后的提交。
    --until--before 仅显示指定时间之前的提交。
    --author 仅显示指定作者相关的提交。
    --committer 仅显示指定提交者相关的提交。
    --grep 仅显示含指定关键字的提交
    -S 仅显示添加或移除了某个关键字的提交

    8.取消暂存的文件

    [Derek@git]git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        modified:   README.md
    [Derek@git]git reset HEAD README.md
    Unstaged changes after reset:
    M   README.md
    [Derek@git]$ 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:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")

    注意:虽然在调用时加上 --hard 选项可以令 git reset 成为一个危险的命令,可能导致工作目录中所有当前进度丢失!但本例中工作目录内的文件并不会被修改。 不加选项地调用 git reset 并不危险 它只会修改暂存区域。

    9.撤销对文件的修改

    $ git checkout  -- README.md
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        renamed:    README.md -> README

    注意:git checkout -- [file] 是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。 除非你确实清楚不想要那个文件了,否则不要使用这个命令。

    命令的总结:

    git init   初始化
    
    git status  查看状态
    
    git add  添加到缓存区
    
    git commit 提交到版本库
    
    git log  查看提交记录,当前位置往前的提交记录
    
    git reflog 查看所有的提交记录
    
    git reset HEAD  从缓存区把文件拉取到工作区
    
    git reset --hard  回滚到某一个版本,可以写长的值,也可以写短的值
    
    git diff 对比的是工作区跟缓存区之间的差别
    
    git diff --cached 对比缓存区跟版本库之间的差别
    
    git checkout -- filename 取消修改的内容
    
    git stash  将当前开发的内容放在"某个地方"
    
    git stash pop 恢复当前的工作目录,并删除
    
    git stash list  查看stash列表
    
    git stash drop 删除stash
    
    git stash apply 恢复当前的工作目录,不删除stash

    参考:https://blog.51cto.com/wangfeng7399/2352524

  • 相关阅读:
    2.列出目录内容
    mongo2csv
    Python-uiautomator使用说明文档
    uiautomator设备和选择器~Python详解
    hadoop1.2开发环境搭建
    postgresql 查询某一个表中的所有字段
    VolgaCTF 2020 Qualifier Library
    VolgaCTF 2020 Qualifier Newsletter
    2019-2020-2 网络对抗技术 20175211 Exp3 免杀原理与实践
    BJDCTF 2nd Writeup
  • 原文地址:https://www.cnblogs.com/chenxi67/p/10419696.html
Copyright © 2011-2022 走看看