git基础

下载安装git

Linux下安装

在Ubuntu里,用以下命令从软件仓库中下载git,其他发行版使用各自的软件包管理工具来安装。

sudo apt install git

静等安装结束,检查是否成功:

git --version

若安装成功,会打印git的版本信息:

git version 2.20.1

若是安装失败,会提示命令未找到,需重新安装。

bash: git: command not found
Windows下安装

在Windows下安装git可直接去官网下载安装包,像平时在win上安装软件一样即可。安装完毕,打开power shell输入git --verion测试是否成功安装。

配置git环境

每当在一台新电脑上安装了git后,都要首先配置git的环境,以便后续使用。可用git config来获取即更新git的配置信息。

第一件要做的事就是设置git的用户名和邮箱地址,否则,就不能提交修改。试着运行git commit,发现不能提交。

 *** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

可以看到,git已经给出了设置用户名和邮箱的命令,即:

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

再次运行git commit,成功运行,且进入了nano的编辑界面

nano界面

这个界面的作用,后面我详细介绍。现在先回过头来,我不喜欢使用nano,能不能换成我喜欢的vim呢?当然可以,使用命令,把默认的编辑器换成vim:

git config --global core.editor vim

运行git commit,可以看到,编辑器已经从nano换成vim了!

git config --list	#用这个命令来打印配置信息
user.name=chunson
user.email=[email protected]
core.editor=vim
……

建立git仓库

配置好git的环境信息后,就能建立git仓库(repository)了,有两个方式:

从本地建立

——在本地未纳入git管理的目录下,用git init命令建立git仓库,这个仓库可以管理此目录下的所以文件(夹)。

首先,切到想要纳入git管理的目录,我用/home/cc/Default示范。

git init	#在/home/cc/Default目录下执行此命令即可
Initialized empty Git repository in /home/cc/Default/.git/	#成功创建git仓库

这时,git会在/home/cc/Default下创建一个隐藏目录.git,这是git来跟踪管理仓库的,因此不要随意去碰这个文件夹的内容。

克隆已有项目

——用git clone把别人的仓库复制到目前的工作目录下。

比如,我在GitHub下有个项目,想在新的电脑继续工作,使用git clone就可以把它克隆(clone)下来。

Github上的项目

git clone https://github.com/cuncinc/cReader.git
Cloning into 'cReader'...
remote: Enumerating objects: 835, done.
remote: Counting objects: 100% (835/835), done.
remote: Compressing objects: 100% (335/335), done.
remote: Total 835 (delta 413), reused 773 (delta 353), pack-reused 0 Receiving objects: 100% (835/835), 310.75 KiB | 14.00 KiB/s, done.   Resolving deltas: 100% (413/413), done.

执行命令,项目克隆完毕,done!可以继续在新电脑工作!

跟踪文件

虽然已经在本地建立了git的仓库,但并不意味着git已经能够记录文件的修改过程。在一个已经建立git仓库的工作目录中,每个文件都可能会有两种状态:已跟踪(tracked)和未跟踪(untracked),跟踪是指文件已纳入版本控制,git会记录其修改状态。而在新建了仓库的目录中,所有文件都是未跟踪的状态。如何把文件变成已跟踪的状态呢?只需要使用git add即可。

#在/home/cc/Default目录下执行
git add ./README.md		 #把README.md纳入跟踪
git add .				#把整个目录的所有文件纳入跟踪
git add *.c				#把目录下所有.c文件纳入跟踪

执行git add命令,若没有提示信息,则表示文件已经纳入跟踪;若有错误则会打印错误信息。

若一不小心把某个不想纳入跟踪的文件进行了跟踪,如何删去呢?用git rm即可:

git rm --cache "你需要移去的文件名"	#把在暂存区的文件移除

在一个项目里,总有那么很多文件不想纳入跟踪,如果一不小心把它们加入跟踪会造成严重的后果,该如何解决?其实,只要新建一个名为.gitignore的文件,并把不想让git跟踪的文件的文件名写入.gitignore里,git就不能会跟踪这个文件了(但是git能跟踪.gitignore本身)。

.gitignore

可以看到,若想把一个在.gitignore里的文件纳入跟踪,git就会提示错误信息。若仍想加入,可用-f选项(force)强制执行。

查看文件状态

在工作目录下,可以用git status查看文件的状态。

git add *.txt	#把/home/cc/Default目录下的所有txt文件纳入跟踪
git status		#查看文件的状态

可以看到,git提示txt文件被放入暂存区(已跟踪),其他文件还未被纳入跟踪 。

文件状态

提交修改

一个已跟踪的文件, 有三个状态,分别是未修改(unmodified)、已修改(modified)和放入暂存区(staged),这三者之间的关系如下图。

git的文件周期

一个刚纳入跟踪的文件,处于暂存区,但是git还没有把这些修改真正记录下来,要想记录修改,就得提交(commit)这些修改。提交使用git commit命令:

git commit

执行提交命令,就会进入一个编辑界面。可以看到,注释信息说到在master分支,很多新文件被提交。也说到这些注释信息都是会被忽略掉的,只有我们自己输入的信息才会被记录下来。

编辑提交信息

我们要在这个编辑界面里输入关于此次提交的信息,便于以后知道这次提交做了什么事,修复了哪些bug等等,比如“初始化项目”。

提交修改

在提交的时候,每次都进入vim窗口编辑太麻烦,也可以使用-m选项来简化流程:

git commit -m "你的提交信息注释"