一、初识Git
Git是一个分布式版本控制工具,通常用来对开发过程中的文件进行管理。它具有代码回溯、版本切换、远程备份以及多人协作等等功能。
同时,Git有着如下几个概念:1.分支(branch)、2.合并(merge)、3.提交(commit)、4.推送(push)、5.克隆(clone)、6.拉取(fecth、pull)、7.仓库
1.分支(branch):开发过程中会有多个分支,比如主分支(master)、开发分支(develop)、功能分支(feature)等等。一般来说不会直接在master上开发,而是从master或者develop分支中再分出来别的分支(例如功能分支等等)来进行开发。
2.合并(merge):各个分支开发完毕后,一般来说用master分支去合并其他分支。

3.提交(commit):开发完毕后要先进行提交,将本地文件和版本信息保存到本地仓库。(即搞个存档点)
4.推送(push):为避免本地出现意外,将本地仓库的文件和版本信息上传到远程仓库。
5.克隆(clone):从远程仓库直接克隆一份到本地。
6.拉取(fecth、pull):将远程仓库文件和版本信息下载到本地仓库。其中pull = fecth + merge。
7.仓库:Git仓库分为本地仓库和远程仓库,其中本地仓库来自自己电脑上的Git仓库,而远程仓库来自服务器上的Git仓库(比如github、gitee、gitlab等)。

Git的安装:Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-优快云博客(我就是跟着这个教程安装的,感觉讲的还是挺详细的)
二、学习Git
2.1 搭建gitee远程仓库
1、打开并登录gitee,并新建自己的仓库。

2、输入仓库名称后直接创建即可。(创建完毕后不要关闭,后面有用)

3、配置SSH公钥
1)在git bash窗口输入如下指令:
ssh-keygen -t rsa #生成SSH公钥
2)然后不断回车即可。(如果你曾经生成过公钥,则会自动覆盖)
这里由于我曾经已经生成过了,就不展示了。
3)进入gitee的设置,找到ssh公钥。

4)复制git bash窗口生成的ssh公钥到gitee的公钥里即可。

4、最后,在git bash窗口里输入以下指令,以验证是否成功:
ssh -T git@gitee.com

提示成功即可。
2.2 Git常用命令
2.2.1 配置Git全局设置
安装Git后首先要做的就是设置你的用户名和email地址,因为每次commit都需要提交你的用户信息。配置很简单,直接在你的桌面右键找到git bash打开即可。
设置你的信息:
git config --global user.name "你的用户名"
git config --global user.email "你的email"
查看是否配置成功:
git config --list
在里面找user.name和user.email是否和你填入的对应?
2.2.2 搭建本地仓库
你可以初始化一个本地仓库,也可以从远程仓库克隆过来。这里先初始化一个新的本地仓库。
首先,需要你在任意目录下创建一个空目录,然后进入这个目录。
然后,在这个目录右键打开git bash窗口。
最后,在git bash窗口执行如下命令即可。
git init
如果看到下面有个.git隐藏文件,就说明初始化成功!

(如果你没看到,可能是你已经隐藏了项目)

---------------------------------------------------------------------------------------------------------------------------------
如上所说,你也可以克隆一个仓库到本地仓库。只需要在指定的且没有.git文件的目录下打开git bash窗口,然后输入如下指令即可。
git clone "远程仓库地址"
这个远程仓库地址,举个例子就是你刚刚创建的仓库ssh。(由于是刚刚创建里面没东西,你可以找别人的仓库来试一试)

2.2.3 git工作区、暂存区和版本库
从第一章我们已经了解了一些Git大体概念,现在了解一些细节概念。在你创建的本地仓库中,其实存在三个概念--工作区(目录)、暂存区(.git里的index)和版本库(.git本身)。

也就是说,你创建的文件先进入工作区、再到暂存区,最后才会提交到版本库。

