Git:在本地电脑上如何使用git?

git 版本: 2.40.1.windows.1


文章目录

  • 一. 使用git之前你必须要理解的几个概念
    • 1.1 理解工作区、版本库、暂存区的概念
    • 1.2 提交Git版本库的步骤【分两步执行】
  • 二. Git本地库实战
    • 2.1 初始化版本库
    • 2.2 新建 & 提交 & 状态
    • 2.3 查看日志
    • 2.4 回退 & 穿梭 & 撤销
      • 2.4.1 回退到历史版本
      • 2.4.2 版本穿梭
      • 2.4.3 撤销文件
    • 2.5 删除
    • 2.6 分支
      • 2.6.1 实际开发流程
      • 2.6.2 分支概念
      • 2.6.3. 分支的好处
      • 2.6.4 分支操作
      • 2.6.5 分支操作详解
        • 1) 创建分支和切换分支之图解
        • 2) 如何创建分支和切换分支?
        • 3)如何删除分支?
        • 4) 如何合并分支?
    • 2.7 git追踪的文件数据丢失了,怎么办?
      • 1.问题描述
      • 2.问题原因
      • 3.解决方案
    • 2.8 版本冲突
      • 1. 冲突产生的表现
      • 2. 冲突产生的原因
      • 3. 冲突的解决
      • 4. 避免冲突


在这里插入图片描述


一. 使用git之前你必须要理解的几个概念

1.1 理解工作区、版本库、暂存区的概念

以本人电脑桌面上的文件夹git_test举例说明

  • 工作区(Working Directory):就是电脑本地的硬盘目录

    在这里插入图片描述

  • 版本库(Repository):工作区有个隐藏目录 .git ,它就是Git的本地版本库

    在这里插入图片描述
    在这里插入图片描述

  • 暂存区(stage):一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)

    在这里插入图片描述

  • 分支(Branch):Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

在这里插入图片描述

1.2 提交Git版本库的步骤【分两步执行】

👉第一步

用“git add”把文件纳入Git管理,实际是把本地文件修改添加到暂存区

👉第二步

用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以commit就是往master分支上提交更改。

可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。一旦提交完后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。即:nothing to commit (working directory clean)。

👉其他操作

①用“git diff HEAD – filename”命令可以查看工作区和暂存区里面最新版本的区别。

②撤销未add的文件: git checkout --文件名

③撤销已add未commit的文件:先git reset [HEAD] 文件名,再 git checkout – 文件名

④撤销已add已commit:git reset --hard HEAD^ 【^ -> 回退一个版本,^^ -> 回退两个版本,剩下依此类推,如果嫌麻烦,想回退多个版本,后面加~+数字


二. Git本地库实战

👉 常用命令预览

命令名称命令作用
git init初始化本地库,生成.git 目录【本地库】
git config --global user.name 用户名设置用户签名的用户名部分
git config --global user.email 邮箱设置用户签名的邮箱部分
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

2.1 初始化版本库

👉前提

要使用Git对我们的代码进行版本控制,首先需要获得Git仓库

👉获取Git仓库通常有两种方式

  1. 在本地初始化一个Git仓库
  2. 从远程仓库克隆

如何在本地初始化一个Git仓库?

①创建目录(用作本地版本库),例如:C:\Users\king\Desktop\git_test,git_test表示你自己新建的项目名称

②当前目录打开Git Bash窗口,初始化仓库

👉初始化仓库命令

git init

在这里插入图片描述

在这里插入图片描述

💡注意

我这里git报了一个“ Reinitialized existing Git repository in
C:/Users/king/Desktop/git_test/.git/
”的提示信息。

它表示在路径 “C:/Users/king/Desktop/git_test/” 下重新初始化了一个已存在的 Git 仓库。

🤔原先存在的git仓库数据会被清空吗?

是的,执行 git init 命令时,如果指定的路径下已经存在一个 Git 仓库,并且重新初始化了该仓库,那么原有的 Git仓库数据将被清除。这意味着之前的提交历史、分支、标签等所有与该仓库相关的数据都将被删除。 在重新初始化后,该仓库会变成一个空的、新的 Git 仓库,需要重新添加文件、进行提交等操作,因此建议对重要项目的git仓库做好备份

💡ps:我这里所说的git仓库就是上文介绍的git本地版本库

