1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#常用命令汇总
# 1. 克隆
git clone https://gitee.com/xxx.git
cd 克隆的目录

# 2. 切换到主线分支,拉取最新代码(保证开发分支基于最新代码)
git checkout master
git pull origin master

#检出到指定提交哈希值
git log #来查看提交记录的哈希值
git checkout 哈希值 #如果只是查看历史代码可以直接用
git checkout -b 新分支名 哈希值 #如果要基于历史提交改代码,必须基于这个哈希创建新分支

# 3. 创建并切换到开发分支
git checkout -b 新分支名

# 4. 开始开发、提交
git add .
git commit -m "提交说明"
# 补充:仅修改已有文件时,可以用简写(新增文件不生效)
# git commit -am "提交说明"

# 5. 开发完成,合并回主线 master
# 先切换回 master
git checkout master
# 拉取远程最新的 master,避免本地不是最新版本
git pull origin master
# 把开发分支合并到 master
git merge 新分支名

# 6. 推送合并后的 master 到远程仓库
# 第一次推送加 -u 建立追踪关系,后续直接 git push 即可
git push -u origin master

# 7. (可选)合并完成后删除本地开发分支
git branch -d 新分支名


# 创建并切换分支(等价于 git checkout -b)
git switch -c 新分支名
# 切换到已有分支
git switch master

# 可选
git fetch 从远程仓库抓取
git branch -r 获取远程仓库分支 -vv 查看本地分支与远程分支的跟踪关系
git merge --abort 终止当前合并
git remote -v 查看项目管理的git地址
git remote remove origin 移出
git remote add origin https://gitee.com/xxx.git 添加
#切换分支先提交代码,否则容易丢失
#git命令学习
https://help.gitee.com/learn-Git-Branching/?locale=zh_CN

Git分布式版本控制工具

1、目标

  • 了解Git基本概念
  • 能够概述git工作流程
  • 能够使用Git常用命令
  • 熟悉Git代码托管服务
  • 能够使用idea操作git

2、概述

2.1、开发中的实际场景

  • 场景一:备份 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流。
  • 场景二:代码还原 这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的代码已经回不到从前了。什么地方能买到哆啦A梦的时光机啊?
  • 场景三:协同开发 小刚和小强先后从文件服务器上下载了同一个文件:Analysis.java。小刚在Analysis.java文件中的第30行声明了一个方法,叫count(),先保存到了文件服务器上;小强在Analysis.java文件中的第50行声明了一个方法,叫sum(),也随后保存到了文件服务器上,于是,count()方法就只存在于小刚的记忆中了。
  • 场景四:追溯问题代码的编写人和编写时间 老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!就拿这次来说吧,有个Bug调试了30多个小时才知道是因为相关属性没有在应用初始化时赋值!可是二胖、王东、刘流和正经牛都不承认是自己干的。

2.2、版本控制器的方式

a、集中式版本控制工具

集中式版本控制工具,版本库是集中存放在中央服务器的,团队里每个人工作时从中央服务器下载代码,必须联网才能工作(局域网或互联网),个人修改后提交到中央版本库。

  • 举例:SVN和CVS

b、分布式版本控制工具

分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作时无需联网。多人协作只需要各自将修改推送给对方,就能互相看到对方的修改。

  • 举例:Git

2.3、SVN

原讲义此处为SVN集中式架构示意图,无独立图片资源

2.4、Git

Git是分布式的,不需要中心服务器,每台电脑拥有的内容都是一致的。我们使用中心服务器仅仅是为了方便交换大家的修改,服务器的地位和每个人的PC相同,只是作为不关机的交换节点存在。

git是一个开源的分布式版本控制系统,可以高效、高速地处理从很小到非常大的项目版本管理。Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的开放源码版本控制软件。

Git诞生于2005年:此前Linux内核社区使用BitKeeper进行版本管理,2005年双方合作终止,Linus Torvalds基于使用BitKeeper的经验,开发了全新的分布式版本控制系统Git,并制定了系统目标:

  • 速度快
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

