Git总结和常用命令
要想提交某个文件必须先加到暂存区然后才能提交
1 概述
1.1 简介
Git是分布式版本控制系统,分为两种类型的仓库:本地仓库和远程仓库。
本地仓库:是在开发人员自己电脑上的Git仓库
远程仓库:是在远程服务器上的Git仓库
Clone:克隆,就是将远程仓库复制到本地
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库
1.2 工作流程
- 从远程仓库中克隆代码到本地仓库
- 从本地仓库中checkout代码然后进行代码修改
- 在提交前先将代码添加到暂存区
- 提交到本地仓库。本地仓库保存修改的各个历史版本
- 修改完成后,需要共享代码时,将代码push到远程仓库
1.3 与SVN对比
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
SVN版本控制工具缺点:
- 服务器单点故障
- 容错性差
1.4 Git下载与安装
下载地址:https://git-scm.com/download,下载后一路下一步即可,成功后右键电脑桌面会有如下图标则表示安装成功。
2 Git托管服务
2.1 常用的Git代码托管服务
常用的有GitHub、码云、Gitlab等。
GitHub:https://github.com/
码云:https://gitee.com/
GitLab:https://about.gitlab.com/
2.2 克隆项目到本地
每个Git远程仓库都会对应一个网址,可以点击克隆/下载按钮弹出窗口并点击复制按钮获得这个网络地址。
3 Git常用命令
Git提供了很多命令完成相应的操作,常用的命令和概念如下:
- 环境配置
- 获取Git仓库
- 工作目录、暂存区以及版本库概念
- Git工作目录下文件的两种状态
- 本地仓库操作
- 远程仓库的使用
- 分支
- 标签
3.1 环境配置
# 设置用户信息
git config --global user.name "yinlu"
git config --global user.email "luyin@stumail.nwu.edu.cn"
# 查看配置信息
git config --list
上面的命令设置信息会保存到C盘当前用户下面的.gitconfig文件中
3.2 获取Git仓库
要使用Git对代码进行版本控制,首先需要获得Git仓库,获取Git仓库有两种方式:
在本地初始化一个Git仓库
在电脑任意位置创建一个空目录作为我们的本地Git仓库,然后右键打开Git bash窗口,执行命令
git init
,执行完成后当前目录会出现一个.git的隐藏文件夹从远程仓库克隆
同样在需要创建的位置右键打开Git bash窗口,执行命令
git clone 远程Git仓库地址
3.3 工作目录、暂存区以及版本库概念
版本库:获取Git仓库后出现的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等。
工作目录:包含.git文件夹的目录就是工作目录,主要用于存放开发的代码。
暂存区:.git文件夹中有很多文件,其中有个index文件就是暂存区,也可以叫stage。暂存区是一个临时保存文件的地方。
命令操作:
git add 改变的文件
:将工作目录的更改添加到暂存区。
git commit -m "改变的描述内容"
:将改变提交的版本库,也是本地仓库。
3.4 Git工作目录下文件的两种状态
Git工作目录下的文件存在两种状态:
untracked:未跟踪(未被纳入版本控制)
tracked:已跟踪(被纳入版本控制)
Unmodified:为修改状态
Modified:已修改状态
Staged:已暂存状态
具体命令操作:
git status
:查看文件状态(简写形式:git status -s
)
git reset 改变的文件
:将暂存区的文件取消暂存
git rm 删除文件
:删除工作区的文件,要想彻底删除需要提交到本地仓库
3.5 本地仓库的操作
- 将文件添加至忽略列表
一般我们总会有些文件无需纳入Git管理,也不希望它们总出现在未跟踪列表。在这种情况下可以在工作目录中创建一个名为.gitignore文件(文件名称固定),列出要忽略的文件模式。
注:windows下创建该文件需要在Git bash中以命令创建
touch .gitignore
比如上面这个就是忽略所有的.class结尾的文件。
git log
:查看日志记录
注:记录可能会显示不全,按回车键继续显示下面的记录,如不想查看了,按q键退出。
3.6 远程仓库操作
远程仓库的操作具体包括如下:
- 查看远程仓库
- 添加远程仓库
- 从远程仓库克隆
- 移除无效的远程仓库
- 从远程仓库中抓取与拉取
- 推送到远程仓库
3.6.1 查看远程仓库
如果想查看已经配置的远程仓库服务器,可以运行git remote
命令。它会列出指定的每一个远程服务器的简写。如果已经克隆了远程仓库,那么至少应该能看到origin,这是Git克隆的仓库服务器的默认名字。
如果想看到远程的服务器链接可以运行git remote -v或git remote show origin
命令
3.6.2 添加远程仓库
当我们自己在本例创建的Git仓库时,这时该仓库并没有和远程仓库具有对应关系,在该工作目录中运行git remote
命令是没有提示的。我们就可以运行git remote add <shortname> <url>
添加一个新的远程Git仓库,同时制定一个引用的简写。
3.6.3 从远程仓库克隆
如果想获得一份已经存在的Git仓库的拷贝,就需要用git clone命令。Git克隆的是该Git仓库服务器上的几乎所有数据,而不仅仅是复制工作所需的文件。克隆的命令是:git clone [url]
3.6.4 移除无效的远程仓库
如果要移除一个远程仓库,可以使用git remote rm
命令
注意:该命令只是从本地仓库移除远程仓库的记录,并不会影响远程仓库
3.6.5 从远程仓库中抓取与拉取
抓取(fetch):是从远程仓库获取最新版本到本地仓库,不会自动merge,需要进行如下操作
git init
初始化一个本地仓库git remote add origin https://gitee.com/xxx.repo.git
添加一个远程仓库,简易名字命名为origingit fetch origin master
抓取origin远程仓库的master分支(默认就是origin下的master,可以省略)git merge origin/master
将抓取来的内容merge到本地仓库拉取(pull):是从远程仓库获取最新版本并merge到本地仓库(相当于fetch+merge),即可将上面的3、4步合并成下面一句:
git pull origin master
注:如果当前本地仓库不是从远程克隆,而是本地创建的仓库,并且仓库中存在文件,此时再拉取会报错,需要在上述命令后面添加参数:–alow-unrelated-histories
3.6.6 推送到远程仓库
当你想分享代码时,可将其推送到远程仓库。命令形式:git push [remote-name][branch-name]
3.7 分支
-
查看分支
git branch
列出所有本地分支git branch -r
列出所有远程分支git branch -a
列出所有本地分支和远程分支 -
创建分支
git branch xxx
创建名为xxx的分支
-
切换分支
git checkout xxx
切换到xxx的分支 -
推送至远程仓库分支
git push origin b1
将本地仓库的b1分支推送到远程的b1分支(注:必须切换到该分支)
-
合并分支
git merge xxx
将xxx分支合并到当前分支
注:如果两个分支的相同文件都做了不同的修改,会提示文件冲突,git会自动进行添加过来,需要我们手动处理后重新提交后再合并
-
删除分支
git branch -d b1
删除b1分支,如果要删除的分支有内容没有提交,则会删除失败,可以将d改为D进行强制删除
3.8 Git标签
Git可以给历史的某一个提交打上标签,以示重要。比较有代表性的是人们会使用这个功能来标记发布节点(v1.0、v1.2等)。标签指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。
常用命令:
列出已有的标签
git tag
查看tag信息
git show [tag]
创建新标签
git tag [tagName]
提交指定tag,将标签推送至远程仓库
git push [remote][tag]
例:git push origin v0.3
检出标签,新建一个分支,指向某个tag
git checkout -b [branch][tag]
例:git checkout -b b3 v0.3
删除本地标签
git tag -d [tag]
删除远程标签tag
git push origin :refs/tags/[tag]
4 使用TortoiseGit管理文件版本
TortoiseGit是一款开源的Git图形界面工具,使用tortoiseGit工具可以简化Git相关的操作(本质上还是执行的Git相关命令)下载地址:
https://tortoisegit.org/download/安装成功后在桌面右键鼠标,出现如下菜单则表示安装成功。
4.1 TortoiseGit常用操作
创建仓库
- 相当于
git init
命令克隆仓库
- 相当于
git clone https//gitee.com/ChuanZhiBoke/repo1.git
将文件添加到暂存区
- 相当于
git add web.xml或git add .
命令提交文件
- 相当于
git commit -m "init web.xml"
命令推送本地仓库至远程仓库
- 相当于
git push origin master
拉取代码
- 相当于
git pull origin master
命令创建分支
- 相当于
git branch b1
切换分支
- 相当于
git checkout b1
命令合并分支
- 相当于
git merge b1
命令
5 在IDEA中使用Git
5.1 在IDEA中配置Git
安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。
选择File→Settings打开设置窗口,找到Version Control下的git选项:
选择git的安装目录后可以点击“Test”按钮测试是否正确配置
5.2 在IDEA中使用Git
5.2.1在IDEA中创建工程并将工程添加至Git
将项目添加至Git管理后,可以从IDEA的工具栏上看到Git操作的按钮
5.2.2 将文件添加到暂存区
5.2.3 提交文件
5.2.4 将代码推送到远程仓库
5.2.5 从远程仓库克隆工程到本地
5.2.6 从远程拉取代码
5.2.7 版本对比
5.2.8 创建分支
5.2.9 切换分支
5.2.10 分支合并
6 本地创建git上传到远程的流程
- 在github上创建项目
- 使用git clone https://xxxx.git克隆岛本地
- 编辑项目
- 添加到暂存区
- 提交