③查看当前目录产生 .git隐藏文件夹

💡注意:当前的 .git 是一个隐藏文件夹,需要在电脑上面设置隐藏文件夹显示设置,否则,看不到这个.git目录,可参考如下步骤查看隐藏文件夹

在这里插入图片描述

2.2 新建 & 提交 & 状态

1.新建文件

👉命令

  • touch a.txt:新建一个空白文件

  • vim a.txt:编辑文件

2.查看文件状态

​👉命令

git status

  • On branch master :表示主分支
  • Untracked files:表示未跟踪状态

👉Git工作目录下的文件状态信息如下

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

💡注意这些文件的状态会随着我们执行Git的命令而发生变化

  • 红色表示新建文件或者新修改的文件,都在工作区
  • 绿色表示文件在暂存区
  • 一般新建的文件存放在工作区,它需要被添加到暂存区并提交到本地库中

在这里插入图片描述

👉也可以使用git status –s 使输出信息更加简洁

  • ?? : 表示未跟踪状态

    在这里插入图片描述

3.添加到暂存区

👉命令

  • git add <文件名称>只是增加到栈空间(index文件)中,还没有添加到本地库中。初始化时没有这个index文件。这还是一个新文件,需要将栈空间文件提交到本地仓库
  • git add添加项目中所有文件

👉举例演示

将刚创建的文件[a.txt]添加到缓存区中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2tZIKuP-1691841589602)(C:\Users\king\AppData\Roaming\Typora\typora-user-images\image-20230810224225922.png)]

💡注意

①添加未存在文件会出错,错误信息为【fatal: pathspec ‘hello.txt’ did not match any files】

🤔不信?请看如下案例

使用命令 git add hello.txt 添加不存在的文件[hello.txt]到缓存区中

在这里插入图片描述

②使用git add 文件名时,可以使用Tab键自动补全其文件名

在这里插入图片描述

4.撤销暂存区的文件

👉命令

git reset <文件名称>撤销后,查看文件状态(git status)文件由绿色变为红色

👉举例演示

将添加到缓存区中的文件[a.txt]撤销,使其回到工作区中

在这里插入图片描述

5.将暂存区文件提交到本地库

👉命令

  • git commit执该行命令时需手动填写提交日志[备注/注释],进入编辑模式

    不信?请看如下演示

    在这里插入图片描述
    在这里插入图片描述

  • git commit –m “注释内容”直接用-m参数指定日志内容,推荐,因为commit 会生成一条版本记录,add只是添加暂存区,不会生成版本记录,建议多次add后,一次性commit,避免每次add都commit产生版本信息爆炸

  • git commit -am "注释内容"代码编辑完成后即可进行 add 和 commit 操作,此命令是添加和提交的合并命令

👉举例演示

将文件[a.txt]提交到本地库中

在这里插入图片描述

💡注意

虽然git commit -am "注释内容" 命令虽然可以**将已跟踪的修改直接添加到暂存区,并创建一个新的提交记录,将这些修改永久保存到版本库中,但是该命令只适用于对已经添加到版本库中的文件进行修改,且修改后的文件需要被提交, 换而言之,不能对工作区中的文件一键添加并提交到本地库中。对于新添加的未跟踪文件,仍然需要先使用 git add 命令将其添加到暂存区,然后再使用 git commit -m "注释内容" 进行提交。

2.3 查看日志

👉命令

  • git log显示提交日志信息

    在这里插入图片描述

  • git log a.txt文件日志(查看所有日志或某个文件日志),按q退出
    在这里插入图片描述

  • git log --pretty=oneline如果日志很多,可以在一行显示

    在这里插入图片描述

  • git reflog查看所有的历史操作

    在这里插入图片描述

2.4 回退 & 穿梭 & 撤销

2.4.1 回退到历史版本

👉命令

  • git reset --hard HEAD\^一次回退一个版本,一个^代表一个版本数量

  • git reset --hard HEAD~n回退n次操作

👉举例演示:

对b.txt文件回退到上一个版本

执行回退命令前

在这里插入图片描述

执行回退命令后

在这里插入图片描述

2.4.2 版本穿梭

👉步骤

  1. git reflog 文件名查看指定文件的历史操作
  2. git reset --hard 版本号回到指定的版本

