Git 能做什么?

Git 是一个分布式版本控制工具,主要用于管理文件。学习 Git 之后可以实现:

  • 代码回溯
  • 版本切换
  • 多人协作
  • 远程备份

什么是本地仓库?远程仓库?

本地仓库和远程仓库都可以顾名思义。当在本地创建了一个本地仓库之后,可以选择不推送到远程,这样也能实现本地文件的版本控制,当推送到远程仓库之后就可以免除换电脑的烦恼,且多人协作也可以流畅进行。

Git 全局配置

安装 Git 只需找到官网然后一路下一步即可。

在安装之后可以将 git 加入环境变量方便使用,然后我们进行全局配置:配置用户名和 email 地址。之后的每次 Git 提交都会使用此配置信息。

在 Git 命令行中执行以下命令

  • 设置用户信息
1
2
git config --global user.name "Your Name"
git config --global user.email "Your Email Address"
  • 查看配置信息

配置好上面的信息后执行下面的命令进行检查

1
git config --list

注:上面设置的用户信息的 user.name 和 user.email 并不一定要注册仓库的账号名和邮箱地址

Git 命令

本地仓库

  1. 在任意目录下创建一个空目录(如 repo1)作为本地 Git 仓库
  2. 进入这个目录中,Git bash here
  3. 执行命令 git init

如果在当前目录中可找到.git 文件夹(此文件夹为隐藏文件夹)则说明 Git 仓库创建成功

除了上述方法生成本地仓库,还可以克隆 git clone repoAddress 远程仓库到本地,这样也能拥有一个本地仓库,注意一个目录下只能存在一个仓库,且不用再准备一个空的目录,因为克隆下来的仓库会将仓库封装到以仓库名为名字的文件夹下

常用命令

git status 查看文件状态
git add 将文件的修改加入暂存区
git reset 将暂存区的文件取消暂存或者是切换到指定的版本 git reset --hard version
git commit 将暂存区的文件修改提交到版本库
git log 查看日志

基本概念

看到克隆或创建的仓库的.git 文件夹你可能会好奇这到底是什么?

  • 版本库:其实该.git 文件夹就是版本库,版本库汇总存储了很多配置信息、日志信息、文件版本信息等
  • 工作区:包含.git 文件夹的目录就是工作区,也成为工作目录,主要存放开发的代码文件
  • 暂存区:.git 文件夹文件夹中有很多文件,当你新增一个文件(如 1.txt)与.git 文件夹同级,此时 1.txt 已经在工作区,但他还未被 Git 进行版本管理,Git 进行版本控制的流程为:工作区 -> 暂存区 -> 版本库
    所以此时要进行 git add fileName1 filename2 ... 操作将其添加到暂存区,此操作将会使得.git 目录下出现一个 index 文件,也可以叫做 stage,也就是暂存区了。
    然后执行 git commit -m "HintMsg" fileName 即可将其提交到版本库中进行管理

那么工作区那么多文件,我该如何分辨哪些是被版本控制的哪些没有呢?

Git 工作区中的文件存在两种状态:

  • untracked 未跟踪(未被纳入版本控制)
  • tracked 已跟踪 (已被纳入版本控制)
    • Unmodified 为修改状态
    • Modified 已修改状态
    • Staged 已暂存状态

可以执行指令 git status 查看当前仓库是否存在可提交的文件,并展示文件状态

注意:当一个文件已经被 tracked,之后只是进行了修改,是无需重新进行 git add 操作的,可以直接 commit,未被 commit 前它的状态是 Modified 属于 tracked 当中,可使用上述命令查看验证。

远程仓库

git remote 查看远程仓库,查看详细信息 git remote -v
git remote add 添加本地仓库关联的远程仓库,shortName 为别名一般为 origin
git clone 从远程仓库克隆
git pull 从远程仓库拉取
git push branchName 推送到远程仓库

Git 分支

分支是 Git 使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
通过 git init 命令创建本地仓库时默认会创建一个 master 分支。

git branch 查看分支,-r 列出所有远程分支,-a 列出所有本地分支和远程分支
git branch [name] 创建分支
git checkout [name] 切换分支
git push [shortName] [name] 推送至远程仓库分支
git merge [name] 合并分支,将指定分支合并至当前分支
git branch -d [name] 删除分支

Git 标签

GIt 标签类似快照,存储着某一时刻的代码内容、状态等。可类比为版本号 v1.0、v2.0 等

git tag 列出已有的标签
git tag [name] 创建标签
git push [shortName] [name] 将标签推送到远程仓库
git checkout -b [branch] [name] 检出标签

注意:检出标签必须使用 - b 指定检出的分支名,由于标签不是分支,所以切换到某个标签只能将其检出为一个分支,如:git checkout -b bv1 v1.0

Git & IDEA 配置

打开 IDEA 的设置,找到版本控制(Version Control)->Git,将 Git 的本地可执行文件路径(Path to Git executable)补充正确,如果自动检测可用也是可以的,点击右边的测试(Test)如果出现 Git 的版本号就可以,别忘了点击应用

之后只需要在一个打开的项目中,点击 IDEA 上方导航栏的 VCS-> 创建 Git 仓库(Create Git Repository),选择你要进行管理的项目父文件夹,如:demo-project 下有 src、pom.xml 等文件,就可以选择 demo-project 作为仓库文件夹,.git 版本库会出现在和 src 同级的目录中。此后 VCS 就会变成 Git 了。

注:IDEA 已帮你省略 add 到暂存区的操作,可以直接选择要提交的文件进行 commit 即可

当你进行 commit 操作时可能会出现显示可提交的文件的视图而不是我们常看到的目录 - 文件等结构,这时你可以点击上方的小按钮进行选择,选择目录即可

image-20240626203148193

在提交时,提交源码和必要的配置文件即可,无需提交字节码、target 文件夹等

那么文件那么多,我怎么选择性的提交呢?

这就是.gitignore 文件的作用之处了,这个文件可配置哪些文件是我们不需要进行提交的,例如:

1
2
3
4
5
6
7
8
9
10
11
# Maven #
target/

# IDEA #
.idea/
*.iml

# Eclipse #
.settings/
.classpath
.project

/ 的名字表示是一个文件夹而非文件