工作中git的使用

5986 字
30 分钟
工作中git的使用

一、git是什么?为什么需要git?#

1、git是什么#

简单的说,Git就 是一个分布式版本控制系统。

分布式:每个人的电脑上都有一个完整的仓库,包含了全部的历史记录。 这样你可以在自己的电脑上独立工作(提交代码、创建分支),不需要随时联网。等完成了一个功能后,再把自己的修改推送到一个大家约定的“中央服务器”上(比如 GitHub, Gitee)进行共享和协作。

版本控制:Git 就是帮你自动化、智能化地管理这个过程的工具。 它就像一个“时光机器”,记录你对项目文件所做的每一次修改(我们称之为“提交”)。你可以随时回溯到任何一个过去的版本,看看某一行代码是谁、在什么时候、为什么而修改的。

Git 的四个工作区域:

  • workspace:工作区

    就是平时存放项目代码的地方。

  • index:暂存区

    在将工作区内容加入到本地仓库,在加入到本地仓库前,是先放置在暂存区的

  • Repository:本地仓库

    位于自己的机器,本地仓库保存了被提交过的各个版本,比起工作区和暂存区的内容,它更旧一些。

  • Remote:远程仓库

    位于托管代码的服务器,就比如gitee、github、gitlab,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改。比起本地仓库,远程仓库通常旧一些,因此本地仓库修改完之后需要同步到远程仓库.

2、为什么需要git?#

  • 对个人:再也不怕“改错代码”和“误删文件”
  • 对团队:高效协作开发
  • 对项目:清晰的历史记录和权责明晰

二、git的安装#

1、安装过程基本直接下一步就可以
2、安装完成后,打开cmd,输入如下命令,能够查看到git版本,便是安装成功
git --version
3、配置用户名和邮箱
1)配置全局
git config --global user.name zy
git config --global user.email 736173273@qq.com
2)配置项目级别
切换到项目根目录下执行
git config user.name fengqingyang
git config user.email fengqingyang@zcloud.com
4、查看是否配置成功
1)查看全局配置
git config --global user.name
git config --global user.email
2)查看项目级配置
切换到项目根目录下执行
git config user.name
git config user.email

三、git常用命令#

在你需要操作的目录打开鼠标右击当前目录空白区域,选择git bash命令窗口打开

git-bash打开
git-bash打开

1、克隆代码#

  1. 克隆远程仓库代码到本地
git clone [远程仓库地址]
  1. 克隆远程仓库指定分支代码到本地
git clone -b [分支名] [远程仓库地址]
  1. 指定用户名密码克隆远程仓库代码到本地

指定账户密码只能是http/https地址

git clone http://<用户名>:<密码>@<远程仓库地址>

指定用户名密码的时候,是因为本地有缓存其他git的凭据信息,所以,需要指定此次克隆地址的用户名和密码。或者使用下面命令清除本地缓存的git凭据信息

git config --global --unset credential.helper

再次克隆若出现如下界面,则填写对应你克隆仓库的账号密码即可。

git-输入账号密码
git-输入账号密码

4)开启2FA双重认证的git仓库代码克隆

对于开启2FA双重认证的git仓库的克隆,此时使用账号密码是克隆不下来代码的,需要在平台获取访问令牌。

gitlab-创建访问令牌
gitlab-创建访问令牌

点击创建个人访问令牌之后,出现如下界面:

gitlab-token
gitlab-token

拿到token,使用token克隆即可:

git clone http://<用户名>:<token>@<远程仓库地址>
使用示例:
git clone http://zhuoye:glpat-HaQ_A4ejLRP1Jx-12yXz@192.168.3.3:9000/zCloud/study-platform/zy-cloud.git

git带token克隆
git带token克隆

注意:克隆代码的远程仓库地址可以使用http/https或者ssh地址,http/https地址直接使用就行,ssh地址需要本地生成密钥,然后远程仓库添加这个密钥。

ssh密钥配置流程:

  • 生成本地密钥
ssh-keygen -t ed25519 -C "736170173@qq.com"

生成ssh密钥
生成ssh密钥

默认生成在C:\Users\Administrator\ .ssh 其中Administrator是登录电脑的用户名,换成对应自己登录电脑的名字即可!

  • git上添加密钥

    在个人资料里面添加上述步骤生成的公钥,以.pub结尾的那个文件就是公钥。