👉举例演示:

文件b.txt已经插入了三条数据,且每次插入数据后都提交到了本地库中,现需要将b.txt文件穿梭到第一版[即插入“第一次插入数据”的b.txt]

执行版本穿梭命令前

在这里插入图片描述

执行版本穿梭命令后

在这里插入图片描述

2.4.3 撤销文件

🚩情形1(未add,未commit的文件)

👉命令

  • git checkout -- 文件名撤销修改,即还原原来的文件

👉理解

该命令的主要作用是将指定文件恢复到最近一次提交的状态。简而言之,如果你在工作区对某个文件做了修改,但是还没有使用 git add 将其添加到暂存区,那么可以使用 git checkout -- <文件名> 命令来撤销对文件的修改,将其恢复为最近一次提交的状态。这里有个使用前提,如果你的文件仅仅只是在工作区中新增并修改了一个文件,比如c.txt,再使用 git checkout -- c.txt 命令撤销文件,会报错,报错信息如下所示:

在这里插入图片描述

🤔why?

我在工作区中新建并修改了文件C.txt,该文件没有被add,即添加进缓存区中,Git 在执行撤销操作时,会检查文件是否已经被 Git 跟踪(即已添加到 Git 中)。由于 ‘c.txt’ 文件尚未被添加到 Git 中,因此 Git 不知道如何撤销该文件的更改。 故会报错,该命令的使用场景是你在工作区新增并修改了某个文件,把文件add到缓存区,紧接着你第二次修改了这个文件,但没有add到缓存区,就可以使用该命令撤销第二次修改的数据,恢复到第一次修改时的状态。

🤔 如何得知某个文件是否已经被 Git 跟踪?

要想确定文件是否已经被 Git 跟踪,可以使用 git status 命令来查看文件的状态。

在终端或命令行界面中,进入到该文件所在的工作目录,并运行 git status 命令。Git 将显示当前分支的状态以及与之相关的文件信息。

如果文件已经被 Git 跟踪git status 命令的输出中会显示在 “Changes to be committed” 或者 “Changes not staged for commit” 部分下列出该文件。

如果文件没有被 Git 跟踪,则不会在上述两个部分中显示该文件,而是会出现在 “Untracked files” 部分。

在这里插入图片描述

🤔 使用git add 文件名 命令是否意味着该文件已经被纳入Git 监管(已被Git 跟踪)?

是的,使用命令会将文件 ‘c.txt’ 添加到 Git 的跟踪列表中,标记为已追踪(tracked)。

当运行 git add 命令时,Git 会将指定的文件从工作区添加到暂存区。暂存区是一个缓冲区域,用于暂时存储要包含在下一次提交中的更改。通过将文件添加到暂存区,Git 开始跟踪该文件的状态变化,即文件的新修改或删除操作。这意味着 Git 将在下一次提交时记录并保存对文件的更改。

所以,一旦使用 git add c.txt 将文件添加到 Git 的跟踪列表,该文件就被视为已追踪。接下来,你可以使用 git commit 命令将暂存区中的更改提交到版本历史记录中。

需要注意的是,如果在运行 git add 命令之前没有创建过该文件,那么该文件将被识别为新文件,并添加到 Git 的跟踪列表中。如果在运行 git add 命令之前对文件进行了修改,则 git add 命令将记录这些修改并更新版本控制系统。

👉举例演示

新建一个文件c.txt,使用vim修改该文件,第一次修改后add到缓存区中,第二次修改后不add和commit,然后使用git checkout --文件名命令进行文件撤销

①新建文件c.txt并使用vim修改它,插入“你好,世界!”,第一次修改后add到缓存区中

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ vim c.txt

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat c.txt
你好,世界!

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git checkout c.txt
error: pathspec 'c.txt' did not match any file(s) known to git

②第二次修改该文件,插入“你好,Git!”,然后使用git checkout --文件名命令进行文件撤销

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ vim c.txt

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat c.txt
你好,世界!
你好,Git!

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git checkout c.txt
Updated 1 path from the index

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat c.txt
你好,世界!

我们可以很明显的看到,c.txt文件已被恢复到第一次修改时的状态,即文件中只有一条数据【你好,世界】!!!

🚩情形二(已add,未commit的文件)