原讲义此处为Git分布式架构示意图,标注有“共享版本库/远程仓库、PULL、PUSH、Clone、本地仓库、开发人员、Commit”等内容,无独立图片资源

2.5、Git工作流程图

原讲义此处为Git工作流程示意图,展示工作区、暂存区、本地仓库、远程仓库的状态流转,无独立图片资源

核心命令说明:

  1. clone(克隆):从远程仓库中克隆代码到本地仓库
  2. checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
  3. add(添加):在提交前先将代码提交到暂存区
  4. commit(提交):提交到本地仓库,本地仓库中保存修改的各个历史版本
  5. fetch(抓取):从远程库抓取到本地仓库,不进行任何的合并动作,日常使用较少
  6. pull(拉取):从远程库拉到本地库,自动进行合并(merge)并更新到工作区,等同于fetch+merge
  7. push(推送):修改完成后,将代码推送到远程仓库,和团队成员共享

3、Git安装与常用命令

本教程的git命令均在Git Bash中演示,提前说明常用基础Linux命令:

  • ls/ll:查看当前目录
  • cat:查看文件内容
  • touch:创建文件
  • vi:vi编辑器(仅用于演示,可替换为记事本、VS Code等其他编辑器)

3.1、 Git环境配置

3.1.1 下载与安装

  • 官方下载地址:https://git-scm.com/download
  • 下载后得到安装包(例如Git-2.20.1-64-bit.exe),双击按向导完成安装
  • 验证安装:在任意文件夹右键,出现Git GUI HereGit Bash Here选项即为安装成功

备注:

  • Git GUI:Git官方提供的图形界面工具
  • Git Bash:Git提供的命令行工具

安装完成后,第一步需要配置用户名称和邮箱地址——每次Git提交都会携带该用户信息,用于标识提交人。

3.1.2 基本配置

  1. 打开Git Bash
  2. 设置用户信息
1
2
git config --global user.name "itcast"
git config --global user.email "hello@itcast.cn"
  1. 查看配置信息
1
2
git config --global user.name
git config --global user.email

3.1.3 为常用指令配置别名(可选)

部分常用命令参数繁多,可通过配置别名简化输入。

  1. 创建配置文件 Windows系统无法直接创建点开头的文件,可在Git Bash中执行:
1
touch ~/.bashrc
  1. 编辑.bashrc文件,添加别名规则
1
2
3
4
# 用于输出精简的git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及详细信息
alias ll='ls -al'
  1. 执行命令使配置立即生效
1
source ~/.bashrc

3.1.4 解决GitBash乱码问题

  1. 执行Git全局配置命令
1
git config --global core.quotepath false
  1. 编辑Git安装目录下的etc/bash.bashrc文件,在末尾添加两行
1
2
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

3.2、获取本地仓库

