您的位置:新葡亰496net > 电脑系统 > 新葡亰496net:git视频笔记,具体学习Github

新葡亰496net:git视频笔记,具体学习Github

发布时间:2019-07-22 23:44编辑:电脑系统浏览(178)

    新葡亰496net 1

    工作区(Working Directory):

    配置git

    git config --global user.name fcj
    git config --global user.email fcj@test.com
    git config --global color.ui true
    git config --list
    vim ~/.gitconfig

     1、创制新旅舍  

    新葡亰496net 2

    就是计算机能看收获的目录,举个例子刚刚创造的learngit文件夹

    创建repository

    git init
    git clone https://github.com/kennethreitz/requests.git

     

     

    版本库(Repository):

    拉长提交文件

    git status
    git add code.py
    git commit -m 'init commit'
    git八个境况:working directory(专门的学业区)、staging area(cache或index)、history

     git init  

    1.安装:

    工作区有叁个遮蔽目录.git,那个不算职业区,而是Git的版本库。

    查看git状态

    git忽略文件:.gitignore
    git status -s
      [][]表示staging area和working directory的改变
      [][M]本土修改没add
      [M][]add后没有commit
      [M][M]上次add未有commit,且本地已再一次修改
    git add:从working directory到staging area
    git commit:从staging area到history

     touch  test.txt

    先是找到git的官方网址,内部有下载链接。

    Git版本库中存了无数东西,个中最重视的正是叫Stage的暂存区,还也许有Git为我们创立的首先个支行master,以及针对master的一个指针——HEAD。

    查看文件差距

    git diff:比较working directory和staging area
    git diff --staged:比较staging area和history
    git diff HEAD:比较working directory和history
    简化git diff信息:git diff --stat

     git add --a

    也能够用下边包车型客车,笔者的是win7的陆十八位系统:

    日前大家把公文往Git库增多的时候,是分两步实行的:

    收回误操作

    git reset:从history恢复到staging area
    git checkout:从staging area恢复到working directory
    git checkout HEAD:从history恢复到working directory、且恢复staging area
    git commit -am 'add commit':从working directory同有难题间add到staging area,并提交到history:
    working directory和staging area:git add <===> git diff <===> git checkout
    staging area和history:git commit <===> git diff --staged <===> git reset
    history和working directory:git commit -am <===> git diff HEAD <===> git checkout HEAD

     git commit -m "fist commit"

    能够在这里下载:Git-2.13.0-64-bit.exe链接:http://pan.baidu.com/s/1dFIOU1V密码:xky2

    1. 用git add把文件加多进去,实际上是加上到暂存区;

    2. 用git commit提交更换,实际上就是把暂存区的装有内容提交到当前支行。

      g@g-PC MINGW64 /learngit (master)

      $ vi readme.txt

      g@g-PC MINGW64 /learngit (master)

      $ cat readme.txt

      Git is a distributed version control system.

      Git is free software distributed under the GPL.

      Git has a mutable index called stage.

      g@g-PC MINGW64 /learngit (master)

      $ touch LICENSE

      g@g-PC MINGW64 /learngit (master)

      $ cat LICENSE

      abc

      g@g-PC MINGW64 /learngit (master)

      $ git status # 查看情状

      On branch master

      Changes not staged for commit: # 修改了但未被提交

      (use "git add ..." to update what will be committed)

      (use "git checkout -- ..." to discard changes in working directory)

           modified:   readme.txt
      

      Untracked files: # 未有被抬高过 (Untracked : 无路线的;无脚印的,无鞋的痕迹的)

      (use "git add ..." to include in what will be committed)

           LICENSE
      

      no changes added to commit (use "git add" and/or "git commit -a") # 未有改造且已被交付的文本

      g@g-PC MINGW64 /learngit (master)

      $ git add readme.txt

      g@g-PC MINGW64 /learngit (master)

      $ git add LICENSE

      warning: LF will be replaced by CRLF in LICENSE.

      The file will have its original line endings in your working directory.

      g@g-PC MINGW64 /learngit (master)

      $ git status

      On branch master

      Changes to be committed:

      (use "git reset HEAD ..." to unstage)

           new file:   LICENSE
      
           new file:   biubiu
      
           modified:   readme.txt
      

      g@g-PC MINGW64 /learngit (master)

      $ git commit -m "undestand how stage work" # Git的付出,是一并全部付出,而不能够单个提交

      [master 50b7574] undestand how stage work

      3 files changed, 4 insertions( ), 1 deletion(-)

      create mode 100644 LICENSE

      create mode 100644 biubiu

      g@g-PC MINGW64 /learngit (master)

      $ git status # 那事的暂存区已经干干净净 working tree clean

      On branch master

      nothing to commit, working tree clean

      git diff #是专门的学业区(work dict)和暂存区(stage)的可比

      git diff --cached #是暂存区(stage)和分支(master)的比较

    除去和重命名文件

    git rm old.py:从本地和staging area删除文件
    git rm --cached code.py:从staging area删除文件,但保留当三步跳件
    git mv code.py code.go:重命名
      等价于:
      git rm --cached code.py
      mv code.py code.go
      git add code.go

     

    下边是安装后的效劳:

    在Git中,用HEAD表示最近版本,约等于流行的交给3628164...882e1e0(注意本人的付出ID和你的大势所趋不平等),上一个本子便是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个相比轻松数可是来,所以写成HEAD~100

    新葡亰496net:git视频笔记,具体学习Github。暂存专门的工作区

    git stash:最新修改归入抽屉
    git stash list:查看抽屉内容
    git stash pop:从抽屉中平复

     初叶化新酒店,在当前目录下由二个.git的目录,全体git须求的数目和财富都放在那一个目录中,在当面目录下添Gavin件后,需求通过git add 加多到文件追踪管理(增加到暂存区,数据存放在.git/index 目录索引,数据之中保存在.git/objects 中), git commit -m "提交表明备注" 提交的消息会付给到数据仓库,数据交到到正规仓库,具体保存在.git/objects 中,如以上提交会富含二个commit,tree ,blob 对象。

    新葡亰496net 3

    g@g-PC MINGW64 /learngit (master)
    $ cat readme.txt
    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    g@g-PC MINGW64 /learngit (master)
    $ git reset --hard HEAD^ #回滚到上一个版本
    HEAD is now at c3528d1 append GPL
    g@g-PC MINGW64 /learngit (master)
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    
    
    g@g-PC MINGW64 /learngit (master)
    $ git reset --hard 932f121 #回滚到某一版本(版本号不用写全,Git会自动寻找)
    HEAD is now at 932f121 del 2 rows
    g@g-PC MINGW64 /learngit (master)
    $ cat readme.txt
    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    

    commit对象

    git log
    git log --oneline
    两种对象:commit、tree、blob
    各类对象皆有哈希值
    git cat-file -t HEAD
    git cat-file -p HEAD
    git cat-file -t 对象哈希:查看对象类型
    git cat-file -p 对象哈希:查看对象内容

     

    git功用:能够用贰个代码文件来表明具有的本子。他的准则是经过给种种版本拍快速照相的点子来存款和储蓄各种文件。限制是不得不是txt文本文书档案。

    翻开命令历史,以便回过了未来到以后版本

    tree-ish表达式

    git rev-parse HEAD
    git rev-parse HEAD~
    git rev-parse HEAD~4
    git rev-parse master
    git rev-parse master~
    git rev-parse master~4:定位到commit
    git cat-file -p master~4
    git rev-parse master~4^{tree}:定位到commit下的tree
    git rev-parse HEAD~4:code.py:定位到文件
    git cat-file -p HEAD~4:code.py
    git show HEAD~4:code.py
      git show <===> git cat-file -p

    2、从现存饭店克隆

     新葡亰496net 4

    g@g-PC MINGW64 /learngit (master)
    $ git reflog
    932f121 (HEAD -> master) HEAD@{0}: reset: moving to 932f121
    c3528d1 HEAD@{1}: reset: moving to HEAD^
    932f121 (HEAD -> master) HEAD@{2}: commit: del 2 rows
    c3528d1 HEAD@{3}: commit: append GPL
    311bbf5 HEAD@{4}: commit (initial): wrote a readme file
    

    开创和删除分支

    git branch:列出全数支行
    git branch tryidea:创立分支
    git checkout tryidea:切换分支
    git checkout master:切换回master
    git branch -d tryidea:删除分支

     

    上海教室正是bash的window。能够在内部输入指令。

    联合分支

    git checkout -b tryidea:创立并立刻切换分支
    分层提交后必须统一才得以去除
    git checkout master
    git merge tryidea
      Fast-forward
    git branch -d tryidea
    3-way merge:master也时有发生提交时

    git clone  url

     

    摄像地址

    深远明白GIT
    http://edu.51cto.com/course/1838.html

     


    git clone git@github.com:torvalds/linux.git 

     2.创建

     

    新葡亰496net 5

    如从gitHub上克隆一份linux的源码,不止是仿造最新版本的源码,还克隆了具有数据货仓的历史版本,每一个文件的每二个本子,那一年立刻服务器github 发生故障,能够用当地数据酒馆重新建设构造服务器上的库房。能够还原到从服务器克隆或最终更三回从服务器拉去的气象。在.git 目录中,已经保存了全数版本记录,本麻芋果件夹即职业目录的富有文件删除了,然后从中抽出最新版本的公文拷贝。

    首先在 E:pythongitTUT 内右键,选拔Git Bash Here,就能够张开叁个在本路线下的bash窗口。

     

    新葡亰496net 6

    3、检查文件更新情形

    新葡亰496net 7

       

     

        要求鲜明当前专门的工作区和暂存区文件的图景,能够通过git status 命令。在工作区和暂存区的目录状态能够查看。

    设置用户名:

     

    git config --global user.name "longbiscuit"      ,那几个用户名和邮箱是在GitHub官方网站你本身注册的用户名和信箱。

      git status

    能够用  git config user.name  来检查输入的用户名。

     

    设置邮箱:

     On branch master  nothing to commit, working directory clean

    git config --global user.email "blzhu@buaa.edu.cn"

     

    新葡亰496net 8

    时下在暗中认可master 分支,当前职业目录和暂存区未有别的追踪的文书,也从未其余公文提交后改动,也尚未新扩大,未被盯梢的公文。

    初始化:

     

    git init

    notepad test.txt

     会在目录下活动初阶化并扭转 .git文件夹,

    notepad t.txt

    新葡亰496net 9

     

    显示全数的文书: ls -a

    修改test.txt文件,新扩展加一个t.txt 文件,查看当前文件状态。

    输入 open .git  后会自动展开那些隐形的文本夹。但本身没张开,这一个先不管了,不根本。能够手动展开看看。

     

    创办理文件件 1.py:touch 1.py

    $ 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 di
    #
    #       modified:   test.txt
    #
    # Untracked files:
    #   (use "git add <file>..." to include in what will be committed)
    #
    #       t.txt
    no changes added to commit (use "git add" and/or "git commit -a")

    新葡亰496net 10

     

    但此时还并没有增进到git管理库中(git是本地版本,github是网络版本,用这一个客户端能够从来管理,也得以联网络传到网络上)。

    新添的文件t.txt 在未追踪文件范围Untracked files 范围,须要经过git add 把改文件增多的暂存区,归入的版本追踪管理。

    反省景况:git status**

     

     新葡亰496net 11

    4、 添Gavin书到暂存区

     提示1.py是一向不被增加各管理库个中的,untracked files正是无踪影的公文。

     

    如果要加多到库中,首先要 git add 1.py改为能够增进到库中,能够提交修改。

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

    新葡亰496net 12

     

    翻看status,能够看来 changes to be committed,变为能够提交状态。

    git add . 把近来抱有目录文件全数新文件和修改文件增多到暂存区,假如test.txt 文件提醒是 Changes not staged for commit ,表达此追踪文件已经发生修改,然则还未增添到暂存区,把修改的文书通过git add 命令增添到暂存区后。提醒Changes to be committed. 文件已经暂存,随时能够交到到库房 。h.txt 新扩大Gavin件没有跟踪状态Untracked files ,通过git add命令增添到暂存区,已加盟追踪文件的界定。

    交由变化到库中:git commit -m "create 1.py",这些后边双引号中的内容是注释

     

    新葡亰496net 13

    5、版本提交

    流程为:

     

    新葡亰496net 14

    $ git commit -m "this is test commit"
    [master d4a498a] this is test commit
        git commit --amend --reset-author

     

    2 files changed, 3 insertions( )
    create mode 100644 t.txt

     

     


    经过git commit -m "xxx" 将当前暂存区的内容提交到酒馆,本次commit 提交文件是在暗中认可master分支,提交commit 对象贮存在.git/objects 的d4/1498a... 的文件中,该公文指向三个树tree对象。

    新葡亰496net 15

     

     查看修改历史:git log

    6、查看当前提交日志记录

    新葡亰496net 16

     

    能够观看从前创制过一个1.py(何况commit过了)

    $ git log
    commit d4a498a197c24421acee5c5ff96cfbc7e5c3be9e
    Author: andy<andy@gmail.com>
    Date:   Sat Mar 8 14:23:37 2014 0800

    今昔修改1.py:

        this is test commit

    新葡亰496net 17

    commit 80071e48614361dc282473d6482e3faa9fec17d9
    Author:andy<andy@gmail.com>
    Date:   Sat Mar 8 13:35:13 2014 0800

    追加了三个:a=1,之后保存1.py

        1st commit

    这时再git status查看状态,

     

    新葡亰496net 18

    git log 命令查看当前版本

     

     

    会提示,changes not staged for commit(变化还没到可提交的级差,stage是阶段,这里是指可commit 的阶段),那是个怎么着状态吧,看下图:

    7、文件差别相比较

     

     

    新葡亰496net 19

     专门的学业区和暂存区文件相比用git diff 命令,暂存区和多年来一天提交版本之间的差距,能够用git diff --cached/staged. 如下:

     

      近年来在test.txt 文件唯有1111111 文件内容,我在文件test.txt中增加22222222等剧情,比较当前暂存区和专门的学问文件差别

    就是unmodified和modified的气象。咱修改过了,所以在modified状态,bash窗口中也是有提醒,modified 1.py

     

     所以此时要先:git add 1.py

    $ notepad test.txt

    那时候会唤醒changes to be commited:(就是能够提交了)

     

    用黑古铜色提醒modified 1.py,

    $ git diff
    diff --git a/test.txt b/test.txt
    index 0147537..f33d264 100644
    --- a/test.txt
    b/test.txt
    @@ -1,3 1,4 @@
    11111111111111
    22222222222222

    那时候得以用:git commit -m "change 1" 来交给那个变化。

     

    新葡亰496net 20

    $ 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 d
    #
    #       modified:   test.txt
    #
    no changes added to commit (use "git add" and/or "git commit -a")

    双重观察log,能够看看修改过一回:

     

    新葡亰496net 21

    $ git diff --staged

    这时候git status 会开采并未索要commit 的文件。

     

    新葡亰496net 22

    能够窥见工作区比暂存区test.txt文件多扩大了22222222222222 内容。暂存区和数据仓库内容是完全同样的。同有时候走访当前职业区状态。今后大家啊刚刚修改的内容增加到暂存区,同期比较暂存区和数据旅舍文件差别。

    什么观看改换的内部景况呢? 用  git diff

     

    诸如自身以后修改1.py:

    $ git add test.txt

    a=2

     

    b=1

    $ git diff

     新葡亰496net 23

     

    今后自个儿翻看意况:git status -s  ,在那之中-s是缩减方式的查阅

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

    新葡亰496net 24

     

    新葡亰496net 25

    把专门的学业区修改的内容更新到暂存区后,能够看到此时暂存区和职业区文件完全相同。状态是是已暂存,带提交状态。与此同一时间,我们能够相比暂存区和数据冷酷之间的差距和相比。

    二种样式的升迁意思是一样的。

     

    输入git diff后:

    $ git diff --staged
    diff --git a/test.txt b/test.txt
    index 0147537..f33d264 100644
    --- a/test.txt
    b/test.txt
    @@ -1,3 1,4 @@
    11111111111111
    22222222222222

    新葡亰496net 26

     

    -a=1后边的减号表示删掉了某条语句,同理, a=2后边的加号表示增多那条语句。

    我们得以很清楚的来看近日暂存区和数据商旅版本比较。暂存区test.txt 内容比近日叁遍提交内容多22222222222222 一行数据。提交数据到数据仓库。大家今日得以把职业区目录和数据酒馆相比,看看test.txt 直接的文本内容差距。

    再交付全体更换:git add .  此时约等于 git add 1.py,因为此目录下独有贰个1.py,而add前边的点号表示全数的,所以git add . 约等于付出全数改动。

     

    新葡亰496net 27

    $ git diff head
    diff --git a/test.txt b/test.txt
    index 0147537..f33d264 100644
    --- a/test.txt
    b/test.txt
    @@ -1,3 1,4 @@
    11111111111111
    22222222222222

     新葡亰496net 28

     

    能够付出的state状态,-s状态下显得是贰个大写的青古铜色的M加多个空格再跟文档名。

    能够很及时看出职业区文件内容比较仓库有新修改的始末。此时我们付出更新具备文件都未曾不相同了。看看文件差别。

    而不行提交的unstaged状态(unmodified或modified)在-s提醒状态下显得三个大写的新民主主义革命的M加贰个空格再跟文档名。

     

    新葡亰496net 29

    $ git commit -m "test git diff "
    [master fc0166f] test git diff
    Committer: andy<andy@gmail.com>

     新葡亰496net 30

        git commit --amend --reset-author

    看样子差异了啊?

    1 file changed, 1 insertion( )

    那儿 git diff是不曾任何的显示,因为是相对来说unstaged这几个景况和上三次commit之后的分歧(说白了便是四遍都commit之后的未修改(unstaged)状态),而明天是staged状态(等待git commit),所以并未有别的输出:

     

     新葡亰496net 31

    $ git diff
    $ git diff --staged
    $ git diff head

    就此各状态下输入git status -s  ,输出如下:

     

    新葡亰496net 32

    8、文件删除和移动

     此时修改了两条语句,也add了,但并未有commit,可知处于最左边的staged状态,并从未进去commit后的unmodified状态,git diff是相比较不出去的。要用git diff --cached:

     

     新葡亰496net 33

    负有的做事区rm xxx删除后,能够直接从数据堆栈获取近期一次提交版本的内容 git rm xxx。间接从数据客栈删除此文件内容。

    倘诺这时候大家再出席一条语句:c=d,再查看情状git status -s:

     

    新葡亰496net 34

    $ ls
    h.txt  test.txt

    前二个铁灰的M表示前边staged状态,后一个樱桃红的M表示后边又助长c=b语句后变为了unstaged状态,借使有五个MM,大家要看改换的内容的话要用git diff HEAD:

    $ rm h.txt

     新葡亰496net 35

    $ ls
    test.txt

    若用git diff --cached则只会显示这一步的生成:

    $ git diff
    diff --git a/h.txt b/h.txt
    deleted file mode 100644
    index 456f979..0000000
    --- a/h.txt
    /dev/null
    @@ -1,3 0,0 @@
    -welcome to here
    -very good

    新葡亰496net 36

     

     

    能够通过文某比较当前的干活目录h.txt 文件已经被剔除了,职业区目录和暂存区比较文件差距也可以返现文件删除情势。接下来删除暂存区目录

     

     

    新葡亰496net 37

    $ git diff --staged

     

    $ git rm h.txt
    rm 'h.txt'

     新葡亰496net 38

    $ git diff --staged
    diff --git a/h.txt b/h.txt
    deleted file mode 100644
    index 456f979..0000000
    --- a/h.txt
    /dev/null
    @@ -1,3 0,0 @@
    -welcome to here

    在git提交环节,存在三当先四分之一:working tree, index file, commit

    -very good

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

     

    透过删除暂存区文件前后能够相比出文件的差距。此时文件也不在追踪状态。还也有我们无非希望删除暂存区的源委,不删除工作区的原委

    git rm --cached -f h.txt  的秘籍来贯彻,极度是本着专门的学业区有修改,要刨除暂存区内容。

     

     

    $ git reset --hard
    HEAD is now at fc0166f test git diff

    $ ls
    h.txt  test.txt

     

    $ git rm --cached h.txt
    rm 'h.txt'

    $ git diff

    $ git diff head
    diff --git a/h.txt b/h.txt
    deleted file mode 100644
    index 456f979..0000000
    --- a/h.txt
    /dev/null
    @@ -1,3 0,0 @@
    -welcome to here

    那三大片段中:
    working tree:正是您所办事在的目录,每当你在代码中开始展览了改造,working tree的情事就改成了。
    index file:是索引文件,它是三番五次working tree和commit的桥梁,每当我们运用git-add命令来注册后,index file的源委就改成了,此时index file就和working tree同步了。
    commit:是最后的级差,唯有commit了,我们的代码才真的走入了git仓库。大家使用git-commit正是将index file里的内容交给到commit中。
    小结一下:
    git diff:是翻开working tree与index file的差其余。
    git diff --cached:是查看index file与commit的差距的。
    git diff HEAD:是查看working tree和commit的差别的。(你早晚未有忘掉,HEAD代表的是多年来的三次commit的音信)

    -very good

    $ git diff -cached
    error: invalid option: -cached

    $ git diff --cached h.txt
    diff --git a/h.txt b/h.txt
    deleted file mode 100644
    index 456f979..0000000
    --- a/h.txt
    /dev/null
    @@ -1,3 0,0 @@
    -welcome to here
    -very good

     

    移动

    git 移动文件操作是是周旋先活动复制贰个新文件,删除原著件,增加新文件到追踪范围。

     

    $ ls
    h.txt  test.txt

    $ git mv h.txt d.txt   结果是一律,也便是以下三条命令

    $ ls
    d.txt  test.txt

    $ mv d.txt to.txt

    $ git rm d.txt
    rm 'd.txt'

    $ git add to.txt

     

     

    9、查看提交历史

     

    $ git log
    commit fc0166f53a45cfc4c17079e5e3454fb7e3136cb6
    Author: andy<andy@gmail.com>
    Date:   Sat Mar 8 15:52:10 2014 0800

        test git diff

    commit d6eab3a38aee0b25ac395899c82edd48723a2ea9

    Author: andy<andy@gmail.com>

    Date:   Sat Mar 8 15:36:53 2014 0800

        enforce commit'

    commit 85ec024140442df6db8625a07c2ee7369cceb704

    Author: andy<andy@gmail.com>

    Date:   Sat Mar 8 15:35:44 2014 0800

        com 3

     

     

    git log  查看提交历史,git log -p -n  近日n 次提交的内能和距离。查看历史记录计算新闻 git log --stat,查看提交的历史记录格式可自由选取。

     

    $ git log --pretty=format:"%h - %an, %ar : %s"
    fc0166f - yyf, 48 minutes ago : test git diff
    d6eab3a - yyf, 63 minutes ago : enforce commit'
    85ec024 - yyf, 65 minutes ago : com 3
    d4a498a - unknown, 2 hours ago : this is test commit
    80071e4 - unknown, 3 hours ago : 1st commit

     

    列出了常用的格式占位符写法及其代表的意义。

    选项   说明
    %H  提交对象(commit)的全体哈希字串
    %h  提交对象的简短哈希字串
    %T  树对象(tree)的完全哈希字串
    %t  树对象的简短哈希字串
    %P  父对象(parent)的欧洲经济共同体哈希字串
    %p  父对象的简短哈希字串
    %an 作者(author)的名字

    本文由新葡亰496net发布于电脑系统,转载请注明出处:新葡亰496net:git视频笔记,具体学习Github

    关键词:

上一篇:没有了

下一篇:没有了