👉命令

  • git reset HEAD <文件名>将已经添加到暂存区(或索引)的文件移出暂存区
  • git reset HEAD .撤销所有已添加到暂存区的文件,可以使用 . 作为文件名

👉举例演示

使用vim修改文件c.txt,d.txt和e.txt,添加add,但不提交commit,使用上述命令进行撤销

①使用git reset HEAD c.txt命令将c.txt移出缓存区

在这里插入图片描述
在这里插入图片描述

②使用git reset HEAD . 命令将剩余的两个文件一起移出缓存区

在这里插入图片描述

💡注意

git reset HEAD 命令只影响暂存区,不会修改工作区中的实际文件内容。如果需要撤销对文件的修改并还原到最近一次提交的状态,可以使用 git checkout -- <文件名> 命令。

2.5 删除

👉可以使用 git rm 命令。git rm 命令会将文件从 Git 仓库中删除,并将删除操作记录到提交历史中。

以下是删除文件的几种常见情况和对应的命令:

  1. 删除工作目录中的文件并将删除操作提交到 Git 仓库

    git rm <文件名>
    

    <文件名> 替换为要删除的文件的名称。例如,要删除名为 c.txt 的文件,命令如下:

    git rm c.txt
    

    运行该命令后,文件将被从工作目录和 Git 仓库中删除。

    举例演示:将文件c.txt使用git rm c.txt命令删除

    ①先将文件c.txt提交到本地版本库中

    在这里插入图片描述

    ②t使用git rm c.txt命令删除此文件

    在这里插入图片描述

  2. 仅删除 Git 仓库中的文件,而不删除工作目录中的文件

    git rm --cached <文件名>
    

    使用 --cached 选项可以仅将文件从 Git 仓库中删除,而保留工作目录中的实际文件。

    例如,要从 Git 仓库中删除名为 c.txt 的文件,但保留工作目录中的实际文件,命令如下:

    git rm --cached c.txt
    

    运行该命令后,文件将被从 Git 仓库中删除,但保留在工作目录中

    举例演示:使用git rm --cached d.txt命令删除文件d.txt

    ①先把文件d.txt添加到git仓库中

    在这里插入图片描述

    ②使用git rm --cached d.txt命令删除文件d.txt

    在这里插入图片描述

  3. 删除整个文件夹及其内容:

    git rm -r <文件夹路径>
    

    使用 -r 选项可以递归地删除文件夹及其内容。

    例如,要删除名为 folder 的文件夹及其所有内容,命令如下:

    git rm -r folder
    

    运行该命令后,文件夹及其内容将被从工作目录和 Git 仓库中删除。

    举例演示:在该项目所在的文件夹中新建一个文件夹folder,使用git rm -r folder命令删除该文件夹

    ①在该项目所在的文件夹中新建一个文件夹folder,并提交到git仓库中

    在这里插入图片描述

    ②使用git rm -r folder命令删除该文件夹

    在这里插入图片描述

在执行 git rm 命令后,需要通过提交操作来确认删除 ,需要使用 git commit 命令提交你的更改,并将删除操作记录到提交历史中。

why?

这是因为git rm 命令会把删除操作添加到暂存区,但实际的文件删除操作只会在提交时生效。

注意

git rm 命令不仅会从 Git 仓库中删除文件,还会将删除操作添加到暂存区。如果只想保留文件在 Git仓库中但从工作目录中删除,可以使用 git rm --cached 命令。

2.6 分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init 命令默认创建它,并且大多数人都懒得去改动它。

2.6.1 实际开发流程

在这里插入图片描述

2.6.2 分支概念

在使用版本控制工具【git / svn 】开发的过程中,可以同时推进多个任务,如下图所示

在这里插入图片描述

2.6.3. 分支的好处

①可以同时并行推进多个功能开发,提高开发效率

②各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

2.6.4 分支操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

2.6.5 分支操作详解

1) 创建分支和切换分支之图解

在这里插入图片描述

解读

  • master,hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的
  • HEAD如果指向master,那么我们现在就在master分支上
  • HEAD如果指向hotfix,那么我们现在就在hotfix分支上
  • 切换分支的本质就是移动HEAD指针

2) 如何创建分支和切换分支?

①创建分支

👉前提

你已在本地仓库的主分支(一般是 master)

