首页 > 代码库 > Github学习笔记 (一)

Github学习笔记 (一)

学习网址

一、创建版本库

版本库(仓库),英文名repository,库里的文件修改、删除都能被Git跟踪。

1 创建一个版本库,首先选择一个合适的地方,创建一个空目录:

 技术分享

Pwd 命令用于显示当前目录。在我的Mac上,这个仓库位于   /Users/michael/learngit

!!!如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

2 通过 git init 命令把这个目录变成Git可以管理的仓库:

瞬间仓库就建好了,这是一个空仓库(empty Git repository)。当前目录下有一个.git目录,这个目录是Git来跟踪管理版本库。

 技术分享

如果没有看到.git目录,是因为这个目录默认是隐藏的,用ls –ah命令可以看见。

3 把文件添加到版本库

注意:所有的版本控制系统,只能跟踪文本文件的改动,如TXT文件,网页多有程序代码等。版本控制系统可以明确告诉每次的改动。但是视频和图片这些二进制文件,虽然也能由版本控制系统管理,但是无法跟踪文件的变化。Microsoft的Word格式是二进制格式,因此版本控制系统是无法跟踪Word文件改动。

使用Windows的要注意:不要使用Windows自带的记事本编辑任何文本文件。会出现错误。下载Notepad++代替记事本,把默认编码设置为UTF-8 without BOM。

现在开始添加一个readme.txt文件。这个文件必须要放在learngit目录下,子目录下也可以。

第一步,用命令 git add告诉Git,把文件添加到仓库

 技术分享

执行这个命令,没有任何显示说明添加成功。

第二步,用命令git commit 告诉Git,把文件提交到仓库。

 技术分享

解释一下git commit 命令,-m 后面输入的是本次提交的说明,可以输入任何内容,最好写标注信息,方便从历史记录中找到修改记录。

命令执行成功后会告诉你,一个文件别改动,插入两行内容(readme.txt有两行内容)。

因为commit可以一次提交很多文件,可以多次add不同的文件。所以需要add,commit两部提交文件:

 技术分享

4修改仓库中文件(readme.txt)的内容。

运行git status ,该命令可以让我们时刻掌握仓库当前的状态。

 技术分享

git diff 能够知道之前修改的内容。红色文字是修改之前的,绿色文字是修改之后的。

 技术分享

提交修改和提交新文件是一样的两步:

第一步,git add :  $ git add readme.txt。 没有任何输出

第二部,执行之前,先运行git status查看当前仓库状态:

 技术分享

git status告诉我们,将要被提交的修改包括readme.txt,然后就可以放心的提交了:

 技术分享

再次查看仓库状态:

 技术分享

二、版本回退

版本库中的文件不断的被修改。当文件错乱或误删等其他状况发生时,还可以从最近的一个commit恢复。

我们可以用git log命令查看历史记录,显示的是从近到远的提交日志:

 技术分享

如果输出信息太多,看的眼花缭乱,可以试试加 –pretty=oneline 参数:

 技术分享

提示:前边一大串黄色字体是commit id (版本号) ,和SVN不一样,git不是使用1,2,3…递增的数字,是SHA1计算出来的一个强大的数字,用十六进制表示。因为git是分布的版本控制系统,后面要研究多人在同一版本库里工作,如果都用1,2,3作为版本号,就会有冲突。每提交一个新版本,git会把它们自动串成一条时间线。

Git中HEAD表示当前版本,上一个是HEAD^,上上一个版本HEAD^^,往上100个携程HEAD~100.

回退到上一个版本,使用git reset

 技术分享

$ cat readme.txt 查看当前版本内容(确定是上一个版本的内容):

 技术分享

此时查看版本记录,change it’s nice 已经没有了:

 技术分享

回到未来的某个版本,$  git reset –hard 版本号版本号写前几位就可以

 技术分享

当忘记想要回退到的版本号,可以使用git reflog

 技术分享

三、工作区和暂存区

工作区(Working Directory)

就是在电脑中能看到的目录,如 learngit 文件夹就是一个工作区

版本库(Repository)

工作区中有一个隐藏目录 .git , 这个不是工作区,是Git的版本库。

版本库中有很多东西,其中state(或index),还有Git为我们自动创建第一个分支master,以及指向master的一个指针HEAD

上传文件:

 第一步,git add ,就是把文件修改添加到暂存区;

技术分享

 第二步,git commit,实际就是把暂存区的内容提交到当前分支。

技术分享

 

只有将修改的文本文件 git add 加到暂存区stage中,才能使用git commit 添加到master中

四、撤销修改

1、 git checkout -- file 可以丢弃工作区的修改

技术分享

上述命令表示把readme.txt文件在工作区的修改全部撤销,这里有2种情况:

一种是readme.txt自修改后还没放到暂存区,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区的状态。

撤销修改就是回到最近一次git commit 或 git add 时的状态

2、 git reset HEAD file 可以把暂存区的修改撤销掉,重新放回工作区

技术分享

 

五、删除文件

在Git中,删除也是一个修改操作。

一般情况,通常直接在文件管理器中把没用的文件删了,或者使用 rm file 命令删除

技术分享

现在,有两个选择:

一个是,确实要从版本库中删除该文件,就用 git rm 删除,并且 git commit -m "xxx"

技术分享

此时,文件就从版本库中删除了。

另一个是删错了,因为版本库中还有,所以可以把误删的文件恢复到最新版本中:

$  git  checkout  --file

 

 

 

Github学习笔记 (一)