美文网首页
Git学习笔记

Git学习笔记

作者: 琼脂糖 | 来源:发表于2018-11-11 22:34 被阅读21次

    1. Intro

    1. 每个Git Project包含两部分:1)我们创建和修改的文件和文件夹 2)Git记录的关于整个Project的历史
      这两部分一起称为Repository
    2. Git记录的东西存在Repository的根目录下的.git文件夹中。不要随便的删除和移动它。
    3. git status 上次保存后哪些文件被修改了:哪些文件在staging area中;哪些文件更改了但没有放在里面。
    4. Git有一个中间区域(staging area)用于存放你修改后又没有保存的文件。可以将staging area看成一个箱子;commit add相当于将文件放入这个箱子;commit push相当于将箱子放入mail并寄出。
      箱子可以取出和放入;但mail就不能再修改了。
      _1541647769_1045108767.png

    1.1. git diff filename 查看文件当前和上次saved的区别

    git diff 库中所有修改文件
    git diff directory 某目录下的修改文件

    1.2. diff 输出结果

    diff --git a/report.txt b/report.txt
    index e713b17..4c0742a 100644
    --- a/report.txt
    +++ b/report.txt
    @@ -1,4 +1,4 @@
    -# Seasonal Dental Surgeries 2017-18
    +# Seasonal Dental Surgeries (2017) 2017-18
    
     TODO: write executive summary.
    
    1. 命令: a为“first version”,b为“second version”
    2. index line:showing keys into Git's internal database of changes.
        • -:removed lines 用 -
      • +:added lines 用 +
    1. @@:修改的地方。start line,number of lines (从line 1开始的4列被删除,然后换成新的4列)
      减号 表示 前者相对于后者 要 删除几列
      加号 表示 后者相对与前者 要增加几列
    2. 具体修改的内容。没有被修改的背景内容有时也会显示,前面没有-或者+
    1. 向staging area中加入修改的文件
    2. commit staging area中的所有文件

    1.3. git add

    1.git diff -r HEAD 和最近commit的一次版本进行比较
    git diff -r HEAD path/to/file 特定的某个文件

    1.4. git commit

    1. 该命令将box中的多个changed files作为一个整体保存。后面如果要回溯,也是以这个为单位回溯。
    2. git commit -m "Program appears to have become self-aware."
    3. git commit --amend - m "new message" 修改log信息

    1.5. git log

    1. 记录整个库的commit log 信息。最新的在最前面。
    2. code
    commit 0430705487381195993bac9c21512ccfb511056d
    Author: Rep Loop <repl@datacamp.com>
    Date:   Wed Sep 20 13:42:26 2017 +0000
    
        Added year to report title.
    

    3.commit line: 该commit的hash ID(unique)
    Authoor
    Data
    Log信息

    1. git log path 查看特定目录或特定文件的log历史
      如果是目录,仅显示增加或删除的文件;如果是文件,显示文件的修改内容
    2. git commit 打开文本编辑器 录入log信息,井号开头的会被忽略

    1.6. git 存储的信息

    1. commit hash,最新的在最后
      tree: 库中修改的文件
      blob:文件压缩的内容展示;没变的文件使用上一个commit的
    1. git show hash前几位 查看某个commit的详细信息 ; hash相当于绝对路径
      git show 0da2f7
    1. HEAD指代最近一次commit。HEAD1指代再前一次,HEAD2指代再前一次。
    2. git annotate file
    04307054        (  Rep Loop     2017-09-20 13:42:26 +0000       1)# Seasonal Dental Surgeries (2017) 2017-18
    5e6f92b6        (  Rep Loop     2017-09-20 13:42:26 +0000       2)
    5e6f92b6        (  Rep Loop     2017-09-20 13:42:26 +0000       3)TODO: write executive summary.
    

    5项内容,部分在括号中
    The first eight digits of the hash, 04307054.
    The author, Rep Loop.
    The time of the commit, 2017-09-20 13:42:26 +0000.
    The line number, 1.
    The contents of the line, # Seasonal Dental Surgeries (2017) 2017-18.

    1. git show commitID
    2. git diff ID1..ID2 两个commit间的差别
      git diff HEAD1..HEAD3

    1.7. add files

    1. git add 使用之前,git不会注意任何一个文件的修改。
      用git status来查看没有被tracked的文件

    1.8. gitignore

    1. 有些中间文件不希望被git track,可以使用wildcard patterns记录在.gitignore中
    build
    *.mpl
    

    git会忽略叫build的文件和文件夹(内的所有文件);结尾是.mpl的文件

    1.9. git clean

    1. git clean -n 显示git没有track的file list
    2. git clean -f 删除上面的文件

    1.10. git config

    1. git config --list with one of three additional options:
      --system: settings for every user on this computer.
      --global: settings for every one of your projects.
      --local: settings for one specific project.
      后面的优先级更高
    2. 设定配置信息(新的电脑需要设定user name和email)
      git config --global setting.name setting.value
      (user.name 和 user.email)

    1.11. 取消修改

    1. 如果stage错了(即加入commit的),用 git reset HEAD取消前一次git add。
    2. git add之后 如果有新的改动,需要再次git add。
    3. git checkout -- filename 取消没有被staged的修改
    _1541735226_1844481055.png

    两个csv文件都被staged,之后northern.csv又有一些修改。取消这些修改。

    1. 如果文件已经staged。先unstage,然后取消修改。
      git reset HEAD path/to/file
      git checkout -- path/to/file
      总结:stage a file:git add
    _1541735592_1266646940.png

    这些就是staged files(后续等待commit)
    unstage a file:git reset

    1. 恢复文件的某个历史版本。将每次commit看做一次存储的历史版本。
      git checkout 2242bd report.txt 会恢复到2242bd commit的版本
      恢复不会消除历史记录,恢复也会被记录为一次commit(之后需要git commit)
      git log -3 report.txt 该文件的最后三次commit
    2. 取消所有修改
      git reset HEAD data (data目录下的)
      git checkout -- data

    相关文章

      网友评论

          本文标题:Git学习笔记

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