🤔如何确保当前所在分支是是主分支?

通过命令git branch来确认当前所在分,当前所在的分支会在列表中以特殊标记(通常是 *)显示出来

在这里插入图片描述

👉命令

git branch <新分支名>

👉举例演示

创建分支test

在这里插入图片描述

②切换分支

👉切换到新创建的分支,可以使用以下命令:

git checkout <新分支名>

👉举例演示

要切换到名为 test 的新分支

在这里插入图片描述

💡注意

如果你使用的是较新版本的 Git(2.23+),也可以使用以下命令创建并切换到新分支:

git switch -c <新分支名>

👉举例演示

使用git switch -c <新分支名> 命令创建新分支test1

在这里插入图片描述

3)如何删除分支?

👉删除分支之前需通过git branch命令确定要删除的分支名称,然后执行以下命令:

git branch -d <分支名>

👉举例演示

要删除名为 test1 的分支,可以运行以下命令:

git branch -d test1

在这里插入图片描述

💡注意

删除分支只会删除对应的分支引用,而不会删除与该分支关联的提交历史。因此,删除分支并不会造成数据丢失,可以放心执行。

4) 如何合并分支?

👉图解如下所示:

在这里插入图片描述

合并分支时会涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”

👉命令

git merge 目标分支

此命令的本质就是把目标分支合并到当前所在分支

👉举例演示

把分支hotfix合并到test分支中

①确保当前所在的分支是test

在这里插入图片描述

②使用git merge hotfix命令将分支hotfix合并到当前分支test上

在这里插入图片描述

2.7 git追踪的文件数据丢失了,怎么办?

1.问题描述

我在分支test上修改文件abc.txt,修改完后提交到git仓库,但是切回master分支时vim
abc.txt文件时,文件中没有数据,是空白的

①在test分支上查看文件abc.txt,其内容如下

在这里插入图片描述

②在master分支上查看文件abc.txt,其内容如下

在这里插入图片描述

在这里插入图片描述

2.问题原因

操作失误删除了一个错误的分支可能会导致数据丢失,在删除分支之前,确保选择了正确的分支。

使用错误的分支合并当使用Git进行分支合并时,有时候会选择错误的分支或提交。如果在错误的分支上执行合并操作,可能会导致数据丢失,因为合并会更新当前分支的提交记录。
磁盘故障Git的数据存储在硬盘上。如果硬盘发生故障,可能会导致git仓库的部分或全部数据丢失

3.解决方案

👉步骤

①使用 git reflog <文件名/文件路径> / git reflog命令检查 Git 的提交历史记录,确认文件是否在之前的提交中存在

在这里插入图片描述

②如果你找到了包含丢失数据的提交,则通过回退该提交来恢复丢失的版本。使用 git checkout 命令将文件恢复到特定提交的状态

命令参考如下:

git checkout <目标提交> -- <文件路径>

替换 <目标提交> 为包含丢失数据的提交的哈希值或相对引用,<文件路径> 为丢失数据的文件路径

简而言之,就是把历史操作记录中每一行记录最左边的”编号"[哈希值或相对引用],例如“6621c2e ”之类的,放到<目标提交>的位置,在当前位置上的文件,可直接写文件名在<文件路径>上的位置
在这里插入图片描述

2.8 版本冲突

1. 冲突产生的表现

举例演示:

①创建分支test,并在此分支上新建并修改文件abc.txt,提交到git仓库中

代码示例如下:

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git checkout test
Switched to branch 'test'

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ vim abc.txt

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ cat abc.txt
你好,世界!
风调雨顺
你好,Java!

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ git add abc.txt
warning: in the working copy of 'abc.txt', LF will be replaced by CRLF the next time Git touches it

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ git commit -m "test分支修改了第二行数据"
[test 67ca5a4] test分支修改了第二行数据
 1 file changed, 3 insertions(+)
 create mode 100644 abc.txt

②切回主分支master,并在此分支上修改文件abc.txt,主要是对文件abc.txt中第二行数据修改为“xxxx”,最后提交到git仓库中

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (test)
$ git checkout master
Switched to branch 'master'

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat abc.txt
你好,世界!
风调雨顺
你好,Java!

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ vim abc.txt

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ cat abc.txt
你好,世界!
xxxx
你好,Java!

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git commit -am "master修改了第二行数据"
[master 7766fc2] master修改了第二行数据
 1 file changed, 3 insertions(+)
 create mode 100644 abc.txt