添加密钥
添加密钥

配置完成后,便可以使用git中的ssh地址来进行克隆!

2、将代码从工作区添加到暂存区#

#添加单个文件
git add filename.txt
#添加多个文件
git add file1.txt file2.js file3.css
#添加当前目录所有更改(最常用)
git add .
#添加特定类型的文件
git add *.js # 添加所有js文件
git add src/*.ts # 添加src目录下所有ts文件

3、提交代码到本地仓库#

#提交暂存区里面的代码到本地仓库
git commit -m "提交说明"
#提交并添加所有更改(跳过 git add 步骤)
git commit -am "提交说明"

4、更新远程仓库代码到本地#

#拉取当前分支对应的远程分支代码并自动合并
git pull
#拉取远程特定分支并合并到当前分支
git pull origin 分支名

5、推送代码到远程仓库#

#推送当前分支到与之关联的远程分支
git push
#首次推送时需要设置上游分支
git push -u origin 分支名
# 推送当前分支到远程的指定分支
git push origin 本地分支名:远程分支名
# 强制推送,覆盖远程历史
git push --force

6、其它命令#

#新建分支
git branch 分支名
#切换分支
git checkout 分支名
#合并指定分支到当前分支
git merge 分支名

三、git集成idea的使用#

1、使用git开发前的注意事项#

  • git操作需谨慎!!!在进行不熟悉的git的操作或者复杂的git操作前,可以把代码做一个整体备份,一是防止误操作导致代码丢失,二是,这样的话你就放心的可以基于现在这份代码来试错了。备份的方式就是ctrl c ctrl v 粘贴复制保存一份未操作之前的代码,或者打个压缩包来保存也行。
  • 开发前,确定是在哪个分支开发,还是基于新的分支开发,如果基于新的分支开发,要确认清楚,基于哪个分支新建。
  • 推送代码之前,先把本地代码commit,然后再pull代码更新远程仓库代码,最后push
  • 切换分支之前,记得把当前分支没有commit的代码commit后再切换分支。
  • 合并分支代码之前,要问清楚你们是直接自己手动合并,还是要在git仓库管理平台发起合并请求。

2、idea集成git#

idea的settings里面找到Version Control里面的Git下配置本地安装的git

idea集成git
idea集成git

3、克隆代码#

idea也可以克隆代码,克隆之后,就可以直接打开克隆的代码,这种方式还是很方便的。

image-20250908184030482
image-20250908184030482

URL就是代码仓库地址,Directory就是代码要克隆的目录。填写完成后,点击Clone按钮即可!

idea克隆代码
idea克隆代码

有时候,idea可能会出现如下无法克隆的问题。确保idea已经集成git的情况下,还是有如下问题的话,便可以使用git bash命令窗口通过git clone命令来把代码克隆下来,然后再用idea打开克隆下来的代码。

idea克隆代码报错
idea克隆代码报错

3、常见操作#

idea中git常见操作

​ 图 3-1

3.3.1 提交代码#

点击图 3-1 的提交代码按钮,便会出现如下界面,按照图中描述的进行操作即可!注意,我们在工作中的时候,同事之间经常说的你有没有提交代码,其实是口语化的表达,并不是说你有没有commit,而是问你有没有push到远程仓库!commit只是把代码commit到你的本地仓库,只有把代码push到远程仓库,他那边才能从远程仓库更新代码到他的本地仓库!

idea-提交代码
idea-提交代码

3.3.2 更新代码#

点击 图 3-1 中的 Update Project,即可将远程分支代码更新到当前分支(建议更新代码先把代码commit一下,避免出现代码冲突误操作导致代码丢失的话,也可以进行回滚)

3.3.3 推送代码#

点击 图 3-1 中的 Push就会出现如下界面,点击下图对应按钮进行推送。一般情况点击Push正常推送即可!除非你本地代码和远程代码不一致,你又想要远程仓库代码和你本地代码保持一致,才使用Force Push进行强制推送!强制推送要谨慎

推送代码
推送代码

3.3.4 分支相关操作#

如下图,当我们点击分支后右尖括号的时候便可以针对当前分支进行对应操作。

新建分支
新建分支

​ 图 3-3-4-1

3.3.4.1 新建分支#

新建分支,如 图3-3-4-1,点击 new branch from main ,从而基于当前分支进行新建。

idea-新建分支
idea-新建分支

3.3.4.2 切换分支#

点击 图3-3-4-1 的CheckOut将代码切换到当前选中分支,切换代码前,如果当前分支有未commit的代码,可能会出现如下提示:

idea-切换分支提示
idea-切换分支提示

此时应点击 Don’t Checkout 暂不切换!可经过以下两种处理方式之后,再进行切换!需要注意的是,即使没有弹出该界面,最好也要手动commit或者暂存未commit的代码再切换分支!

  • 把当前未commit的代码进行commit

把未提交的代码进行commit,然后再切换分支。再次切换回来之后,如果不想保留这个commit记录。可以使用undo commit来撤销commit!

idea-撤销提交
idea-撤销提交

  • 暂存当前未commit的代码

如下图,鼠标右击任一空白区域,然后点击 Stash Changes 暂存当前分支修改的文件!

idea-暂存代码
idea-暂存代码

点击 Stash Changes 后出现如下界面,按下图指引进行操作即可!

idea-输入暂存消息
idea-输入暂存消息

再次切换回来之后,把暂存的代码恢复,如下点击 Unstash Changes

idea-恢复暂存
idea-恢复暂存

3.3.4.3 合并代码#

分支代码合并,有本地合并平台合并两种方式。具体哪种合并方式,要确认清楚。一般往重要分支合并都是需要平台发起合并请求,让有权限的人来审核你的代码,看是否合并。正常情况下,我们在源分支往子分支合并代码的话本地合并就行,而子分支代码往源分支合并的时候,则需要平台发起合并请求来进行合并。源分支一般都是受保护的,是不允许直接推送代码的!

需要注意的是,在平台发起合并请求的时候,也就是将子分支合并到源分支之前,最好按照下面本地合并的步骤,把源分支的更新合并到你的子分支。这样做的目的,就是把可能出现的冲突提前在本地解决掉。否则,如果有冲突的话,平台上是无法合并的!

1、本地合并

本地合并代码,如图 3-3-4-1点击你要合并的分支后的左尖括号后,点击 Merge ‘main’ into ‘dev’ 。这个意思就是将main分支代码合并到当前dev分支。dev分支就是你当前的分支,mian分支就是你要合并代码过来的分支。

1)源分支合并到子分支

注意的是,如果你点击的是合并本地main分支的话,一定要先切换到main分支更新一下你本地main分支的代码,保证本地main分支代码是最新的。然后,再切换回你的dev分支,按上述说的,来将main分支代码合并到你当前dev分支。如果,你是点击的远程分支,则直接合并即可!当然,如果dev分支,并不是你一个人的分支,合并之前,也要更新一下dev分支代码,保证dev分支代码也是最新的!

idea-合并代码-1
idea-合并代码-1

2)子分支合并到源分支

子分支合并到源分支,最好先按照 源分支合并到子分支的步骤合并完,再切换到源分支后,将子分支合并到源分支。合并完成之后,将代码推送到远程仓库即可!

2、平台合并

平台合并就是在git管理平台发起合并请求,待对应审核人员来进行审核,审核通过,同意合并,则合并成功。这里以gitlab为例,流程如下:

首先进入需要发起合并请求的代码仓库里,点击左侧合并请求选项(注意需要合并的代码未push的要push上去)

gitlab-合并请求-1
gitlab-合并请求-1

然后会出现如下界面,点击新建合并请求

gitlab-新建合并请求
gitlab-新建合并请求

然后出现如下界面,选择对应需要合并的分支,点击 比较分支并继续

gitlab-合并分支-选择分支
gitlab-合并分支-选择分支

然后出现如下界面,按照下图注释填写对应内容即可!

gitlab-合并请求
gitlab-合并请求

3.3.5 回退代码#
3.3.5.1 本地仓库代码回退#

本地仓库代码回退指的是你还没有将提交推送到远程仓库,或者你只想在本地回退代码。如下选择你要回退的版本进行回退。

回退代码
回退代码

会有如下四个选项:

git-回退选项
git-回退选项

  • Soft

    暂存区和工作区的内容保持不变。提交历史回退到了 提交一,但 提交二 中所做的所有更改,会放在暂存区里等待你再次提交。之前工作区的内容还在工作区,保持不变,不会丢失文件或者代码!

  • Mixed

    提交历史回退到了 提交一,但 提交二 中所做的所有更改,会回退到工作区里,之前暂存区的内容也会回退到工作区,工作区的内容保持不变。使用该模式,也不会出现丢失文件或者代码!

  • Hard

    提交历史回退到了 提交一 的样子。从 提交一 之后提交的所有修改都将被永久丢弃,包括暂存区的内容。工作区内容不受影响!

  • Keep

    提交历史回退到了 提交一,但之前提交 提交二 中所做的所有更改会丢失。之前暂存区的内容也会回退到工作区,工作区的内容保持不变。

总结表格如下:

模式工作区暂存区回退版本后提交记录的代码应用场景
—soft不变不变回退到暂存区“刚刚提交错代码了,想重新提交一次”
—mixed(默认)不变回退到工作区回退到工作区“提交太草率,想重新挑选文件再提交”
—hard不会丢弃丢弃“代码彻底不要了,回到干净的历史点”
—keep不会回退到工作区丢弃“想回退,但本地没提交的好改动想保留”
3.3.5.2 远程仓库代码回退#

远程仓库代码回退指的是你已经将提交推送到了远程仓库,现在需要将远程仓库的代码也回退到之前的某个版本。此时回退的方法有如下两个方式:

1) 不需要强制推送(推荐)

此方式不需要强制推送,会保留原有提交记录,并生成一条新的撤销记录,用于对应需要回退的那条记录。主要方式如下:

非强制推送-1
非强制推送-1

点击后会生成一条新的提交记录,该记录仅回滚你选中的那次提交所引入的代码修改。因此,它不会影响中间其他提交记录的代码。但是,如果中间的某次提交与你回滚的提交修改了同一个文件,则可能会产生冲突,需要手动解决。

非强制推送-3
非强制推送-3

需要注意的是,点击Revert Commit 回退之前需要将未提交的代码提交或者暂存,如果没有提交或者暂存Idea右下角会有如下提示

非强制推送-2
非强制推送-2

2)需要强制推送 (谨慎)

步骤就是,先按照本地仓库的回退步骤进行本地回退,然后再推送代码的时候选择强制推送即可。此时,如果强制推送即 Force Push 置灰不可点击,则说明该分支是受保护,不允许强制推送的!那么远程仓库代码该分支就是不允许做回滚的!那么就只能使用方式一。请注意,强制推送仅建议用于个人分支。如果该分支是公共的,那么强制回退该分支远程仓库代码可能会给其他人带来麻烦。因此,如果你要回退远程仓库公共分支代码之前,最好通知团队中的其他成员。

git-强制推送
git-强制推送

3.3.6 其他常见操作#
3.3.6.1 查看代码行提交人#

鼠标右击代码的左侧栏(也是打断点的地方),然后选择 Annotate with Git Blame ,便可查看每行代码是谁写的!

idea-查看每行代码谁写的
idea-查看每行代码谁写的

3.3.6.2 git日志窗口#

使用快捷键 Alt + 9 可以唤出git的日志窗口,在这里我们除了可以查看git提交的提交人、提交信息、提交时间等提交相关信息之外。还可以针对提交记录,做很多操作,比如上面说的回退代码,还有下面会说的合并指定提交记录代码合并提交记录修改提交信息等操作!

idea-git日志窗口
idea-git日志窗口

3.3.6.3 合并指定提交记录代码#

当你只需要合并某个分支的某个提交记录的时候,则在git日志窗口,选择对应分支之后,鼠标右击你需要合并的提交记录之后,点击 Cherry-Pick 把该记录合并过来。

idea-cherry-pick
idea-cherry-pick

3.3.6.4 更改远程仓库地址#

当我们公司的远程仓库地址变更后,我们本地的项目中的远程地址也需要同步更改!

更改远程仓库地址
更改远程仓库地址

出现如下界面修改远程仓库地址后,点击 OK 即可!

更改远程仓库地址-2
更改远程仓库地址-2

3.3.6.5 新增变更列表#

在我们打开commit窗口的时候,默认是,有一个名为Changes的默认更改列表。所有新更改都会自动放入这个更改列表中。还有一个未版本控制的文件更改列表,用于对尚未添加到 暂存区中的新创建的文件进行分组。你可以根据需要创建任意数量的更改列表。比如,当我们需要根据本地环境更改一些配置文件的时候,而这些配置文件是不需要提交的,那么我们就可以新建一个更改列表,然后,把这些不需要提交的配置文件放到这个更改列表里面,这样后续,提交代码的时候,这些更改的配置文件就不会出现在默认的更改列表Changes中了。

idea-新增变更列表-1
idea-新增变更列表-1

出现如下界面填写变更列表名称,点击 OK ,便新建一个变更列表!

idea-新增变更列表-1
idea-新增变更列表-1

把不需要提交的文件,使用鼠标拖到该变更列表即可!

idea-新增变更列表-3
idea-新增变更列表-3

3.3.6.6 合并提交记录#

在开发过程中,我们常常会遇到需要将多个提交记录整合为单一提交的情况。比如,在我们平时开发的时候,怕代码丢失,可能会频繁的多次提交。但是,正常情况下,我们应该完成某个功能之后,才应该算一个提交。所以,在完成该功能的开发时,我们可以采用合并提交记录的方式,把分散的多次提交整合成一个统一的提交,这样不仅有助于保持提交历史的清晰和简洁,也便于后续的代码审查与维护。需要注意的是,这些提交必须是尚未推送到远程仓库的本地提交。如果已经推送,再尝试压缩并重新推送的话,可能需要使用强制推送(force push),而强制推送通常是不推荐的,因为它可能会覆盖其他人的代码或导致不必要的冲突!

idea-合并提交记录
idea-合并提交记录

出现如下界面,进行提交记录合并

idea-合并提交记录-1
idea-合并提交记录-1

除此之外也可以按住Ctrl键 鼠标右击你选中的提交记录,点击 Squash Commits 来快速合并多条提交记录为一条

合并提交记录-2
合并提交记录-2

3.3.6.7 修改提交信息#

对于已经提交到本地仓库但没有push到远程仓库的提交记录,我们可以通过如下操作来修改提交信息。

idea-修改提交信息
idea-修改提交信息

出现如下界面,填写修改后的提交信息,点击 OK 即可!

idea-修改提交信息-2
idea-修改提交信息-2

4、常见问题#

3.4.1 git代码冲突#

当你在合并代码或者更新代码的时候,就有可能会出现冲突,发生文件冲突的时候,idea会出现如下界面:

idea-git冲突
idea-git冲突

有时候,出现冲突的时候是先出现如下界面,当你点击 Merge之后进入上图界面

idea-git-合并冲突
idea-git-合并冲突

注意,出现该问题一定不要直接叉掉不处理,这样会出现后面3.4.5的问题,并且可能会导致你没有提交的代码丢失

3.4.2 代码无法克隆#

​ 当出现代码无法克隆的时候,可以按照如下步骤进行排查,若以下步骤排查之后,还是不行,则直接可问同事!

代码无法克隆
代码无法克隆

3.4.3 代码无法推送#

当出现代码无法推送的时候,可以按照如下步骤进行排查,若以下步骤排查之后,还是不行,则直接可问同事!

代码无法推送
代码无法推送

3.4.4 idea使用git的过程,弹出填写token界面#

出现如下界面,随便填写一个token,然后点击 Log In 登录

idea-token登录-1
idea-token登录-1

出现如下界面点击,Log in via Git

idea-token登录-2
idea-token登录-2

出现如下界面,输入你git的账号密码登录即可!

idea-token登录-3
idea-token登录-3

还有一种方式就是把idea默认安装的gitlab插件给禁用,这样后续需要登录的时候就会直接弹出账号密码的登录,而不会是用Token登录!

3.4.5 当前分支名前出现Rebasing或者Merging#

如下图,有时候我们会发现自己当前的分支名前,会出现 Rebasing 或者 Merging,出现这个的原因,往往是你因为你进行了合并或者更新等可能引起冲突的操作,但是却没有对冲突文件进行处理,导致对应操作未实际完成的原因!

idea-分支名前出现Rebasing
idea-分支名前出现Rebasing

或者

idea-分支前出现Merging
idea-分支前出现Merging

点击 Resolve Conflicts 处理冲突!

idea-分支名前出现Rebasing-2
idea-分支名前出现Rebasing-2

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
工作中git的使用
https://study-docs-158.pages.dev/posts/工作中git的使用/
作者
我的学习小铺
发布于
2026-08-01
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
我的学习小铺
学而时习之
分类
标签
最新动态
站点统计
文章
41
分类
7
标签
3
总字数
122,278
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.15.3
文章许可
CC BY-NC-SA 4.0