当前位置: 首页 > news >正文

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.txtking@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.txtking@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 indexking@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.txtking@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 itking@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.txtking@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

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

  • 各自开发各自的模块

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

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

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


相关文章:

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

git 版本&#xff1a; 2.40.1.windows.1 文章目录 一. 使用git之前你必须要理解的几个概念1.1 理解工作区、版本库、暂存区的概念1.2 提交Git版本库的步骤【分两步执行】 二. Git本地库实战2.1 初始化版本库2.2 新建 & 提交 & 状态2.3 查看日志2.4 回退 & 穿梭 &am…...

卷和分区的关系

1、分区 存储空间管理和仓库管理类似&#xff0c;只不过仓库管理的是货物&#xff0c;存储空间管理的是文件。当仓库规模小时&#xff0c;可以不划分货物的存放区域&#xff0c;但当仓库规模很大&#xff0c;就必须根据货物的类型和存储需要&#xff0c;把仓库分为多个区域。例…...

Linux下在qtcreator中创建qt程序

目录 1、新建项目 2、单工程项目创建 3、多工程项目创建 4、添加子工程&#xff08;基于多工程目录结构&#xff09; 5、 .pro文件 1、新建项目 切换到“编辑”界面&#xff0c;点击菜单栏中的“文件”-“新建文件或项目” 2、单工程项目创建 只有一个工程的项目&#…...

快递再多也不怕!你的顺丰快递用上5G“神器”

互联网时代&#xff0c;剁手党疯狂“买买买”之后&#xff0c;快递件量再创新高。《2023年6月中国快递发展指数报告》显示&#xff0c;2023二季度单月快递业务量稳定在百亿件以上。其中&#xff0c;由于“618”电商促销活动与父亲节叠加&#xff0c;6月16日至20日单日揽收量均超…...

微信小程序:模板使用

目录 模板的优点&#xff1a; 一、静态模板创建 二、静态模板使用 1.*.wxml引入模板 2.模板使用 3.*.wxss引入模板的样式 三、动态模板创建 四、动态模板使用 1.*.wxml引入模板 2.模板使用 3.*.js定义动态数据 五、结果展示 总结 模板的优点&#xff1a; 有利于保持网…...

AUTOSAR NvM Block的三种类型

Native NVRAM block Native block是最基础的NvM Block&#xff0c;可以用来存储一个数据&#xff0c;可以配置长度、CRC等。 Redundant NVRAM block Redundant block就是在Native block的基础上再加一个冗余块&#xff0c;当Native block失效&#xff08;读取失败或CRC校验失…...

Vue+ElementUI实现选择指定行导出Excel

这里记录一下&#xff0c;今天写项目时 的一个需求&#xff0c;就是通过复选框选中指定行然后导出表格中选中行的Excel表格 然后这里介绍一个工具箱(模板)&#xff1a;vue-element-admin 将它拉取后&#xff0c;运行就可以看到如下界面&#xff1a; 这里面的很多功能都已经实现…...

SNMP简单介绍

SNMP SNMP是广泛应用于TCP/IP网络的网络管理标准协议&#xff0c;该协议能够支持网络管理系统&#xff0c;用以监测连接到网络上的设备是否有任何引起管理上关注的情况。SNMP采用轮询机制&#xff0c;提供最基本的功能集&#xff0c;适合小型、快速、低价格的环境使用&#xf…...

使用python对图像加噪声

加上雨点噪声 import cv2 import numpy as npdef get_noise(img, value10):#生成噪声图像>>> 输入&#xff1a; img图像value 大小控制雨滴的多少 >>> 返回图像大小的模糊噪声图像noise np.random.uniform(0, 256, img.shape[0:2])# 控制噪声水平&#xff…...

以 Java NIO 的角度理解 Netty

文章目录 前言Java NIO 工作原理Selector 的创建ServerSocketChannel 的创建ServerSocketChannel 注册 Selector对事件的处理总结 前言 上篇文章《Netty 入门指南》主要涵盖了 Netty 的入门知识&#xff0c;包括 Netty 的发展历程、核心功能与组件&#xff0c;并且通过实例演示…...

Maven自定义脚手架(多module模块)+自定义参数

脚手架 视频教程&#xff1a; Maven保姆级教程 脚手架是一个项目模板&#xff0c;包含常用的工程结构、代码。 1 自定义脚手架 脚手架创建的步骤如下&#xff0c;先创建一个工程&#xff0c;把常用的代码写好&#xff0c;进入工程根目录&#xff0c;进行如下操作&#xff1a; …...

爬虫逆向实战(七)--猿人学第十六题

一、数据接口分析 主页地址&#xff1a;猿人学第十六题 1、抓包 通过抓包可以发现数据接口是api/match/16 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以看出m是加密参数 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无cook…...

Qt 杂项(Qwt、样式等)

Qt隐藏窗口边框 this->setWindowFlags(Qt::FramelessWindowHint);Qt模态框 this->setWindowModality(Qt::ApplicationModal);QLable隐藏border 代码中设置 lable->setStyleSheet("border:0px");或者UI中直接设置样式&#xff1a;“border:0px” Qwt开源…...

Python程序设计——列表

一、引言 关键点&#xff1a;一个列表可以存储任意大小的数据集合。 程序一般都需要存储大量的数值。假设&#xff0c;举个例子&#xff0c;需要读取100个数字&#xff0c;计算出它们的平均值&#xff0c;然后找出多少个数字是高于这个平均值的。程序首先读取100个数字并计算它…...

NPDP含金量高吗?难考吗?

一&#xff0c;什么是NPDP认证&#xff1f; NPDP认证中文名为产品经理国际资格认证&#xff0c;New Product Development Professional (NPDP) &#xff0c;是由美国 产品开发与管理协会 (PDMA) 所发起&#xff0c; 是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方…...