③把test分支合并到master分支上

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master)
$ git merge test
Auto-merging abc.txt
CONFLICT (add/add): Merge conflict in abc.txt
Automatic merge failed; fix conflicts and then commit the result.

king@DESKTOP-F03JAPH MINGW64 ~/Desktop/git_test (master|MERGING)
$ cat abc.txt
你好,世界!
<<<<<<< HEAD
xxxx
=======
风调雨顺
>>>>>>> test
你好,Java!

Git使用“<<<<<<< HEAD、=========、>>>>>>>>>> 分支名称”符号帮我们标记出产生冲突的内容

具体冲突内容如下所示:

在这里插入图片描述

2. 冲突产生的原因

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容

3. 冲突的解决

①编辑有冲突的文件,删除特殊符号,决定要使用的内容

在这里插入图片描述

②添加到暂存区

在这里插入图片描述

③执行提交(注意:使用git commit命令时不能带文件名)

在这里插入图片描述

4. 避免冲突

👉容易冲突的操作方式

  • 多个人同时操作了同一个文件

  • 一个人一直写不提交

  • 修改之前不更新最新代码

  • 提交之前不更新最新代码

  • 擅自修改同事代码

👉减少冲突的操作方式

  • 养成良好的操作习惯,先pull在修改,修改完立即commitpush

  • 一定要确保自己正在修改的文件是最新版本的

  • 各自开发各自的模块

  • 如果要修改公共文件,一定要先确认有没有人正在修改

  • 下班前一定要提交代码,上班第一件事拉取最新代码

  • 一定不要擅自修改同事的代码


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/71559.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树莓派RP2040 用Arduino IDE安装和编译

目录 1 Arduino IDE 1.1 IDE下载 1.2 安装 arduino mbed os rp2040 boards 2 编程-烧录固件 2.1 打开点灯示例程序 2.2 选择Raspberry Pi Pico开发板 2.3 编译程序 2.4 烧录程序 2.4.1 Raspberry Pi Pico开发板首次烧录提示失败 2.4.2 解决首次下载失败问题 2.4.2.1…

FFmpeg 使用总结

FFmpeg 简介 FFmpeg的名称来自MPEG视频编码标准&#xff0c;前面的“FF”代表“Fast Forward”&#xff0c;FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换。包括如下几个部分&#xf…

C语言一些有趣的冷门知识

文章目录 概要1.访问数组元素的方法运行结果 2.中括号的特殊用法运行结果 3.大括号的特殊用法运行结果 4.sizeof的用法运行结果 5.渐进运算符运行结果 小结 概要 本文章只是介绍一些有趣的C语言知识&#xff0c;纯属娱乐。这里所有的演示代码我是使用的编译器是Visual Studio …

jenkins流水线

1.拉取代码 https://gitee.com/Wjc_project/yygh-parent.git2、项目编译 mvn clean package -Dmaven.test.skiptrue ls hospital-manage/target3、构建镜像 ls hospital-manage/target docker build -t hospital-manage:latest -f hospital-manage/Dockerfile ./hospital-ma…

SRS视频媒体服务器-docker启动:更换默认端口时的错误

一、概述 在使用srs视频服务器时&#xff0c;一直都是使用默认的端口配置。但是&#xff0c;这些默认端口在某些时候可能已经被占用了&#xff0c;就需要更改端口了。 注意注意注意&#xff1a;使用docker启动srs&#xff0c;在更换端口一定要下面的内容。 二、使用docker启动…

MFC第三十天 通过CToolBar类开发文字工具栏和工具箱、GDI+边框填充以及基本图形的绘制方法、图形绘制过程的反色线模型和实色模型

