git命令和用法详细介绍(完整版)

git命令和用法详细介绍

下载安装:https://www.git-scm.com/downloads

在git下载页中有相应版本的详细的下载教程介绍

git 结构

  • 工作区(Working Directory)
    • 工作区是你在计算机上看到和编辑项目文件的地方。它包含了项目的所有文件和子目录。工作区是开发者进行代码编辑、编写、测试和调试的地方。
    • 工作区中的文件可以处于未跟踪、已跟踪但未修改、已修改但未暂存、已暂存等不同状态。
    • Git 可通过比较工作区中的文件和暂存区、本地仓库中的文件来检测变化,并使用 git status 命令查看这些变化。
  • 暂存区(Staging Area 或 Index)
    • 暂存区是一个临时存储区域,用于保存你当前工作区中标记为即将提交的改动。它作为工作区和本地仓库之间的缓冲区,确保你可以灵活地选择哪些改动要包含在下一次提交中。
    • 部分提交:你可以选择性地将文件或文件的部分改动添加到暂存区,从而实现精细控制提交内容。
    • 命令:使用 git add <file> 命令将改动从工作区添加到暂存区;使用 git reset <file> 命令将改动从暂存区移除。
  • 本地仓库(Local Repository)
    • 本地仓库是存储在你本地计算机上的 Git 仓库,包含了所有的提交历史和对象数据库。每个本地仓库都是一个完整的版本控制仓库,可以独立于远程仓库进行操作。
    • 本地仓库包含了项目的完整历史记录和所有版本的信息。
    • 使用 git commit -m "message" 命令将暂存区的改动提交到本地仓库,生成一个新的提交对象。
    • 使用 git log 命令查看提交历史
  • 远程仓库(Remote Repository)
    • 远程仓库是托管在服务器上的 Git 仓库,通常用于团队协作。远程仓库允许多个开发者共享代码并进行协同开发。诸如:***githubgiteegitlab***等。
    • 团队成员可以通过克隆、拉取和推送操作与远程仓库进行交互,共享代码和更新。
    • git clone <repository-url>:从远程仓库克隆一个本地副本。
    • git fetch origin:从远程仓库获取最新的更新,但不自动合并到当前分支。
    • git pull origin <branch>:从远程仓库拉取并合并最新的更新。
    • git push origin <branch>:将本地仓库的修改推送到远程仓库。

git基本知识详解

git相关书籍:

在线:https://www.git-scm.com/book/en/v2

离线:百度网盘分享

git配置:

  1. 查看git的配置信息。
git config --list --show-origin

示例:
在这里插入图片描述

  1. 在第一次安装完成后或者后续需要修改配置信息。也可找到对应系统下的配置文件中进行修改,具体内容可以查看上面的书籍,第一章:**1.6 起步 - 初次运行 Git 前的配置,**第八章:**8.1 自定义 Git - 配置 Git。**如下命令所示。
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

git 基础

仓库初始化和克隆

  • 仓库初始化,即在你的项目根目录下通过命令创建.git文件,但需要到你的项目目录下执行该命令。其中文件所包含内容可参考推荐书籍第十章,Git 内部原理 。
git init

