2-具体学习Github—init add commit log diff

威尼斯官网 1

威尼斯官网 2

 

1.安装:

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

也可以用下面的,我的是win7的64位系统:

可以在此处下载:Git-2.13.0-64-bit.exe链接:http://pan.baidu.com/s/1dFIOU1V密码:xky2

下面是安装后的效果:

威尼斯官网 3

git作用:可以用一个代码文件来表达所有的版本。他的原理是通过给每个版本拍快照的方式来存储每个文件。限制是只能是txt文本文档。

 威尼斯官网 4

上图就是bash的window。可以在里面输入命令。

 


 2.创建

威尼斯官网 5

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

威尼斯官网 6

威尼斯官网 7

 

设置用户名:

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

可以用  git config user.name  来检查输入的用户名。

设置邮箱:

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

威尼斯官网 8

初始化:

git init

 会在目录下自动初始化并生成 .git文件夹,

威尼斯官网 9

显示所有的文件: ls -a

输入 open .git
 后会自动打开这个隐藏的文件夹。但我没打开,这个先不管了,不重要。可以手动打开看看。

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

威尼斯官网 10

但此时还没有添加到git管理库中(git是本地版本,github是网络版本,用这个客户端可以直接管理,也可以联网上传到网络上)。

检查状态:git status**

 威尼斯官网 11

 提示1.py是没有被添加到管理库当中的,untracked files就是无踪迹的文件。

如果要添加到库中,首先要 git add
1.py
改为可以添加到库中,可以提交修改。

威尼斯官网 12

查看status,可以看到 changes to be committed,变为可以提交状态。

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

威尼斯官网 13

流程为:

威尼斯官网 14

 

 


威尼斯官网 15

 查看修改历史:git log

威尼斯官网 16

可以看出以前创建过一个1.py(并且commit过了)

现在修改1.py:

威尼斯官网 17

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

此时再git status查看状态,

威尼斯官网 18

 

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

 

威尼斯官网 19

 

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

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

此时会提示changes to be commited:(就是可以提交了)

用绿色提示modified 1.py,

此时可以用:git commit -m “change 1” 来提交这个变化。

威尼斯官网 20

再次观看log,可以看到修改过两次:

威尼斯官网 21

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

威尼斯官网 22

如何观看更改的细节呢? 用  git diff

比如我现在修改1.py:

a=2

b=1

 威尼斯官网 23

现在我查看状态:git status -s  ,其中-s是缩减形式的查看

威尼斯官网 24

威尼斯官网 25

两种形式的提示意思是相同的。

输入git diff后:

威尼斯官网 26

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

再提交所有改变:git add .  此时相当于 git add
1.py,因为此目录下仅有一个1.py,而add后面的点号表示所有的,所以git add .
相当于提交所有改变。

威尼斯官网 27

 威尼斯官网 28

可以提交的state状态,-s状态下显示是一个大写的绿色的M加两个空格再跟文档名。

而不可提交的unstaged状态(unmodified或modified)在-s提示状态下显示一个大写的红色的M加一个空格再跟文档名。

威尼斯官网 29

 威尼斯官网 30

看到差别了吗?

此时 git
diff是没有任何的显示,因为是对比unstaged这个状态和上一次commit之后的不同(说白了就是两次都commit之后的未修改(unstaged)状态),而现在是staged状态(等待git
commit),所以没有任何输出:

 威尼斯官网 31

威尼斯官网,所以各状态下输入git status -s  ,输出如下:

威尼斯官网 32

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

 威尼斯官网 33

如果此时我们再加入一条语句:c=d,再查看状态git status -s:

威尼斯官网 34

前一个绿色的M表示前面staged状态,后一个红色的M表示后面又加上c=b语句后变为了unstaged状态,如果有两个MM,我们要看改变的内容的话要用git
diff HEAD:

 威尼斯官网 35

若用git diff –cached则只会显示这一步的变化:

威尼斯官网 36

 

 

威尼斯官网 37

 

 威尼斯官网 38

在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的信息)


最近,自己开始接触Git。在学到git diff时,一直困惑。git
diff到底比较的是那个两个文件之间的差异。经过在网上搜网,终于找到乐答案。

这里分为两种情况,一种是当暂存区中有文件时,另一种是暂存区中没有文件。总的来说是比较最近两种状态。

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

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

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

补充:git
diff命令比较的是工作目录中当前文件与暂存区快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

注意:git
diff本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。
所以,有时候你一下子暂存了所有更新过的文件后,运行git
diff后却什么也没有,就是这个原因。

如果要查看已暂存的将要添加到下次提交里的内容,可以使用git diff
–cached或者git diff –staged。

 


diff里面a表示前面那个变量,b表示第二个变量

HEAD     commit版本
Index     staged版本

a、查看尚未暂存的文件更新了哪些部分,不加参数直接输入
    git diff
此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异
也就是修改之后还没有暂存起来的变化内容。

b、查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
    git diff –cached
    git diff –staged
显示的是下一次commit时会提交到HEAD的内容(不带-a情况下)

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

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

g、查看当前目录和另外一个分支的差别
    git diff test
显示当前目录和另一个叫’test’分支的差别
    git diff HEAD — ./lib
显示当前目录下的lib目录和上次提交之间的差别(更准确的说是在当前分支下)

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

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

This entry was posted in 澳洲历史 and tagged , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注