澳门金沙国际 1

澳门金沙国际 2

工作区(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

澳门金沙国际 3

澳门金沙国际 4

就是电脑能看收获的目录,比如刚刚创造的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

1.安装:

1.安装:

工作区有2个隐藏目录.git,这些不算工作区,而是Git的版本库。

git录制笔记,具体学习Github。查看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

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

率先找到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

也足以用下边包车型大巴,小编的是win7的陆拾陆位系统:

也得以用下面包车型地铁,作者的是win7的60人系统:

前方大家把公文往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-2.13.0-64-bit.exe链接:http://pan.baidu.com/s/1dFIOU1V密码:xky2

能够在这里下载: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

暂存工作区

git stash:最新修改放入抽屉
git stash list:查看抽屉内容
git stash pop:从抽屉中还原

澳门金沙国际 5

澳门金沙国际 6

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文本文书档案。

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

 澳门金沙国际 7

 澳门金沙国际 8

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。能够在里面输入指令。

上海教室就是bash的window。能够在中间输入指令。

合并分支

git checkout -b tryidea:创制并当即切换分支
支行提交后必须联合才得以去除
git checkout master
git merge tryidea
  Fast-forward
git branch -d tryidea
3-way merge:master也时有产生提交时

 

 

摄像地址

深远领悟GIT
http://edu.51cto.com/course/1838.html



 2.创建

 2.创建

澳门金沙国际 9

澳门金沙国际 10

首先在 E:\python\gitTUT 内右键,选择Git Bash
Here,就会打开二个在本路径下的bash窗口。

首先在 E:\python\gitTUT 内右键,采用Git Bash
Here,就会打开七个在本路径下的bash窗口。

澳门金沙国际 11

澳门金沙国际 12

澳门金沙国际 13

澳门金沙国际 14

 

 

设置用户名:

设置用户名:

git config –global user.name “longbiscuit”    
 ,这一个用户名和信箱是在GitHub官网你自身注册的用户名和信箱。

git config –global user.name “longbiscuit”    
 ,那些用户名和信箱是在GitHub官网你协调注册的用户名和邮箱。

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

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

设置邮箱:

安装邮箱:

git config –global user.email “blzhu@buaa.edu.cn”

git config –global user.email “blzhu@buaa.edu.cn”

澳门金沙国际 15

澳门金沙国际 16

初始化:

初始化:

git init

git init

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

 会在目录下自行发轫化并扭转 .git文件夹,

澳门金沙国际 17

澳门金沙国际 18

来得全体的文件: ls -a

显示全部的文本: ls -a

输入 open .git
 后会自动打开那些隐形的文书夹。但小编没打开,那几个先不管了,不重庆大学。能够手动打开看看。

输入 open .git
 后会自动打开这一个隐形的公文夹。但本人没打开,那么些先不管了,不主要。能够手动打开看看。

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

创设文件 1.py:touch
1.py

澳门金沙国际 19

澳门金沙国际 20

但此刻还并未添加到git管理库中(git是本土版本,github是互连网版本,用这些客户端能够一贯管理,也足以联网上传到互连网上)。

但那时还尚未添加到git管理库中(git是地点版本,github是互连网版本,用这一个客户端能够一向保管,也能够联网上传到互联网上)。

检查境况:git status**

自作者批评情状:git status**

 澳门金沙国际 21

 澳门金沙国际 22

 提醒1.py是绝非被添加到管理库当中的,untracked files就是无踪影的文件。

 提醒1.py是从未被添加到管理库个中的,untracked files正是无踪影的文件。

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

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

澳门金沙国际 23

澳门金沙国际 24

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

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

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

交给变化到库中:git commit -m “create
1.py”,那个前面双引号中的内容是注释

澳门金沙国际 25

澳门金沙国际 26

流程为:

流程为:

澳门金沙国际 27

澳门金沙国际 28

 

 

 

 



澳门金沙国际 29

澳门金沙国际 30

 查看修改历史:git log

 查看修改历史:git log

澳门金沙国际 31

澳门金沙国际 32

能够见见以前创造过三个1.py(并且commit过了)

能够看出在此以前创设过叁个1.py(并且commit过了)

近来修改1.py:

当今修改1.py:

澳门金沙国际 33

澳门金沙国际 34

日增了1个:a=1,之后保存1.py

澳门金沙国际 ,追加了三个:a=1,之后保存1.py

那时再git status查看状态,

此时再git status查看状态,

澳门金沙国际 35

澳门金沙国际 36

 

 

会唤起,changes not staged for
commit(变化还没到可提交的等级,stage是阶段,那里是指可commit
的级差),那是个什么样意况呢,看下图:

会提醒,changes not staged for
commit(变化还没到可提交的等级,stage是阶段,那里是指可commit
的级差),那是个怎么样情状呢,看下图:

 

 

澳门金沙国际 37

澳门金沙国际 38

 

 

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

正是unmodified和modified的情事。咱修改过了,所以在modified状态,bash窗口中也有提示,modified
1.py

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

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

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

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

用浅湖蓝提醒modified 1.py,

用铁蓝提醒modified 1.py,

那会儿得以用:git commit -m “change 1” 来交付这几个变化。

此时得以用:git commit -m “change 1” 来交给那些转变。

澳门金沙国际 39

澳门金沙国际 40

再也看到log,能够观察修改过两遍:

重新见到log,能够看出修改过五次:

澳门金沙国际 41

澳门金沙国际 42

那会儿git status 会发现并未索要commit 的文本。

此时git status 会发现没有索要commit 的文件。

澳门金沙国际 43

澳门金沙国际 44

哪些观察更改的底细呢? 用  git diff

怎么观看更改的底细呢? 用  git diff

比如说自身以后修改1.py:

例如自身未来涂改1.py:

a=2

a=2

b=1

b=1

 澳门金沙国际 45

 澳门金沙国际 46

后天自作者翻看情形:git status -s  ,当中-s是收缩情势的查阅

最近自身翻看情形:git status -s  ,个中-s是削减格局的查阅

澳门金沙国际 47

澳门金沙国际 48

澳门金沙国际 49

澳门金沙国际 50

两种样式的提示意思是同样的。

三种格局的提示意思是一律的。

输入git diff后:

输入git diff后:

澳门金沙国际 51

澳门金沙国际 52

-a=1前边的减号表示删掉了某条语句,同理,+a=2前面包车型地铁加号表示添加那条语句。

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

再交给全部改变:git add .  此时一定于 git add
1.py,因为此目录下仅有一个1.py,而add前面包车型大巴点号表示全体的,所以git add .
相当于付出全体改变。

再交由全数变更:git add .  此时也等于 git add
1.py,因为此目录下仅有二个1.py,而add后面包车型地铁点号表示全体的,所以git add .
约等于付出全数改变。

澳门金沙国际 53

澳门金沙国际 54

 澳门金沙国际 55

 澳门金沙国际 56

能够付出的state状态,-s状态下显得是八个大写的紫水晶色的M加三个空格再跟文档名。

能够交到的state状态,-s状态下显得是八个大写的天灰的M加多少个空格再跟文档名。

而不行提交的unstaged状态(unmodified或modified)在-s提醒状态下显得1个大写的丁酉革命的M加一个空格再跟文书档案名。

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

澳门金沙国际 57

澳门金沙国际 58

 澳门金沙国际 59

 澳门金沙国际 60

观看差距了吗?

见到差异了吧?

那时候 git
diff是不曾其余的来得,因为是绝对而言unstaged这些状态和上3遍commit之后的不一致(说白了正是五遍都commit之后的未修改(unstaged)状态),近来日是staged状态(等待git
commit),所以并未其它输出:

那时候 git
diff是平昔不其余的来得,因为是对照unstaged那几个状态和上1回commit之后的不比(说白了正是一回都commit之后的未修改(unstaged)状态),而现行反革命是staged状态(等待git
commit),所以并未其余输出:

 澳门金沙国际 61

 澳门金沙国际 62

于是各状态下输入git status -s  ,输出如下:

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

澳门金沙国际 63

澳门金沙国际 64

 此时涂改了两条语句,也add了,但从没commit,可知处于最左边的staged状态,并不曾进来commit后的unmodified状态,git
diff是比较不出来的。要用git diff –cached:

 此时修改了两条语句,也add了,但尚未commit,可知处于最右侧的staged状态,并不曾进来commit后的unmodified状态,git
diff是比较不出去的。要用git diff –cached:

 澳门金沙国际 65

 澳门金沙国际 66

就算那时候我们再进入一条语句:c=d,再查看情况git status -s:

若果此时我们再投入一条语句:c=d,再查看情形git status -s:

澳门金沙国际 67

澳门金沙国际 68

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

前三个金色的M表示前边staged状态,后2个莲灰的M表示后边又加上c=b语句后变为了unstaged状态,假设有七个MM,大家要看改变的剧情的话要用git
diff HEAD:

 澳门金沙国际 69

 澳门金沙国际 70

若用git diff –cached则只会来得这一步的更动:

若用git diff –cached则只会来得这一步的变迁:

澳门金沙国际 71

澳门金沙国际 72

 

 

 

 

澳门金沙国际 73

澳门金沙国际 74

 

 

 澳门金沙国际 75

 澳门金沙国际 76

在git提交环节,存在三超越百分之五十:working tree, index file, commit

在git提交环节,存在三大部分:working tree, index file, commit

那三大一部分中:
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的新闻)