示例:
在这里插入图片描述

  • 仓库克隆,即从远程服务器克隆项目到本地(git clone <url>
#克隆仓库,不改变目录名称
git clone https://github.com/libgit2/libgit2
#克隆仓库,但改变目录名称
git clone https://github.com/libgit2/libgit2 mylibgit

关联远程仓库

git remote 命令用于管理 Git 仓库中的远程仓库。通过这个命令,你可以添加、查看、修改和删除远程仓库的连接。

查看远程仓库

git remote

这个命令列出所有配置的远程仓库名。

git remote -v

使用 -v 选项可以显示远程仓库的详细信息(URL)。

添加远程仓库

git remote add <name> <url>
# 示例 origin为对项目的重命名,即pb替代整个URL,
#可以使用add添加,也可以使用clone命令
git remote add origin https://github.com/user/repo.git

这个命令为当前仓库添加一个新的远程仓库。

删除远程仓库

git remote remove <name>
#示例
git remote remove origin

这个命令删除指定的远程仓库。

重命名远程仓库

git remote rename <old-name> <new-name>
# 示例
git remote rename <old-name> <new-name>

这个命令重命名一个远程仓库。

修改远程仓库 URL

git remote set-url <name> <newurl>
# 示例
git remote set-url origin https://github.com/user/newrepo.git

增加一个新的推送 URL

git remote set-url --add --push <name> <newurl>
# 示例
git remote set-url --add --push origin https://github.com/user/anotherrepo.git

删除一个推送 URL

git remote set-url --delete --push <name> <url>
# 示例
git remote set-url --delete --push origin https://github.com/user/anotherrepo.git

示例:

关联远程仓库图例:
在这里插入图片描述

查看关联状态:
在这里插入图片描述
拉取仓库:
在这里插入图片描述

添加文件到暂存区:

git add 用于将文件添加到暂存区

  • 添加所有文件的改动

    git add -A
    # 或 
    git add --all
    
  • 交互模式

    • i-interactive:以交互模式运行,允许你分步选择要添加的文件。

      git add -i
      # 或
      git add --interactive
      
  • 补丁模式

    • p-patch:以补丁模式运行,允许你分步选择文件中的具体更改。

      git add -p
      # 或
      git add --patch
      
  • 更新已跟踪文件

    • u-update:只添加已跟踪文件的更改,而不包括新文件。

      git add -u
      # 或
      git add --updat
      
  • 所有改动

    • A-all:添加所有改动(包括未跟踪文件)。

      git add -A
      # 或
      git add --a
      
  • 忽略文件模式

    • -ignore-removal:不添加已删除的文件。

      git add --ignore-remove
      
  • 强制添加

    • f-force:强制添加被 .gitignore 忽略的文件。

      git add -f
      # 或
      git add --force
      
  • 详细输出

    • v-verbose:显示详细输出。

      git add -v
      # 或
      git add --verbose
      

查看文件状态

*git status* [<options>…] [--] [<pathspec>…]

-s--short:以简洁的格式显示状态信息,适合快速查看

git status -s
# 或
git status --short

查看当前分支和跟踪信息

-b--branch:显示分支和跟踪信息。

git status -b

显示被忽略的文件:

--ignored:显示被忽略的文件。

git status --ignored

忽略子模块

  • -ignore-submodules[=<when>]:忽略子模块的改动。when 可以是 noneuntrackeddirtyall
git status --ignore-submodules=none    # 默认,不忽略子模块
git status --ignore-submodules=untracked    # 忽略未跟踪的子模块
git status --ignore-submodules=dirty    # 忽略未提交的子模块
git status --ignore-submodules=all    # 忽略所有子模块改动

显示无变化的目录

--untracked-files[=<mode>]:控制未跟踪文件的显示。mode 可以是 nonormalall

git status --untracked-files=no   # 不显示未跟踪的文件
git status --untracked-files=normal   # 默认模式,显示未跟踪的文件
git status --untracked-files=all   # 显示所有未跟踪的文件,包括未跟踪的目录中的文件

示例:

添加所有文件到暂存区
在这里插入图片描述

查看文件状态

在这里插入图片描述

提交文件到本地仓库

git commit 命令用于将暂存区的更改记录到本地仓库的历史记录中。每次提交(commit)都会生成一个唯一的提交对象,并且提交的记录包含了作者、日期、提交信息等。

  • 使用编辑器编辑提交信息

    • 默认情况下,不使用 m 选项时,git commit 会启动默认的文本编辑器让你输入提交信息。

      git commit
      
  • 指定提交信息

    • m-message:直接在命令行中指定提交信息。

      git commit -m "Initial commit"
      
  • 多行提交信息

    • 使用多个 m 选项,可以为提交添加多行消息。

      git commit -m "Title" -m "Detailed description"
      
  • 添加所有改动并提交

    • a-all:自动将已跟踪的文件的改动添加到暂存区,并进行提交。

      git commit -a -m "Commit message for all changes"
      
  • 修正上一次提交

    • -amend:修正上一次提交,包括修改提交信息或添加新的更改。若有更改尚未暂存,可以先使用 git add,然后使用 -amend 将这些更改包含在上一次提交中。

      git commit --amend
      
  • 提交时签名

    • S-gpg-sign:使用 GPG 密钥对提交进行签名。

      git commit -S -m "Signed commit message"
      
  • 指定提交作者

    • -author:指定提交的作者信息(用于代他人提交)。

      git commit --author="John Doe <john.doe@example.com>" -m "Commit message"
      
  • 使用模板提交信息

    • t-template:指定一个文件作为提交信息的模板。

      git commit -t /path/to/template.txt
      
  • 空提交

    • -allow-empty:允许创建一个没有任何改动的提交。

      git commit --allow-empty -m "Empty commit"
      
  • 记录提交状态

    • v-verbose:在提交信息中包含改动的详细内容。

      git commit -v -m "Commit message with diff"
      
  • 添加注释

    • e-edit:启动编辑器让你编辑提交信息,通常用于修正提交信息。

      git commit -e
      

删除文件

  1. git rm 命令用于从工作区和暂存区中删除文件。执行 git rm 后,这些文件会在下一次提交时从 Git 仓库中删除。git rm
  • 删除单个文件
git rm file.txt
  • 递归删除目录

    • r-recursive:递归删除目录及其内容。

      git rm -r <directory>
      #示例:
      git rm -r olddir/
      
  • 强制删除

    • f-force:强制删除文件,即使它们有未提交的改动或已被其他用户修改。

      git rm -f <file>
      #示例
      git rm -f protectedfile.txt
      
  • 仅从暂存区删除

    • -cached:仅从暂存区删除文件,而不删除工作区中的文件。

      git rm --cached <file>
      #示例
      git rm --cached log.txt
      

移动文件

  1. git mv 命令用于移动或重命名文件或目录。它实际上是执行文件系统的移动操作,并且会将这些更改记录在 Git 的暂存区。
git mv <source> <destination>
  • 重命名文件
git mv oldfile.txt newfile.txt
  • 移动文件到新目录
git mv file.txt newdir/
  • 重命名和移动文件
git mv olddir/file.txt newdir/newfile.txt

推送和拉取文件

推送(push)和拉取(pull)是两个最常见的操作,用于将本地仓库与远程仓库进行同步。

推送文件到远程仓库

git push 命令用于将本地的提交推送到远程仓库,通常用于将本地分支的更改共享给其他团队成员。

基本用法

git push <remote> <branch>
#示例
git push origin main
  • <remote>:远程仓库的名称,通常是 origin
  • <branch>:要推送的本地分支的名称。

推送所有分支

推送本地所有分支到远程仓库:

git push --all <remote>
#示例
	git push --all origin

强制推送

强制推送覆盖远程仓库的内容(谨慎使用):

git push --force
#示例
git push origin main --force

推送新建分支

如果你在本地创建了一个新分支,并且希望将其推送到远程仓库:

git push -u <remote> <branch>
#示例
git push -u origin new-feature
  • u-set-upstream:将本地分支设置为跟踪远程分支。

拉取文件到本地仓库

git pull 命令用于从远程仓库拉取最新的更改并合并到当前分支,通常用于同步远程仓库中的最新更改。

基本用法

git pull <remote> <branch>
#示例
git pull origin main
  • <remote>:远程仓库的名称,通常是 origin
  • <branch>:要拉取的远程分支的名称。

拉取并进行 rebase

默认情况下,git pull 会进行合并操作。如果你希望使用 rebase 来代替合并,可以使用 --rebase 选项:

git pull --rebase <remote> <branch>
#示例
git pull --rebase origin main

拉取特定标签

如果你需要拉取远程仓库中的特定标签,可以使用:

git fetch <remote> tag <tagname>
#示例:
git fetch origin tag v1.0

高级选项和命令

  1. 推送特定提交

如果你想推送特定的提交到远程分支,可以使用以下命令:

git push <remote> <commit>:<branch>
#示例
git push origin a1b2c3d4:main

  1. 仅推送未推送的提交

推送所有本地分支中未推送的提交到远程仓库:

git push <remote>
#示例
git push origin
  1. 获取(fetch)远程分支

git fetch 命令用于从远程仓库下载对象和引用,而不进行合并。它允许你查看远程分支的状态而不改变本地分支:

git fetch <remote>
#示例
git fetch origin

常见问题和解决方案

  1. 推送被拒绝(Push Rejected)

当远程分支有新的提交,而本地分支没有这些提交时,推送可能会被拒绝。解决方法是先拉取最新的更改,然后再推送:

git pull origin main
git push origin main
  1. 合并冲突

在拉取过程中可能会遇到合并冲突。Git 会提示你哪些文件存在冲突,你需要手动解决这些冲突并提交更改:

# 拉取更改
git pull origin main

# 解决冲突后,添加解决后的文件
git add <conflicted-file>

# 提交解决后的更改
git commit -m "Resolved merge conflict"

查看操作历史

git log 命令用于查看 Git 仓库的提交历史。通过 git log,可以查看每次提交的详细信息,包括提交哈希值、作者、日期和提交消息。以下是 git log 命令的详解。

  • 限制输出条数

    • n-max-count:显示最近的 n 条提交记录。

      git log -n 5  # 显示最近 5 条提交
      
  • 单行格式输出

    • -oneline:以单行格式显示提交记录,每条提交记录只显示提交哈希和提交信息。

      git log --oneline
      
  • 图形化显示提交历史

    • -graph:以图形方式显示提交历史,便于查看分支和合并情况。

      git log --graph
      
  • 显示简洁信息

    • -pretty:以指定格式显示提交记录。常见格式有 onelineshortfullfullerformat:<string>

      git log --pretty=oneline
      git log --pretty=short
      git log --pretty=full
      git log --pretty=fuller
      git log --pretty=format:"%h - %an, %ar : %s"
      
  • 按日期范围筛选

    • -since-until:显示指定日期范围内的提交记录。

      git log --since="2022-01-01" --until="2022-12-31"
      
  • 按作者筛选

    • -author:只显示指定作者的提交记录。

      git log --author="John Doe"
      
  • 按提交消息筛选

    • -grep:只显示提交信息中包含指定关键字的提交记录。

      git log --grep="bug fix"
      
  • 显示文件改动

    • p-patch:显示每次提交的详细文件改动(差异)。

      git log -p
      
  • 显示统计信息

    • -stat:显示每次提交的文件改动统计信息。

      git log --stat
      
  • 显示补丁(diff)

    • u-unified:显示每次提交的统一格式(unified format)的差异。

      git log -u
      
  • 显示范围内的提交

    • start..end:显示两个提交之间的所有提交记录。

      git log HEAD~5..HEAD  # 显示最近 5 次提交的记录
      
  • 反转顺序

    • -reverse:按时间倒序显示提交记录。

      git log --reverse
      

文件差异比较

git diff 命令用于显示两个提交、提交与工作目录之间,或者工作目录中不同版本的文件之间的差异

  • 查看工作目录与暂存区之间的差异

    git diff
    
  • 查看暂存区与最后一次提交之间的差异

    git diff --cached
    

    或者

    git diff --staged
    
  • 查看工作目录与指定提交之间的差异

    git diff <commit>
    #示例、
    git diff HEAD
    
  • 查看两个指定提交之间的差异

    git diff <commit1> <commit2>
    
  • 查看指定文件的差异

    git diff <commit> -- <file>
    #示例
    git diff HEAD -- filename.txt
    

    或者

    git diff <commit1> <commit2> -- <file>
    
  • 查看提交的详细差异

    git diff <commit>^!  # 查看某个提交的差异
    #示例
    git diff commit1^!  # 等价于 git diff commit1^ commit1
    
  • 忽略空白字符的变化

    • w-ignore-all-space:忽略所有空白字符的变化。

      git diff -w
      
  • 显示统计信息

    • -stat:显示文件的修改统计信息。

      git diff --stat
      
  • 简洁输出

    • -name-only:只显示被修改的文件名。

      git diff --name-only
      
    • -name-status:显示被修改的文件及其状态(新增、修改、删除)。

      git diff --name-status
      
  • 显示特定行的差异

    • U-unified:显示上下文行数,默认显示 3 行上下文。

      git diff -U1  # 显示 1 行上下文
      
  • 查看自上次提交以来,所有分支的差异

    git diff @{u}
    
  • 查看工作目录中与上次提交以来的差异,包括未暂存和已暂存的文件

    git diff HEAD
    
  • 比较当前分支与另一个分支之间的差异

    git diff main..feature-branch
    

撤销操作

  1. 撤销对文件的修改

如果你在工作目录中修改了文件,但还未将修改添加到暂存区,可以使用以下命令来撤销这些修改:

git checkout -- <file>
#示例:
git checkout -- README.md

2. 撤销暂存区的修改

如果你已经将修改添加到暂存区,但尚未提交,可以使用以下命令将这些修改从暂存区移除:

git reset HEAD <file>
#示例:
git reset HEAD README.md
  1. 修改最后一次提交

如果你已经提交了更改,但需要修改提交信息或添加遗漏的更改,可以使用以下命令:

git commit --amend

此命令会打开默认文本编辑器,让你编辑提交信息。你也可以直接用 -m 选项指定新的提交信息:

git commit --amend -m "Updated commit message"

4. 回退到某个提交

如果你需要回退到某个特定的提交,可以使用 git reset 命令。git reset 有三种模式:

  • 软回退:保留工作目录中的修改,但将 HEAD 指针移动到指定提交。

    git reset --soft <commit>
    
  • 混合回退(默认):保留工作目录中的修改,但将 HEAD 和暂存区回退到指定提交。

    git reset --mixed <commit>
    
  • 硬回退:将 HEAD、暂存区和工作目录都回退到指定提交,丢弃所有后续修改。

    git reset --hard <commit>
    #示例
    git reset --hard a1b2c3d4
    

    5. 恢复某个提交的文件

如果你想恢复某个提交中的特定文件,可以使用以下命令:

git checkout <commit> -- <file>
#示例
git checkout a1b2c3d4 -- README.md

6. 撤销合并操作

如果你在合并过程中遇到了问题,并且希望撤销合并操作,可以使用以下命令:

git merge --abort

7. 使用 git revert 撤销提交

如果你希望撤销某个提交,并保留历史记录,可以使用 git revert 命令。git revert 会创建一个新的提交来撤销指定的提交。

git revert <commit>
#示例
git revert a1b2c3d

8. 丢弃未跟踪的文件

如果你想丢弃未跟踪的文件,可以使用以下命令:

git clean -f
  • f-force:强制删除未跟踪的文件。

如果你还想删除未跟踪的目录,可以使用 -d 选项:

git clean -fd

9. 交互式重置提交历史

如果你需要对多个提交进行修改或删除,可以使用交互式 rebase:

git rebase -i <commit>
#示例
git rebase -i HEAD~3
#这个命令会打开一个交互式编辑器,让你选择和修改最近的三个提交。

标签的使用

git tag 命令用于给 Git 仓库中的某个特定提交打上标签(tag),类似于给提交打上标记,以便于后续查找和管理。标签通常用于标记版本发布(如 v1.0, v2.0 等)。
轻量标签(Lightweight Tag)

轻量标签是一个简单的标签,实际上只是特定提交的引用,不包含任何附加信息。

创建轻量标签

git tag <tagname>
#示例
git tag v1.0示例:

附注标签(Annotated Tag)

附注标签是一个完整的对象,包含标签名、创建者信息、日期、标签说明等。它们被存储在 Git 数据库中,并且可以签名和验证。

创建附注标签

git tag -a <tagname> -m "tag message"
#示例
git tag -a v1.0 -m "Release version 1.0"

签名标签

签名标签是附注标签的变种,用于通过 GPG 签名进行验证。

创建签名标签

git tag -s <tagname> -m "tag message"
#示例
git tag -s v1.0 -m "Release version 1.0"

列出标签

你可以使用 git tag 命令列出所有标签:-l或-list

git tag
#示例
git tag -l "v1.*"

按模式列出标签

查看标签信息

查看附注标签的详细信息:

git show <tagname>
#示例
git show v1.0

删除标签

删除本地标签:

git tag -d <tagname>
#示例
git tag -d v1.0

删除远程标签:

git push origin --delete <tagname>
#示例
git push origin --delete v1.0

推送标签到远程仓库

默认情况下,标签不会自动推送到远程仓库。你需要手动推送标签。

推送单个标签:

git push origin <tagname>
#示例
git push origin v1.0

推送所有标签:

git push origin --tags

检出标签

检出标签会进入一个“分离的 HEAD”状态:

git checkout <tagname>
#示例
git checkout v1.0

如果你需要在标签基础上进行开发,可以创建一个新的分支:

git checkout -b <new-branch-name> <tagname>
#示例
git checkout -b new-feature v1.0

git 分支

1. git分支

允许在同一项目中同时进行多个独立的开发工作。分支使你能够在不影响主代码库的情况下进行试验、开发新功能、修复 bug 等操作。Git 的分支,其实本质上仅仅是指向提交对象的可变指针。

  1. git 分支创建合并与切换

创建

使用 git branch 命令可以创建一个新的分支。

git branch <branch-name>
#示例
git branch feature-xyz

2. 切换分支

使用 git checkout 命令可以切换到已存在的分支。

git checkout <branch-name>
#示例
git checkout feature-xyz

在新版本的 Git 中,可以使用 git switch 命令切换分支,这个命令专门用于分支切换:

git switch <branch-name>

3. 创建并切换分支

可以使用 -b 选项同时创建并切换到一个新分支。

git checkout -b <branch-name>
#示例
git checkout -b feature-xyz

使用 git switch 命令的对应做法:

git switch -c <branch-name>

4. 查看分支

列出所有本地分支:

git branch

列出所有远程分支:

git branch -r

列出所有本地和远程分支:

git branch -a

5. 合并分支

将其他分支的更改合并到当前分支:

git merge <branch-name>
#示例
git checkout main
git merge feature-xyz

6. 解决合并冲突

在合并过程中可能会遇到冲突,需要手动解决冲突并提交解决后的更改:

sh复制代码
# 查看冲突文件
git status

# 编辑冲突文件并解决冲突

# 添加解决后的文件
git add <conflicted-file>

# 提交解决后的更改
git commit -m "Resolved merge conflict"

7. 删除分支

删除本地分支:

git branch -d <branch-name>
#示例
git branch -d feature-xyz

如果分支未合并,可以使用 -D 强制删除:

git branch -D <branch-name>
#示例
git branch -D feature-xyz

删除远程分支:

git push <remote> --delete <branch-name>
#示例
git push origin --delete feature-xyz

8. 分支重命名

重命名当前分支:

git branch -m <new-branch-name>

重命名指定分支:

git branch -m <old-branch-name> <new-branch-name>
#示例
git branch -m feature-xyz feature-abc

9. 跟踪远程分支

一个本地分支与一个远程分支之间的关联关系。这种关系允许你方便地同步本地和远程仓库之间的更改。跟踪分支使得从远程仓库拉取更新和推送更改变得更加简单和直观。

创建一个新分支并设置为跟踪远程分支:

git checkout -b <branch-name> <remote>/<branch-name>
#示例
git checkout -b feature-xyz origin/feature-xyz

设置现有的本地分支跟踪远程分支:

git branch --set-upstream-to=<remote>/<branch-name>
#示例
git branch --set-upstream-to=origin/feature-xyz

10. 分支的基本工作流示例

  1. 创建和切换到新分支

    git checkout -b feature-xyz
    
  2. 在新分支上进行开发

    • 编辑文件并进行提交

      git add .
      git commit -m "Developing feature xyz"
      
  3. 切换回主分支并合并新分支

    git checkout main
    git merge feature-xyz
    
  4. 删除已合并的分支

    git branch -d feature-xyz
    

远程和本地仓库操作

github或gitee项目拉取到本地创建的项目中,即本地创建了项目,远程仓库也创建了的处理方法,如下两个图所示
在这里插入图片描述

在这里插入图片描述

1、初始化关联远程仓库在这里插入图片描述
2、查看关联状态
在这里插入图片描述

  1. 查看文件状态
    在这里插入图片描述

  2. 拉取远程仓库的内容并合并到当前分支。
    在这里插入图片描述

  3. 添加文件到暂存区
    在这里插入图片描述

  4. 提交文件到本地仓库

在这里插入图片描述

  1. 推送本地仓库中记录的文件到远程仓库

在这里插入图片描述

  1. 查看操作记录
    在这里插入图片描述

可能遇到的问题:

  1. 文件推送到远程一直推送不成功
  • 文件未被添加到暂存区。
  • .gitignore 文件中忽略了 src 文件夹。
  • 提交时遗漏了 src 文件夹。
  • 远程仓库更新有误。
  1. fatal: not a valid object name: 'master' 错误。

说明你的远程仓库可能没有名为 master 的分支。使用 git pull 命令拉取远程仓库的内容并合并到当前分支。如果主分支是 main,则使用以下命令:

git pull origin main --allow-unrelated-histories

如果确认远程分支是 master,则相应使用:

git pull origin master --allow-unrelated-histories

附:

.gitignore文件相关知识

.gitignore 文件用于指定哪些文件或目录应该被 Git 忽略,即不添加到版本控制系统中。这个文件的编写和语法遵循特定的规则和约定。

.gitignore 文件的主要内容

通常 .gitignore 文件包含以下类型的文件和目录:

  1. 操作系统生成的文件:如 macOS 的 .DS_Store、Windows 的 Thumbs.db 等。
  2. 开发工具生成的文件:如 IDE 的配置文件、日志文件等。
  3. 编译生成的文件:如 node_modulesdist 目录、编译后的二进制文件等。
  4. 敏感信息:如包含密码或密钥的配置文件。
  5. 临时文件:如临时编辑器文件、交换文件等。

.gitignore 文件的语法

以下是 .gitignore 文件的基本语法和规则:

  1. 空行和以 # 开头的行会被 Git 忽略:

    # 这是一个注释
    
  2. 匹配文件和目录:

    • 直接匹配文件名或路径:

      debug.log
      
    • 匹配目录时,加 / 结尾:

      logs/
      
  3. 通配符 `` 表示零个或多个字符:

    *.log       # 忽略所有以 .log 结尾的文件
    build/      # 忽略 build 目录及其所有内
    
  4. ? 匹配单个字符:

    config?.json  # 忽略 config1.json, configA.json 等
    
  5. [abc] 匹配方括号内的任一字符:

    log[0-9].txt  # 忽略 log0.txt 到 log9.txt
    
  6. 以斜杠 / 开头表示相对于仓库根目录:

    /build       # 忽略仓库根目录下的 build 目录
    
  7. ! 开头表示取反,即不要忽略:

    
    !important.log
    
  8. 双星号 * 匹配任意目录层级:

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

如发现问题欢迎讨论提供建议~

  • 14
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

featureA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值