Git基础-第2章

时间:2019-10-14
本文章向大家介绍Git基础-第2章,主要包括Git基础-第2章使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

简单的Git基础概念:

repository:  仓库

track:     跟踪

stage:    暂存

commit:     提交

push:         推送 

pull:       拉取

一、获取Git仓库

在现有目录中初始化仓库

git init

若在一个已经存在文件的文件夹中初始化Git仓库来进行版本控制,应该开始跟踪文件并提交 git add 来跟踪文件, git commit来提交文件

git add *.c

git add LICENCE

git commit -m 'initial project version'

克隆现有的仓库

克隆仓库的命令格式是git clone [url] 比如要克隆的可链接库 libgit2 ,可用下列命令:

git clone https://github.com/libgit2/libgit2

这段命令的含义是,在当前目录下创建一个名为"libgit2"的目录,并在这个目录下初始化一个.git文件夹,从远程仓库中拉取所有数据放入.git中文件

夹中,然后从中读取最新版本文件的拷贝。

如果想克隆远程仓库,自定义本地仓库的名字,可以使用如下命令:

git clone https://github.com/libgit2/libgit2/ mylibgit

git clone https://github.com/LIU-HONGYANG/introdatascience github

Git基础-记录每次更新到仓库

git中,工作目录下,文件的状态不外乎两种:已跟踪或未跟踪

已跟踪:

已经跟踪的文件是已经纳入版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改、已修改、或放入暂存区

未跟踪:

工作目录中除已经跟踪的文件以外其它都属于未跟踪的的文件,它们既不存在于上次快照的记录当中,也没有放入暂存区。

注:初次克隆某个版本的仓库时,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

检查当前文件状态

使用git status来检查当前文件的状态,如果在克隆仓库后立即使用此命令,会看到类似的输出

On branch master
nothing to commit, working directory clean

这说明所有已跟踪文件在上次提交后未被更改过, 此外还表明,当前目录下没有出现任何处于未跟踪状态的新文件。例,查看新克隆出来的git库的状态

接下来,我们创建一个新的文件HELLO.md, 并使用git status查看文件的状态

 在上图中,可以看到Hello.md文件出现在未跟踪的文件下面。未跟踪意味着之前的快照没有这些文件,Git不会自动将之纳入跟踪的范围。这样可以让你防止将不想跟踪的文件包含进来。

跟踪新文件

使用命令 git add 开始跟踪一个新文件

git add Hello.md

此时再次运行git status命令,会看到 README文件已经被跟踪,并处于暂存状态:

暂存已修改文件

 

现在我们来修改一个被跟踪的文件,如果你修改了一个名为Hello.md的已被跟踪的文件,然后运行git status命令

文件Hello.md修改后,出现Changes not staged for commit, 说明已经跟踪的文件还没有放到暂存区。要暂存这次更新,运行git add命令

git add是多功能命令,可以用它开始跟踪新文件,或者把已经跟踪的新文件放到暂存区。git add命令可以使用文件或目录的路径作为参数;

如果参数是目录的路径,该命令将递归地跟踪该目录下的文件。

在暂存之后,如果继续对Hello.md修改 会发现,Changes to be commited和Changes not staged for commit都有Hello.md文件

即Git既出现在了暂存区又出现了非暂存区,为什么?实际上Git只是暂存了刚刚在运行git add命令后提交的版本,而不是在运行git commit时,在工作目录中的当前版本。所以,运行了git add后,又作了修订的文件,需要重新运行git add把最新的版本重新暂存起来。

状态简览

状态简览是指,使用一种更加紧凑的方式显示状态

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

新添加的未跟踪文件前面有??标记

新添加到暂存区中的文件有 A 标记

修改过后的文件有M标记(M在右边表示修改过但是还没提交暂存区,M在左边表示该文件修改了并放入暂存区)

这个说明,Hello.md文件已经被提交到暂存区中,但是又发生了修改

忽略文件

一般我们总会有些文件无需纳入Git管理,也不希望它们总出现在未跟踪文件列表

查看已暂存和未暂存的修改

git diff用来查看尚未暂存的文件更新了哪些部分,不加参数直接加入git diff

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

 

提交更新

在暂存区域的文件可以使用git commit运行提交命令,注:在提交之前,应该查看当前文件的状态git status.

请记住,提交时记录的是放在暂存区域的快照。 任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。 每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

跳过使用暂存区域

git提供一个暂时跳过暂存区域的方式,只要在提交的时候加上-a选项,git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过-a步骤

移除文件

rm Hello.md

git rm Hello.md

 

移动文件

git mv Hello.md Hello

运行此命令就相当于三条命令:

rm Hello.md

git rm Hello.md

git add Hello

二、查看提交历史

git log部分由于现阶段用的比较少,所以不是很常用。

在提交了若干个更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。

查看提交历史git log命令

默认状态下,git log会按提交时间列出所有的更新,最近的排在上面。

参数-p用来显示每次提交的差异,加上-2用来显示最近两次提交

git log -p -2

一下操纵用来git log -p -1显示,最近一次提交的差异

如果想看到每次提交的总结性选项。比如说,如果每次你想看到每次提交的的简略信息,可以使用--stat

选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了

git log --pretty=oneline提交的信息放在一行显示

git log --pretty=format:"%h - %an"

可以用来定制要显示的记录格式

限制输出长度

git log中有限制输出长度,比如-2显示最近提交的2条信息。

还有一些限制选项,比如:

git log --since = 2.weeks 

原文地址:https://www.cnblogs.com/zhichun/p/11602420.html