这三大片段中:
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代表的是近来的2次commit的音讯)



近年来,自个儿开班接触Git。在学到git diff时,一直狐疑。git
diff到底比较的是可怜三个公文之间的反差。经过在网上搜网,终于找到乐答案。

近些年,本身开班接触Git。在学到git diff时,一向思疑。git
diff到底相比的是那多少个三个文本之间的反差。经过在网上搜网,终于找到乐答案。

此地分为二种状态,一种是当暂存区中有文件时,另一种是暂存区中绝非公文。总的来说是比较近年来两种情形。

那边分为二种意况,一种是当暂存区中有文件时,另一种是暂存区中尚无公文。总的来说是相比近期三种景况。

(1)当暂存区中从未公文时,git
diff相比的是,工作区中的文件与上次交给到版本库中的文件。

(1)当暂存区中没有公文时,git
diff相比较的是,工作区中的文件与上次交给到版本库中的文件。

(2)当暂存区中有文件时,git
diff则相比的是,当前工作区中的文件与暂存区中的文件。

(2)当暂存区中有文件时,git
diff则比较的是,当前工作区中的文件与暂存区中的文件。

而 git diff HEAD —
file,比较的是工作区中的文件与版本库中文件的差距。HEAD指向的是版本库中的当前版本,而file指的是时下工作区中的文件。