windows pip安装出现 error: Microsoft Visual C++ 14.0 is required

可参考&#xff1a;如何解决 Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools“_不吃香菜的小趴菜的博客-CSDN博客 一、安装Visual Studio2022 1、下载&#xff1a;下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 我这使…...

威胁分析风险评估(TARA)影响和攻击可行性评估参考

在威胁分析风险评估&#xff08;TARA)过程中&#xff0c;风险等级由对资产安全属性侵害造成后果的影响等级和威胁的可能性两方面综合评估。 备注&#xff1a;以上内容的评估皆是建立在由信息安全问题引起并导致的前提下。 影响等级评估 影响等级说明&#xff0c;影响从安全&a…...

【教程】H5匿名信源码下载一封来信系统安装流程搭建教程

1、下载源码 匿名信2.0&#xff1a;匿名信h5源码 - 万策云盘 提取码&#xff1a;hOC4 2、查看搭建和使用教程 1,准备授权好的域名和服务器还有源码 2&#xff0c;创建网站和数据库&#xff0c;版本选择7.1【不可以选7.2】 3&#xff0c;上传源码并解压&#xff0c;导入数据…...

PyTorch训练简单的生成对抗网络GAN

文章目录 原理代码结果参考 原理 同时训练两个网络&#xff1a;辨别器Discriminator 和 生成器Generator Generator是 造假者&#xff0c;用来生成假数据。 Discriminator 是警察&#xff0c;尽可能的分辨出来哪些是造假的&#xff0c;哪些是真实的数据。 目的&#xff1a;使…...

django实现文件上传

在django中实现文件上传有三种方法可以实现&#xff1a; 自己手动写使用Form组件使用ModelForm组件 其中使用ModelForm组件实现是最简单的。 1、自己手写 先写一个上传的页面 upload_file.html enctype"multipart/form-data 一定要加这个&#xff0c;不然只会上传文件名…...

Java地图专题课 基本API BMapGLLib 地图找房案例 MongoDB

本课程基于百度地图技术&#xff0c;由基础入门开始到应用实战&#xff0c;适合零基础入门学习。将企业项目中地图相关常见应用场景的落地实战&#xff0c;包括有地图找房、轻骑小程序、金运物流等。同时讲了基于Netty实现高性能的web服务&#xff0c;来处理高并发的问题。还讲…...

vue实现可缩放拖拽盒子(亲测可用)

特征 没有依赖 使用可拖动&#xff0c;可调整大小或两者兼备定义用于调整大小的句柄限制大小和移动到父元素或自定义选择器将元素捕捉到自定义网格将拖动限制为垂直或水平轴保持纵横比启用触控功能使用自己的样式为句柄提供自己的样式 安装和基本用法 npm install --save vue-d…...

python一次性导出项目用到的依赖

导出依赖列表 如果你用到了Anaconda&#xff0c;记得先激活环境!!!! 下载pipreqs pip install pipreqs 在项目的根目录新建一个run_pipreqs.py文件&#xff0c;复制一下代码&#xff1a; # -*- coding: utf-8 -*- import os import subprocessos.environ["PYTHONIOE…...

移动端网页中的前端视频技术探索

引言 随着移动设备的普及和网络速度的提升&#xff0c;移动端网页中的视频播放已经成为了越来越重要的功能需求。本篇博客将介绍一些在移动端网页中实现前端视频播放的技术探索&#xff0c;并提供详细的代码示例。 1. 基本视频标签 在移动端网页中实现视频播放最基本的方法就…...

题解:ABC277C - Ladder Takahashi

题解&#xff1a;ABC277C - Ladder Takahashi 题目 链接&#xff1a;Atcoder。 链接&#xff1a;洛谷。 难度 算法难度&#xff1a;普及。 思维难度&#xff1a;入门。 调码难度&#xff1a;入门。 综合评价&#xff1a;简单。 算法 深度优先搜索简单图论 思路 把每…...

7.11 Java方法重写

7.11 Java方法重写 这里首先要确定的是重写跟属性没有关系&#xff0c;重写都是方法的重写&#xff0c;与属性无关 带有关键字Static修饰的方法的重写实例 父类实例 package com.baidu.www.oop.demo05;public class B {public static void test(){System.out.println("这…...

Android Stodio编译JNI项目,Cmake出错:Detecting C compiler ABI info - failed

在使用Android Stodio编译JNI项目时出现Cmake错误&#xff0c;报错如下&#xff1a; Execution failed for task :app:configureCMakeDebug[arm64-v8a]. > [CXX1429] error when building with cmake using C:\Users\Dell\AndroidStudioProjects\MyApplication2\app\src\ma…...

6.2 Spring Boot整合MyBatis

1、基于Spring BootMyBatis的学生信息系统的设计与实现案例 基于Spring BootMyBatis实现学生信息的新增、修改、删除、查询功能&#xff0c;并实现MySQL数据库的操作。 MySQL数据库创建学生表&#xff08;t_student&#xff09;&#xff0c;有主键、姓名、年龄、性别、出生日…...

在CentOS 7上使用kubeadm部署Kubernetes集群

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 前言&#xff1a; Kubernetes是一个开源的容器编排平台&#xff0c;用于管理和自动化部署容器化的应用程序。…...

这6个免费设计素材网站,设计师都在用,马住

新手设计师不知道去哪里找素材&#xff0c;那就看看这几个设计师都在用的网站吧&#xff0c;免费、付费、商用素材都有&#xff0c;可根据需求选择&#xff0c;赶紧收藏~ 菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库&#xff0c;站内包含设…...