要使用Git管理代码,首先需要创建本地仓库:

  1. 在电脑任意位置创建一个空文件夹(例如git-test
  2. 进入文件夹,右键打开Git Bash
  3. 执行初始化命令
1
git init
  1. 初始化成功后,文件夹内会生成隐藏的.git目录,该目录即为Git的本地仓库数据

操作示例:

1
2
3
4
5
6
7
$ git init
Initialized empty Git repository in C:/Users/zhang/Desktop/git-test/test01/.git/

$ ll
drwxr-xr-x 1 zhang 197609 0 1月 9 11:29 ./
drwxr-xr-x 1 zhang 197609 0 1月 9 11:29 ../
drwxr-xr-x 1 zhang 197609 0 1月 9 11:29 .git/

3.3、基础操作指令

Git工作目录中,文件的修改(新增、删除、更新)存在不同状态,通过Git命令可以在状态间流转。

原讲义此处为文件状态流转示意图,展示工作区、暂存区、本地仓库的状态转换关系,无独立图片资源

核心状态转换命令:

  1. git add:工作区 → 暂存区
  2. git commit:暂存区 → 本地仓库

3.3.1、查看修改的状态(status)

  • 作用:查看工作区、暂存区的文件修改状态
  • 命令:
1
git status

3.3.2、添加工作区到暂存区(add)

  • 作用:将单个或多个文件的修改添加到暂存区
  • 命令:
1
2
3
4
5
# 添加单个文件
git add 文件名

# 添加当前目录所有修改
git add .

3.3.3、提交暂存区到本地仓库(commit)

  • 作用:将暂存区的内容提交到本地仓库的当前分支,生成永久提交记录
  • 命令:
1
git commit -m '提交注释内容'

3.3.4、查看提交日志(log)

前文配置的git-log别名即为精简日志命令,也可手动添加参数使用。

  • 作用:查看分支的提交历史记录
  • 命令:
1
git log [可选参数]
  • 常用参数:
    • --all:显示所有分支的提交
    • --pretty=oneline:将每条提交信息显示为一行
    • --abbrev-commit:简化显示commit ID
    • --graph:以图形化形式显示分支合并关系

3.3.5、版本回退

  • 作用:切换到指定的历史提交版本
  • 命令:
1
git reset --hard commitID
1
2
git reset HEAD~1  本地分支回退,不会影响远程
git revert HEAD 远程分支回退,可以推送提交
命令 是否删除历史提交 能否直接 push 远程 适用场景
git reset HEAD~1 本地删除原有提交 已推送则不能直接 push,强制推送有风险 提交仅存在本地,未推远程
git revert HEAD 保留原提交,新增反向提交 可正常 push,无风险 提交已推送到远程 / 多人协作公共分支
  • commitID可通过git loggit-log查看

查看已删除的提交记录: 使用git reflog命令,可以查看所有操作记录(包括已被回退删除的提交)

3.3.6、添加文件至忽略列表

部分文件无需纳入Git管理(例如编译产物、日志文件、本地配置文件等),可通过.gitignore文件配置忽略规则。

在工作目录创建名为.gitignore的文件(文件名固定),写入需要忽略的文件模式,示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 忽略所有.a后缀的文件
*.a

# 但不忽略lib.a
!lib.a

# 仅忽略当前目录的TODO文件,不忽略子目录下的TODO
/TODO

# 忽略build目录下的所有文件
build/

# 忽略doc目录下的所有txt文件(不包含子目录)
doc/*.txt

# 忽略doc目录下所有层级的pdf文件
doc/**/*.pdf

练习:基础操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
##################### 仓库初始化
# 创建目录git_test01并打开Git Bash(略)
# 初始化Git仓库
git init

##################### 创建文件并提交
# 创建文件file01.txt(略)
# 将修改加入暂存区
git add .
# 提交到本地仓库
git commit -m 'commit 001'
# 查看提交日志
git log

#################### 修改文件并提交
# 修改file01内容为count=1(略)
# 加入暂存区
git add .
# 提交修改
git commit -m 'update file01'
# 查看精简日志
git-log

#################### 版本回退
# 查看提交记录,获取倒数第二次的commitID
git-log
# 回退到指定版本
git reset --hard 你的commitID

3.4、分支

几乎所有版本控制系统都支持分支。使用分支可以将开发工作从主线上分离,在独立分支上开发新功能、修复Bug,避免影响主线代码。

3.4.1、查看本地分支

1
git branch

3.4.2、创建本地分支

1
git branch 分支名

3.4.4、切换分支(checkout)

1
2
3
4
5
# 切换到已存在的分支
git checkout 分支名

# 创建并切换到新分支
git checkout -b 分支名

image-20260620120347826

相对引用最多的就是移动分支。可以直接使用 -f 选项让分支指向另一个提交。例如:

1
git branch -f main HEAD~3

上面的命令会将 main 分支强制指向 HEAD 的第 3 级 parent 提交。

3.4.6、合并分支(merge)

将目标分支的提交合并到当前分支:

1
git merge 分支名称

3.4.7、删除分支

注意:不能删除当前所在的分支,需先切换到其他分支再执行删除

1
2
3
4
5
# 常规删除:会检查分支是否已合并,未合并则拒绝删除
git branch -d 分支名

# 强制删除:不做检查,直接删除
git branch -D 分支名

3.4.8、解决冲突

当两个分支同时修改了同一个文件的同一行代码,合并时会产生冲突,需要手动解决。

解决步骤:

  1. 打开冲突文件,编辑冲突内容,保留最终需要的代码
  2. 将解决完冲突的文件重新加入暂存区(git add
  3. 提交到仓库完成合并(git commit

冲突文件的标记格式:

1
2
3
4
5
<<<<<<< HEAD
count=1 # 当前分支的内容
=======
count=2 # 被合并分支的内容
>>>>>>> dev

操作示例:

1
2
3
4
5
6
7
8
9
$ git merge dev
Auto-merging file01.txt
CONFLICT (content): Merge conflict in file01.txt
Automatic merge failed; fix conflicts and then commit the result.

# 手动编辑文件解决冲突后
$ git add .
$ git commit
[master 98eb214] Merge branch 'dev'

3.4.9、开发中分支使用原则与流程

实际项目开发中,通常会划分不同职能的分支,遵循标准的分支管理流程:

  • master(生产)分支:线上主分支,对应正式运行的代码,中小规模项目直接作为线上分支。
  • develop(开发)分支:从master创建,作为开发团队的主开发分支,日常开发都在此分支进行;阶段开发完成后,合并到master分支准备上线。
  • feature/xxxx 功能分支:从develop创建,用于并行开发不同期上线的功能,功能开发完成后合并回develop分支。
  • hotfix/xxxx 修复分支:从master派生,用于紧急修复线上Bug,修复完成后需要同时合并到master、develop等分支。

除此之外还有test(测试)分支、pre(预上线)分支等,根据项目规模按需使用。

原讲义此处为分支流转生命周期示意图,无独立图片资源

练习:分支操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
########################### 创建并切换分支
# 在master分支创建dev01分支
git branch dev01
# 切换到dev01分支
git checkout dev01
# 创建文件file02.txt(略)
# 提交修改
git add .
git commit -m 'add file02 on dev'
# 查看提交记录
git-log

########################### 合并分支
# 切换回master分支
git checkout master
# 将dev01分支合并到master
git merge dev01
# 查看合并后的日志
git-log

########################### 删除分支
# 删除dev01分支
git branch -d dev01
# 验证分支已删除
git branch

4、 Git远程仓库

4.1、 常用的代码托管服务

Git仓库分为本地仓库和远程仓库,我们可以借助第三方代码托管平台搭建远程仓库,主流平台有:

  • GitHub:地址 https://github.com/ ,全球最大的开源代码托管平台,仅支持Git格式,开源项目免费使用。
  • 码云(Gitee):地址 https://gitee.com/ ,国内的代码托管平台,服务器在国内,访问速度更快,支持私有仓库。
  • GitLab:地址 https://about.gitlab.com/ ,开源的仓库管理系统,通常用于企业、学校内部搭建私有Git私服。

4.2、 注册码云

使用码云服务需要先注册账号,注册地址:https://gitee.com/signup

原讲义此处为码云注册页面示意图,无独立图片资源

4.3、 创建远程仓库

创建步骤:

  1. 登录码云,点击右上角「+」→「新建仓库」
  2. 填写仓库名称,仓库路径会自动生成
  3. 填写仓库介绍(非必填)
  4. 选择仓库权限:公开/私有(私有仓库免费版最多支持5人协作)
  5. 不要勾选「使用Readme文件初始化这个仓库」等初始化选项
  6. 点击「创建」完成仓库建立

创建完成后,在仓库页面选择「SSH」方式,即可获取远程仓库地址,格式例如:git@gitee.com:用户名/git_test.git

原讲义此处为码云创建仓库页面、仓库地址页面示意图,无独立图片资源

4.4、配置SSH公钥

使用SSH方式访问远程仓库,需要配置SSH公钥实现免密登录。

  1. 生成SSH公钥 打开Git Bash,执行命令,连续按三次回车即可:
1
ssh-keygen -t rsa

如果本地已有公钥,会自动覆盖。

  1. 获取公钥内容
1
cat ~/.ssh/id_rsa.pub

复制输出的全部公钥内容。

  1. 码云添加公钥
  • 进入码云「设置」→「SSH公钥」页面
  • 填写公钥标题(自定义)
  • 将复制的公钥内容粘贴到公钥输入框
  • 点击「确定」完成添加
  1. 验证配置是否成功
1
ssh -T git@gitee.com

提示欢迎信息即为配置成功。

原讲义此处为码云SSH公钥配置页面示意图,无独立图片资源

4.5、操作远程仓库

4.5.1、添加远程仓库

先有本地仓库,再关联已创建的远程仓库:

  • 命令格式:
1
git remote add <远端名称> <仓库路径>
  • 远端名称默认叫origin,可自定义
  • 仓库路径即远程仓库的SSH/HTTPS地址
  • 示例:
1
git remote add origin git@gitee.com:czbk_zhang_meng/git_test.git

4.5.2、查看远程仓库

1
git remote

4.5.3、推送到远程仓库

将本地分支的提交推送到远程仓库:

  • 命令格式:
1
git push [-f] [--set-upstream] [远端名称] [本地分支名][:远端分支名]
  • 常用用法:
1
2
3
4
5
6
7
8
# 本地分支和远程分支同名时,可简写
git push origin master

# 推送并建立分支关联关系(首次推送使用)
git push --set-upstream origin master

# 强制覆盖远程分支(谨慎使用)
git push -f origin master
  • 分支建立关联后,后续推送可直接简写为:
1
git push

操作示例:

1
2
3
4
5
6
7
8
9
$ git push --set-upstream origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 204 bytes | 204.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:czbk_zhang_meng/git_test.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

4.5.4、 查看分支关联关系

查看本地分支与远程分支的跟踪关系:

1
git branch -vv

4.5.5、从远程仓库克隆

已有远程仓库时,直接克隆到本地生成完整的本地仓库:

  • 命令格式:
1
git clone <仓库路径> [本地目录名]
  • 本地目录名可省略,省略后自动使用仓库名作为目录名

操作示例:

1
2
3
4
5
6
7
$ git clone https://gitee.com/czbk_zhang_meng/git_test.git
Cloning into 'git_test'...
remote: Enumerating objects: 34, done.
remote: Compressing objects: 100% (28/28), done.
remote: Counting objects: 100% (34/34), done.
remote: Total 34 (delta 13), reused 0 (delta 0)
Unpacking objects: 100% (34/34), done.

4.5.6、从远程仓库中抓取和拉取

  • 抓取(fetch) 将远程仓库的更新下载到本地,但不会自动合并,需要手动执行merge操作。
1
2
3
4
5
# 抓取指定远程的指定分支
git fetch 远端名称 分支名

# 抓取所有远程的全部分支
git fetch
  • 拉取(pull) 将远程仓库的更新下载到本地,并自动合并到当前分支,等同于fetch + merge
1
2
3
4
5
# 拉取指定远程的指定分支
git pull 远端名称 分支名

# 拉取当前分支对应的远程分支更新
git pull

操作示例:

  1. 仓库A提交修改并推送到远程
1
2
3
4
touch file05.txt
git add .
git commit -m '创建file05'
git push
  1. 仓库B拉取远程更新
1
2
3
4
5
6
7
8
9
10
11
12
13
$ git pull
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From https://gitee.com/czbk_zhang_meng/git_test
664d35c..b39fb8b master -> origin/master
Updating 664d35c..b39fb8b
Fast-forward
file05.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file05.txt

4.5.7、解决远程合并冲突

多人协作时,A、B两人同时修改了同一个文件的同一行,A先推送到远程,B推送时会失败。

解决流程:

  1. B先执行git pull拉取远程最新代码
  2. 本地自动合并失败,产生冲突
  3. B手动解决本地冲突,add后commit提交
  4. 再次执行git push推送到远程

远程冲突的解决方式和本地分支冲突完全一致。

原讲义此处为远程冲突解决流程示意图,无独立图片资源

练习:远程仓库操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
########################## 1. 本地仓库推送远程
# 完成注册、创建仓库、配置SSH公钥(略)
# 本地仓库添加远程地址
git remote add origin git@gitee.com:你的用户名/你的仓库名.git
# 首次推送并建立关联
git push --set-upstream origin master

########################### 2. 克隆远程仓库到本地
# 克隆到指定目录git_test02
git clone git@gitee.com:你的用户名/你的仓库名.git git_test02
# 进入目录查看提交记录
cd git_test02
git-log

########################### 3. 推送本地修改
# 在git_test01中创建file03.txt(略)
git add .
git commit -m 'add file03'
# 推送到远程
git push origin master

########################### 4. 拉取远程更新
# 在git_test02中拉取最新代码
git pull
# 查看文件是否更新
git-log

5、在Idea中使用Git

5.1、在Idea中配置Git

IntelliJ IDEA会自动识别默认路径的Git,如果修改了Git安装路径,需要手动配置:

  1. 打开 File → Settings 设置窗口
  2. 找到 Version Control → Git 选项
  3. Path to Git executable 中选择Git安装目录下的git.exe
  4. 点击 Test 按钮,提示执行成功即配置完成

原讲义此处为IDEA Git配置页面示意图,无独立图片资源

5.2、在Idea中操作Git

场景:本地已有一个非Git管理的项目,需要上传到码云远程仓库,实现团队协作。

5.2.1、创建项目远程仓库(参照4.3)

在码云创建对应项目的仓库,例如springmvc_demo,不要勾选任何初始化选项,创建后复制仓库地址。

原讲义此处为码云创建项目仓库页面示意图,无独立图片资源

5.2.2、初始化本地仓库

  1. 在IDEA中打开目标项目
  2. 顶部菜单选择 VCS → Import into Version Control → Create Git Repository
  3. 选择当前项目根目录作为仓库目录,点击OK
  4. 将准备好的.gitignore文件放入项目根目录

原讲义此处为IDEA初始化Git仓库操作示意图,无独立图片资源

5.2.3、设置远程仓库

  1. 顶部菜单选择 Git → Remotes
  2. 点击「+」添加远程仓库
  3. 填写名称(默认origin)和远程仓库URL
  4. 点击OK确认

原讲义此处为IDEA设置远程仓库操作示意图,无独立图片资源

5.2.4、提交到本地仓库

  1. 点击顶部工具栏的提交按钮,或使用快捷键 Ctrl+K
  2. 在弹出的Commit Changes窗口中,勾选所有需要提交的文件
  3. 在提交信息输入框填写提交说明,例如init: 初始化项目基础结构
  4. 点击Commit按钮完成本地提交

原讲义此处为IDEA提交代码窗口示意图,无独立图片资源

5.2.6、推送到远程仓库

  1. 顶部菜单选择 Git → Push,或使用快捷键 Ctrl+Shift+K
  2. 在推送窗口确认提交内容和目标分支
  3. 点击Push按钮完成推送

原讲义此处为IDEA推送代码操作示意图,无独立图片资源

5.2.7、克隆远程仓库到本地

  1. 打开IDEA欢迎页,选择 Get from VCS
  2. 在URL中填写远程仓库地址
  3. 选择本地存放项目的目录
  4. 点击Clone按钮完成克隆

原讲义此处为IDEA克隆仓库窗口示意图,无独立图片资源

5.2.8、创建分支

方式一:快捷分支按钮
  1. 点击IDEA右下角的当前分支名称
  2. 选择 New Branch
  3. 输入新分支名称,点击确认,自动创建并切换到新分支
方式二:从提交记录创建
  1. 打开Git日志窗口(Git → Show History
  2. 右键选中目标提交记录,选择 New Branch
  3. 输入分支名称,点击确认

原讲义此处为IDEA创建分支操作示意图,无独立图片资源

5.2.9、切换分支及其他分支操作

点击IDEA右下角的分支名称,弹出分支菜单:

  • 切换分支:在本地分支列表选择目标分支,点击 Checkout
  • 合并分支:选择要合并的分支,点击 Merge into Current
  • 重命名分支:选择分支,点击 Rename
  • 删除分支:选择分支,点击 Delete

原讲义此处为IDEA分支操作菜单示意图,无独立图片资源

5.2.11、解决冲突

执行pull或merge操作发生冲突时,IDEA会弹出冲突解决窗口:

  • Accept Yours:保留本地分支的修改,丢弃对方修改
  • Accept Theirs:保留对方分支的修改,丢弃本地修改
  • 手动编辑:在代码区直接修改,保留最终需要的内容

冲突解决完成后,文件会自动加入暂存区,提交后即可完成合并,后续正常推送即可。

原讲义此处为IDEA冲突解决窗口示意图,无独立图片资源

5.3、IDEA常用GIT操作入口

  1. 顶部快捷工具栏:更新(pull)、提交(commit)、推送(push)、分支切换、日志查看,满足日常开发需求
  2. 右键Git菜单:在项目文件/目录上右键选择Git,可执行add、revert、compare with history等操作
  3. 顶部VCS菜单:包含所有Git操作的完整入口

原讲义此处为IDEA Git操作入口示意图,无独立图片资源

5.4、团队协作综合场景

练习场景:组长搭建项目仓库,组员协同开发

  1. 组长基于本地项目创建本地仓库,创建远程仓库,将项目推送到远程
  2. 所有组员从远程仓库克隆项目到本地,获得完整的开发副本
  3. 组员A修改代码,提交本地后推送到远程;组员B执行pull即可获取最新代码
  4. 组员A和组员B同时修改同一文件同一行,先后推送时后者会失败
    1. 解决:后推送的组员先pull拉取最新代码,本地解决冲突,提交后再推送

原讲义此处为团队协作流程示意图,无独立图片资源

附:几条铁令

  1. 切换分支前,先提交本地的修改
  2. 代码及时提交,提交过的代码就不会丢失
  3. 遇到任何问题都不要删除.git目录,第一时间找协助人员

附:疑难问题解决

1. Windows下看不到隐藏文件(.bashrc、.gitignore)

打开文件资源管理器,点击顶部「查看」选项卡,勾选「隐藏的项目」即可显示。

2. Windows下无法创建点开头的文件(.gitignore/.bashrc)

在目标目录打开Git Bash,使用touch命令创建:

1
2
3
4
5
# 创建.gitignore
touch .gitignore

# 创建用户目录下的.bashrc
touch ~/.bashrc

附:IDEA集成GitBash作为Terminal

  1. 打开 File → Settings → Tools → Terminal
  2. Shell path 修改为Git Bash的路径,例如C:\Program Files\Git\bin\bash.exe
  3. 点击OK保存,重启Terminal即可使用Git Bash

原讲义此处为IDEA Terminal配置页面示意图,无独立图片资源

说明

原讲义中的图片均为操作界面示意图与流程图,本次整理已完整保留对应文字说明与操作步骤;你可直接将以上内容复制保存为.md文件使用。

需要我帮你补充Git常用命令速查表,或者补充更多分支管理的最佳实践吗?