设为首页 加入收藏

TOP

2-具体学习Github---init add commit log diff(一)
2017-10-11 15:53:17 】 浏览:9770
Tags:具体 学习 Github---init add commit log diff

 

1.安装:

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

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

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

下面是安装后的效果:

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

 

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

 


 2.创建

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

 

设置用户名:

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

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

设置邮箱:

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

初始化:

git init

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

显示所有的文件: ls -a

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

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

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

检查状态:git status

 

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

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

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

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

流程为:

 

 


 查看修改历史:git log

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

现在修改1.py:

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

此时再git status查看状态,

 

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

 

 

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

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

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

用绿色提示modified 1.py,

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

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

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

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

比如我现在修改1.py:

a=2

b=1

 

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

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

输入git diff后:

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

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

 

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

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

 

看到差别了吗?

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

 

所以各状态下输入git status -s  ,输出如下:

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

 

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

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

 

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

 

 

 

 

在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 HE

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇RunDll32.exe 详解及[Windows批处.. 下一篇Cmd 命令大全

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目