而 git diff HEAD —
file,比较的是工作区中的文件与版本库中文件的距离。HEAD指向的是版本库中的当前版本,而file指的是时下工作区中的文件。

补充:git
diff命令相比较的是做事目录中当前文件与暂存区快速照相之间的差别,也便是修改之后还没有暂存起来的扭转内容。

补偿:git
diff命令相比的是做事目录中当前文件与暂存区快速照相之间的异样,也正是修改之后还一向不暂存起来的更动内容。

注意:git
diff自己只显示没有暂存的转移,而不是自上次提交以来所做的富有改变。
从而,有时候你弹指间暂存了装有更新过的文本后,运营git
diff后却什么也未曾,就是那些原因。

注意:git
diff本人只呈现没有暂存的改变,而不是自上次提交以来所做的富有变更。
于是,有时候你须臾间暂存了具有更新过的公文后,运行git
diff后却怎么也未曾,便是那一个缘故。

比方要查阅已暂存的就要添加到下次交给里的始末,能够动用git diff
–cached或许git diff –staged。

只要要查看已暂存的就要添加到下次交给里的剧情,能够采取git diff
–cached恐怕git diff –staged。

 

 



diff里面a代表前边那些变量,b表示第③个变量

diff里面a代表前边那多少个变量,b表示第二个变量

HEAD     commit版本
Index     staged版本

HEAD     commit版本
Index     staged版本

a、查看尚未暂存的文书更新了什么部分,不加参数直接输入
    git diff
此命令相比较的是办事目录(Working tree)和暂存区域快速照相(index)之间的异样
也正是修改现在还从未暂存起来的变迁内容。

a、查看尚未暂存的文书更新了什么样部分,不加参数直接输入
    git diff
此命令相比较的是办事目录(Working tree)和暂存区域快速照相(index)之间的差别
约等于修改现在还尚未暂存起来的变型内容。

b、查看已经暂存起来的文书(staged)和上次交付时的快速照相之间(HEAD)的异样
    git diff –cached
    git diff –staged
显示的是下三回commit时会提交到HEAD的内容(不带-a情状下)

b、查看已经暂存起来的文件(staged)和上次交给时的快速照相之间(HEAD)的距离
    git diff –cached
    git diff –staged
来得的是下2遍commit时会提交到HEAD的始末(不带-a情状下)

c、显示工作版本(Working tree)和HEAD的反差
    git diff HEAD

c、突显工作版本(Working tree)和HEAD的异样
    git diff HEAD

d、直接将七个分支上风行的交给做diff
    git diff topic master 或 git diff topic..master

d、直接将三个支行上最新的提交做diff
    git diff topic master 或 git diff topic..master

e、输出自topic和master分别支付来说,master分支上的changed。
    git diff topic…master
Changes that occurred on the master branch since when the topic
 branch was started off it
f、查看不难的diff结果,能够增加–stat参数
    git diff –stat

e、输出自topic和master分别支付以来,master分支上的changed。
    git diff topic…master
Changes that occurred on the master branch since when the topic
 branch was started off it
f、查看简单的diff结果,可以加上–stat参数
    git diff –stat

g、查看当前目录和别的1个拨出的出入
    git diff test
展现当前目录和另三个叫’test’分支的距离
    git diff HEAD — ./lib
来妥贴前目录下的lib目录和上次交由之间的差异(更可相信的乃是在时下分支下)

g、查看当前目录和此外一个拨出的异样
    git diff test
来伏贴前目录和另一个叫’test’分支的反差
    git diff HEAD — ./lib
显示当前目录下的lib目录和上次交由之间的差距(更准确的就是在当下分支下)

h、比较上次提交commit和上上次提交
    git diff HEAD^ HEAD

h、相比较上次提交commit和上上次提交
    git diff HEAD^ HEAD

i、相比八个历史版本之间的差别
    git diff SHA1 SHA2

i、相比八个历史版本之间的差异
    git diff SHA1 SHA2

相关文章