引言
对于许多初入职场或初学Git的朋友来说,对Git的执行机制及命令操作不太熟悉。本教程帮助你快速入门Git基本命令的操作。
Git是什么?
Git是一个开源的分布式版本控制系统,版本控制是一种记录文件内容变化,以便将来查询特定版本修订情况的系统,版本控制其实最重要的是可以记录文件修改历史记录,从而让开发者能够查看历史版本,方便版本切换。
为什么要做版本控制?
如图,小红和小蓝同时从服务器下载了代码片段1的副本,然后各自做了修改并提交,那么Git就会监测内容的变化,从而将两个人修改的内容合并一块,并且记录对应版本的记录,方便回退版本,这也从个人开发过渡到了团队协作开发。
分布式 VS 集中式
集中式如SVN、CVS都有一个单一的集中管理的服务器,保存所有文件的修订版本。如图,每个程序员修改完代码后提交到中央服务器,没有在本地(客户端)做版本控制,那么当服务器发生故障,如停电时,就无法提交代码。
分布式Git,会在本地(客户端)做版本控制,再提交到远程仓库,从而实现团队协作开发,这时远程库如果出现故障,也可以在本地做版本控制,等到故障修复,再提交代码到远程库。
Git工作区域
说明:这里的远程仓库一般有基于互联网的GitHub、Gitee,以及基于局域网的GitLab。
Git安装
到Git官方网站下载:Git,具体安装步骤这里不再赘述。
Git基本命令
安装完Git后,配置好环境变量,查看版本信息判断是否安装成功。
git --version
安装完Git后,需要配置个人用户名和邮箱,用于记录提交成员的信息。
用户名:
git config --global user.name "用户名"
邮箱:
git config --global user.email "邮箱"
查看配置信息:
git config -l
要想创建的目录被Git所管理,需要初始化对应的工程目录。进入对应的目录执行完如下命令后,会在对应目录生成一个.git文件夹,该文件夹默认是隐藏的。
git init
将本地代码提交到暂存区,指定提交的文件名,提交该文件到暂存区。
git add 文件名
新项目中,添加所有文件很普遍,可以使用如下命令。
git add .
将暂存区中的所有文件提交到本地仓库。
git commit -m "注释内容"
将暂存区中的指定文件提交到本地仓库。
git commit -m "注释内容" 文件名
将add和commit合为一步操作,相当于 git add . 和 git commit -m "注释内容" 合并为一次操作,但需要注意该命令只能提交已经跟踪过且修改了的文件。
git commit -am "注释内容"
git remote -v
起别名方便操作,不用每次拷贝地址。
git remote add 别名 远程地址
git push 别名 本地分支名:远程分支名
如果本地分支名和远程分支名是一样的,则可以省略冒号后面的内容。
git push 别名 分支名
git pull 别名 远程分支名:本地分支名
如果本地分支名和远程分支名一样,则可以省略冒号后面的内容。
git pull 别名 分支名
克隆,既复制,将远程仓库中的代码复制到本地目录中。这里会有三个步骤:1、拉取代码;2、初始化本地仓库;3、创建别名。
git clone 远程仓库url
输出详细状态信息:
git status
输出简短版本状态信息:
git status -s
查看详细日志信息:
git log
查看简短日志信息:
git reflog
git diff
使用 git reflog 查看版本号,就是最前面的7位黄色字体标识的序列号,复制该版本号,使用如下命令回退到该版本,并且本地代码文件也会修改为指定版本的代码,如何不加--hard就只是将HEAD指向该版本,而本地代码不做修改。
git reset --hard 版本号
可以使用 ~数字表示:
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD~2 上上一个版本
以此类推...
git reset --hard HEAD~数字
删除工作区和暂存区中的文件
git rm 文件名
删除暂存区中的文件
git rm --cached 文件名
分支
一个分支代表一条独立的开发线,使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
git branch -v
git branch 分支名
git checkout 分支名
将指定分支合并到当前分支。
git merge 分支名
冲突
合并分支时,两个分支在同一文件的同一位置有两套完全不同的修改,git无法替我们决定使用哪一个,就产生了冲突,必须人为决定新代码的内容。
当合并产生冲突时,Git会将冲突文件标识出来,冲突标志内容分为 当前分支的更改 和 其它分支的更改。
<<<<<<< HEAD 到 ======= 里面的 “内容...” 是当前分支的内容
======= 到 >>>>>>> 里面的 “内容...” 是其它分支的内容
这时需要我们手动合并代码后重新添加暂存区并提交文件到本地仓库。
git add .
git commit -m "注释内容"
但是此时注意commit时不能指定具体文件,因为在冲突期间不允许部分提交文件。
Git常用命令速查表