其中,在工作区中的文件存在两个状态:
·untracked未跟踪(未被纳入版本控制,即没有进入暂存区)
·tracked已跟踪(已被纳入版本控制,即已经进入暂存区但没有进入版本区)
(1)Unmodified--未修改状态
(2)Modified--已被修改
(3)Staged--已暂存状态
因此,引用菜鸟的图如下:

2.2.4 操作命令
2.2.4.1 git status命令
git status命令的作用就是查看文件状态。在带.git文件的目录下随便新建一个文件,如file.txt。此时再调用
新建文件:
#在目录的git bash窗口使用命令创建文件
(1)touch 文件名 // mkdir 文件夹名 // 直接在工作区目录下右键创建也可以
#查看文件状态
(2)git status

新建文件后使用git status命令会提示Untracked files,也就是未跟踪文件file.txt(即file.txt还没有进入暂存区)。当然你也可以修改你刚创建的文件再使用git status命令看看。
2.2.4.2 git add命令
git add命令很简单,就是将文件加入暂存区。
git add 文件名
#通常使用git add .来将工作区内所有未进入暂存区的文件加入暂存区
紧接着上面输入git add命令后再次使用git status命令可以发现,文件已经加入暂存区但是未被提交。

2.2.4.3 git reset命令
git reset命令的作用就是将暂存区的文件取消暂存或者切换指定版本号。
git reset [--soft | --mixed | --hard] [文件名/版本号]
其中
· --mixed为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
· --soft参数用于回退到某个版本。
· --hard参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。(谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。)
#当然你也可以直接git reset .全部回退,但不建议。你可以回退指定文件或者版本号。
紧接上面输入git reset命令后再次使用git status命令可以发现,刚刚进入暂存区的文件已经退出暂存区了。(切换指定版本号则需要你有commit记录)

2.2.4.4 git commit命令
git commit命令很简单,就是将暂存区的文件提交到版本库。
git commit -m "提交说明" (文件名)
#当然你也可以直接git commit,但是不建议,因为你需要说明这次commit提交了什么东西。
紧接上面先用git add命令把退出暂存区的文件重新进入暂存区,然后再git commit提交,最后可以再用git status命令看看。

2.2.4.5 git log命令
git log命令很简单,就是查看你的提交日志。
git log [选项] [分支名/提交哈希]
常用选项:
· --pretty=<格式>:使用自定义的提交信息显示格式。
· --oneline:以简洁的一行格式显示提交信息。
· --graph:以图形化方式显示分支和合并历史。
· --abbrev-commit:使用短提交哈希值。
· 等等
#当然你也可以直接使用git log

这里可以说明一点,版本号取前面几位也是独一无二的,你可以在git log后面加上--abbrev-commit可以发现版本号变短了,但依旧是对应的。(有了版本号就可以使用git reset命令回退版本了)
git reset --hard 版本号
#回退指定版本
当然,你也可以回退一个版本后再回退回去。
ps:不要滥用--hard,因为它会删除回退点之前的所有信息。如果你真的不小心用--hard退回去版本了并且找不到当初的版本号了,也可以使用git reflog命令去慢慢找。
2.2.4.6 git remote命令
git remote命令很简单,就是查看本地仓库和远程仓库的关联信息(即列出当前仓库中已配置的远程仓库)。
git remote [选项]
选项参数非常多
· -v #列出当前仓库中已配置的远程仓库,并显示它们的 URL。
· add <远程仓库名> <远程仓库url> #添加一个新的远程仓库。指定一个远程仓库的名称和 URL,将其添加到当前仓库中。
· rename <旧名字> <新名字> #将已配置的远程仓库重命名。
· remove <远程仓库名> #从当前仓库中删除指定的远程仓库。
· set-url <远程仓库名> <新url> #修改指定远程仓库的 URL。
· show <远程仓库名> #显示指定远程仓库的详细信息,包括 URL 和跟踪分支。
当然你可以直接git remote列出当前仓库中已配置的远程仓库。
当然你需要先用git remote add <远程仓库名> <远程仓库url>给本地仓库添加远程仓库。这里以gitee举例获取远程仓库url。