文章目录 CControlBar通过CToolBar类开发文字工具栏和工具箱CMainFrame.hCAppCMainFrm.cppCMainView.hCMainView.cppCEllipse.hCEllipse.cppCLine.hCLine.cppCRRect .hCRRect .cpp CControlBar class AFX_NOVTABLE CControlBar : public CWnd{DECLARE_DYNAMIC(CControlBar)pro…

Jmeter请求接口返回值乱码解决

乱码示例 解决步骤&#xff1a; 1.打开Jmeter安装目录下的bin目录&#xff0c;找到jmeter.properties 2.使用记事本或其他编译工具打开jmeter.properties文件&#xff0c;然后全局搜索sampleresult.default.encoding 3.在文件中添加sampleresult.default.encodingutf-8,保存…

LeetCode--HOT100题(28)

目录 题目描述&#xff1a;2. 两数相加&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;2. 两数相加&#xff08;中等&#xff09; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且…

c语言每日一练(6)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…

42. range函数—生成器函数-更新

【目录】 文章目录 1. range( )函数是什么&#xff1f;2. 知识回顾-列表的切片3. range( )函数的语法3.1 range( )函数语法3.2 参数说明3.3 列表切片和range函数的区别 4. 实操练习4.1 参数为一个正整数4.2 参数为04.3 参数为一个负整数4.4 有2个参数4.5 有3个参数4.6 步长为负…

vscode extension 怎么区分dev prod

开发模式注入环境变量 使用vsode 提供的api

利用Torchmetrics库快速进行Torch的评价指标计算(推荐)

目录 1、安装 2、基本流程介绍 3、MetricCollection 4、自定义指标 5、我们可以调用多个指标计算不同的任务 6、可以是标签,也可以是one_hot编码 7、常用分类指标计算 8、异常报错 1、安装 官网地址:Welcome to TorchMetrics — PyTorch-Metrics 1.0.1 documenta…

掌握Python的X篇_34_Python朗读文字

各种广告中说python是人工智能的主宰&#xff0c;其实这更多是噱头的成分&#xff0c;但是python确实可以做很多的事情&#xff0c;本篇将会介绍利用pythonAI平台来合成声音。今天将会用到的是百度。 文章目录 1. baiToVoice2. 注册appid3. 合成代码 1. baiToVoice 使用百度A…

创建多图层叠加效果的背景与人物图像

引言&#xff1a; 在现代应用程序开发中&#xff0c;图形资源的使用是非常常见的&#xff0c;特别是在用户界面设计中。通过使用TImageList和TGlyph组件的组合&#xff0c;我们可以实现令人印象深刻的多图层叠加效果。本文将介绍如何使用这两个组件来创建背景和人物的多图层叠加…

Idea创建maven管理的web项目

如果你想在项目中添加一个传统的 src 目录来存放源代码&#xff0c;可以按照以下步骤操作&#xff1a; 1. 在项目视图中&#xff0c;右键单击项目名称&#xff0c;选择 “New” -> “Directory”。 2. 在弹出的对话框中&#xff0c;输入目录名称为 “src”&#xff0c;然后…

Camunda 7.x 系列【3】Camunda 简介

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址&#xff1a;https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 核心组件2.1 流程引擎2.2 模型2.3 Web…

金融反欺诈的应用实践

“根据980起全球重大金融欺诈事件分析&#xff0c;60%的欺诈发生在移动端&#xff0c;同比增长170%。“&#xff0c;在香港近日举办的金融科技沙龙上&#xff0c;顶象金融业务安全专家史博表示&#xff0c;金融业已成为不法分子重要的攻击对象。 本届金融科技沙龙由Databricks…

【Linux 网络】 数据链路层协议

数据链路层协议 数据链路层解决的问题以太网协议认识以太网以太网帧格式 认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 总结 数据链路层解决的问题 IP拥有将数据跨…

Springboot04--vue前端部分+element-ui

注意点&#xff1a; 这边v-model和value的区别&#xff1a;v-model是双向绑定的&#xff0c;value是单向绑定 li的key的问题 vue的组件化开发&#xff1a; 1. NPM&#xff08;类似maven&#xff0c;是管理前段代码的工具&#xff09; 安装完之后可以在cmd里面使用以下指令 2.…

智汇云舟入选IDC《中国智慧城市数字孪生技术评估,2023》报告

8月7日&#xff0c;国际数据公司&#xff08;IDC&#xff09;发布了《中国智慧城市数字孪生技术评估&#xff0c;2023》报告。智汇云舟凭借在数字孪生领域的创新技术与产品&#xff0c;入选《2023中国数字孪生城市技术提供商图谱》。 报告通过公开征集的形式进行申报&am…