2-具体学习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 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
2-具体学习Github---init add commit log diff的更多相关文章
- github三步走(init;add . ;commit -m "提交说明")
掌握以下几点就基本能满足你平时使用了.按这个顺序来1.git安装,已经好了,略 -到这里本地代码推送到远程已经结束了 2.git本地命令操作-shift+右键-git init:初始化git环境-新建 ...
- git基本命令--status, add, diff, commit, log
git status: git status命令的输出十分详细,但其用语有些繁琐. 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格 ...
- Git CMD连接,管理(remote,add,commit,push)github repository
git initmd testcd testgit statusgit add test //git add test/a.txtgit status git remote add origin g ...
- Git 学习(三)本地仓库操作——git add & commit
Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...
- 从0开始学习 GITHUB 系列之「GIT 速成」【转】
本文转载自:http://stormzhang.com/github/2016/05/30/learn-github-from-zero3/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...
- 从0开始学习 GitHub 系列之「03.Git 速成」
前面的 GitHub 系列文章介绍过,GitHub 是基于 Git 的,所以也就意味着 Git 是基础,如果你不会 Git ,那么接下来你完全继续不下去,所以今天的教程就来说说 Git ,当然关于 G ...
- 从0开始学习 GITHUB 系列之「向GITHUB 提交代码」【转】
本文转载自:http://stormzhang.com/github/2016/06/04/learn-github-from-zero4/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...
- 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」
之前的这篇文章「从0开始学习 GitHub 系列之「Git速成」」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作 ...
- [git] 细说commit (git add/commit/diff/rm/reset 以及 index 的概念)
http://kasicass.blog.163.com/blog/static/39561920133294219374/ 创建测试仓库 $ git init $ echo "line o ...
随机推荐
- 点线特征双目视觉SLAM---暑期笔记
1.由于以后可能研究有关基于特征方面的SLAM研究,所以近期看了一篇文章[基于点线综合特征的双目视觉SLAM方法--谢晓佳],由于之前对SLAM的模块比较模糊,所以认真阅读了此论文,并对主要的3个线程 ...
- Html中Select的增删改查排序,和jQuery中的常用功能
这里主要通过select引出常用的jquery 前台页面 <select class="form-control" id="commonSelect"&g ...
- HTML 转 PDF 之 wkhtmltopdf 工具精讲
术语定义 文档对象 “文档对象”是指PDF文档中的文档对象,共有三种类型的“文档对象”,他们分别是“页面对象”,“封面对象”和“目录对象”. 页面对象 “页面对象”是指以页面的形式在PDF文档中呈现的 ...
- Java并发-volatile的原理及用法
Java并发-volatile的原理及用法 volatile属性:可见性.保证有序性.不保证原子性.一.volatile可见性 在Java的内存中所有的变量都存在主内存中,每个线程有单独CPU缓存内存 ...
- Windows Live Writer
一.简介 Windows Live Writer 是一个强大的离线博客编辑工具,通过它可以离线编辑内容丰富的博文,除了自身强大的编辑功能之外,还提供了接口,让其它开发人员通过插件提供工具自身没有提供的 ...
- IDEA 中javadoc插件不能设置的问题
解决方案 1.手动下载插件 https://github.com/ranzou06/intellij-javadocs/blob/master/intellij-javadocs.zip?raw=tr ...
- snort帮助文档
[1] CentOS6.6下基于snort+barnyard2+base的入侵检测系统的搭建 2 基于Snort的C_S模式的IDS的设计与应用_王会霞.caj [3] Snort 笔记1 - 3种模 ...
- 浅谈多重检验校正FDR
浅谈多重检验校正FDR Posted: 四月 12, 2017 Under: Basic By Kai no Comments 例如,在我们对鉴定到的差异蛋白做GO功能注释后,通常会计算一个p值 ...
- h5 微信分享朋友和朋友圈
生成JS-SDK权限验证签名 实现发送给朋友和分享到朋友圈时内容参数自定义 一.微信JS-SDK 1. 获得Access Token access token的获得方法在前面有介绍,详情见 微信公众平 ...
- MSI-X 之有别于MSI
转自: https://www.cnblogs.com/helloworldspace/p/6760718.html MSI-X Capability结构 MSI-X Capability中断机制与M ...