2.2.4.7 git clone命令
git clone命令很简单,就是将远程仓库上几乎所有的东西都克隆一遍到本地仓库(复制工作需要的文件包括日志信息、历史记录等等等等)。
git clone <远程仓库url>
2.2.4.8 git push命令
git push命令很简单,就是将本地仓库的分支版本上传到远程仓库进行合并。
git push <远程仓库名> <本地分支名>:<远程分支名>
#如果本地分支名与远程分支名相同,则可以省略冒号:以及后面的<远程分支名>
即git push <远程主机名> <本地分支名>

此时就可以打开你的远程仓库查看是否一致了。
2.2.4.9 git pull命令
git pull命令也很简单,就是从远程仓库获取并合并到本地仓库。
git pull [远程仓库名] [分支名]
#[远程仓库名] 通常是 origin,是默认的远程仓库名。
#[分支名] 是你要合并的远程分支。
注意:git pull = git fetch + git merge。即从远程仓库获取最新的提交记录,然后将这些提交记录合并到你当前的分支中。
2.2.5 分支
分支是Git里非常重要的概念,它可以把你的工作从主线上分离开来,以免影响主线的工作。同一个仓库可以有多个分支,各个分支相互独立、互不干扰。(在最开始使用git init时就默认给你的仓库创建了一个master分支)

2.2.5.1 git branch命令
git branch命令有三个功能,一个是查看当前分支数,另一个就是创建新的分支,还有一个就是删除分支。
git branch #查看分支数
git branch <分支名> #创建新的分支
git branch [-d | -D] <分支名> #删除分支,其中-D表示强制删除未合并的分支


2.2.5.2 git checkout命令
git checkout命令很简单,就是切换分支。
git checkout [-b] <分支名> #切换分支
#-b表示如果没有该分支则创建该分支并转到该分支

2.2.5.3 git merge命令
git merge命令很简单,就是把指定的分支合并到当前分支。
git merge <分支名> #即把分支名合并到当前输入该代码的分支
过于简单。
2.2.5.4 解决合并冲突
2.2.6 标签
Git中的标签指的是某个分支某个特定时间点的状态,通过标签可以很方便地切换到标记时的状态。简单来说就是,tag是对commit的一个标识,相当于它的别名。
· git tag #列出已有标签
· git tag <标签名> #创建标签
· git push <远程仓库名> <标签名> #将标签推送到远程仓库
· git checkout -b [branch] [标签名] #检出标签
PS:
ps001: 用.gitignore文件屏蔽指定文件进入暂存区
在你使用git add命令时,如果你不想某些文件也被添加到暂存区的话可以设置一个“暂存区黑名单”。
假设存在以下情景,你带.git的目录下有很多.txt和很多.a文件,这时你只想提交.txt文件。此时你使用git status查看文件状态发现git检测到.a文件未进入暂存区。设置黑名单如下:

1) 先在你的目录下创建.gitignore文件;
2) 打开该文件并输入你的黑名单(按上输情景应该输入*.a);
3) 保存并退出,此时再去git status发现不再提示.a文件未进入暂存区了(即.a文件被屏蔽了)。
ps002:用.bashrc文件“绑定键位”
有一些命令的参数很多而且你又用的很多,不妨给这个命令“绑定一个键位”,或者说给指令起别名。例如git log --pretty=oneline --all --graph --abbrev-commit,这时候你就可以给他起个别名,以后用别名代称这么一长串指令。
1)在用户目录(C:\Users\此处为你自己的用户名)下创建一个.bashrc文件,
或者直接在git bash窗口输入touch ~/.bashrc。
2)在用户目录打开.bashrc文件,以如下方式命名别名即可。
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit' #用于输出git提交日志
alias ll='ls -al' #用于输出当前目录所有文件及基本信息
命名规则:alias 别名 = '指令名'。
689

被折叠的 条评论
为什么被折叠?



