git使用说明
目录
[TOC]
很多地方描述不准确,甚至有错误
1.初始化(git init
)
初始化当前目录
git init
初始化指定目录
git init /path/to/directory
常见的后续操作
添加文件到暂存区:
git add .
提交文件:
git commit -m "init"
连接到远程仓库:
git remote add origin <remote_repository_url>
推送到远程仓库:
git push --set-upstream origin main
简写为
git push -u origin main
--set-upstream
或-u
选项用于将本地分支main
与远程分支origin/main
关联起来。这样,当你以后使用git push
或git pull
时,Git 会知道你是要推送到哪个远程分支或者从哪个远程分支拉取更改。
这个命令通常在你创建一个新的本地分支并且第一次将其推送到远程仓库时使用,后续直接git push
即可
2.查看状态git status
1.显示当前分支:
git status 会显示你当前所在的分支名称。
2.显示与远程分支的差异:
如果当前分支与远程分支不同步,git status 会显示差异情况,比如本地分支领先于远程分支或落后于远程分支。
3.列出已暂存的文件:
显示所有已使用 git add 命令添加到暂存区的文件,这些文件准备好进行提交。
4.列出工作区的修改:
显示所有已修改但尚未暂存的文件。这些文件已经在工作区中被修改,但尚未添加到暂存区。
5.列出未跟踪的文件:
显示所有在工作区中存在但未被 Git 跟踪的文件,这些文件还没有被添加到版本控制中。
6.提供操作建议:
根据当前的状态,git status 提供有关如何处理这些文件的建议,比如如何暂存文件、如何恢复未暂存的更改等。
3.提交(git commit
)
提交更改:
git commit -m "Commit title"
也可以加一个更详细的描述
git commit -m "Commit title" -m `Description`
提交更改并打开编辑器输入提交信息:
git commit
如果你不使用 -m 选项,Git 会打开默认的文本编辑器,让你输入提交消息。在编辑器中输入完成后保存并关闭编辑器,提交就会完成。
提交所有已更改的文件:
git commit -a -m "Commit message"
-a 选项会自动将所有已跟踪的文件添加到暂存区,并提交它们。注意,-a 不会包括新创建的未跟踪文件;你仍然需要先用 git add 将新文件添加到暂存区。
修改最近一次提交:
修改提交信息:
如果你需要修改最后一次提交的提交消息,可以使用 --amend 选项。
git commit --amend -m "Updated commit message"
这个命令将打开一个编辑器,允许你修改提交消息。如果你使用 -m 选项指定新消息,它会直接更新提交信息而不打开编辑器。
添加遗漏的文件:
如果你在最后一次提交后发现遗漏了一些文件,可以将这些文件添加到暂存区,然后使用 --amend
将它们包括到最后一次提交中。
git add forgotten_file.txt
git commit --amend
这个命令会打开一个编辑器,让你修改提交信息(或保留原来的信息),并将 forgotten_file.txt 文件包含到最后一次提交中。
注意
使用 --amend 会重写最后一次提交的历史,创建一个新的提交对象,原来的提交会被替换。这意味着原来的提交会从历史记录中消失,新的提交会取代它。
如果最后一次提交已经推送到远程仓库,使用 --amend 后,需要--force
强制推送
修改上次提交的邮箱
git commit --amend --author="Your Name <[email protected]>"
修改某次提交的邮箱:
git rebase -i XXXXXXXXXX
将要修改的commit前的 pick 改为 edit
退出编辑器
git commit --amend --author="name <[email protected]>"
git rebase --continue
git push --force
4.查看提交历史(git log
)
按时间逆序列出所有当前分支的提交历史(最近的提交在最上面)
查看所有提交
git log
查看简洁格式的提交
git log --oneline
查看带图形和分支信息的提交
git log --graph --decorate
不如Git Blame
插件
查看指定时间范围的提交
git log --since="1970-01-01" --until="2024-01-31"
查看特定作者的提交
git log --author="Alice"
查看每个提交的差异
git log -p
5.比较差异(git diff
)
可以用来查看工作区和暂存区之间、暂存区和最后一次提交之间的差异,或者两个不同提交之间的差异。
查看工作区和暂存区之间的差异
git diff
这会显示工作区中修改的文件内容和暂存区之间的差异。即,显示哪些更改在工作区中存在,但还没有被暂存。
查看暂存区和最新提交之间的差异
git diff --cached
这会显示已暂存的文件内容与最后一次提交之间的差异。也可以使用 --staged 选项,这两个选项是等效的。
查看工作区、暂存区和最新提交之间的差异
git diff HEAD
这会显示工作区和暂存区之间的差异,以及与最后一次提交的差异。
查看两个提交之间的差异
git diff <commit1> <commit2>
查看文件或目录的差异
git diff <file>
查看某个分支与当前分支的差异
git diff <branch>
6.推送(git push
)
首次推送
将本地分支 main
与远程分支 origin/main
关联起来
git push -u origin main
后续推送
git push
推送指定分支到远程仓库:
git push origin branch_name
origin 是远程仓库的默认名称(你可以使用其他远程仓库的名称)。
branch_name 是你想要推送的本地分支的名称。
例如,推送本地 main 分支到远程 origin 仓库的 main 分支:
git push origin main
推送所有本地分支:
git push --all
推送标签:
git push origin tag_name
tag_name 是你想要推送的标签的名称。你可以推送特定的标签,也可以使用 --tags 选项推送所有标签:
git push --tags
强制推送:
git push --force
推送并设置上游分支:
git push --set-upstream origin branch_name
如果你创建了一个新的本地分支并希望将其推送到远程仓库,并且设置该分支的跟踪关系,可以使用这个命令。
7.克隆(git clone
)
克隆远程仓库
git clone https://github.com/example/repo.git
克隆指定分支
git clone -b dev https://github.com/example/repo.git
克隆最近的 10 个提交克隆远程仓库
只下载最近的 10 个提交。这种方式可以加快克隆速度并节省存储空间,特别是在处理大型仓库时特别有用。
但是不能访问比指定深度更早的提交记录。
git clone --depth 10 https://github.com/example/repo.git
克隆仓库到指定目录
git clone https://github.com/example/repo.git my-directory
克隆仓库并初始化子模块
git clone --recurse-submodules https://github.com/example/repo.git
submodule这里就不介绍了,感觉不常用
8.标签(git tag
)
列出所有标签
git tag
创建标签
创建轻量标签
git tag tag_name
轻量标签 是一个简单的标签,仅仅是一个指向特定提交的指针,不包含任何额外的信息。
e.g.
git tag v1.0
创建附注标签
git tag -a tag_name -m "Tag message"
附注标签 是一个包含作者信息、日期和注释的标签。它们会被保存为 Git 对象,能提供更多的信息。
e.g.
git tag -a v1.0 -m "Release version 1.0"
查看标签信息
git show tag_name
显示标签的详细信息,包括标签的消息、创建时间和标签指向的提交。
删除标签
删除本地标签:
git tag -d tag_name
删除远程标签:
git push origin --delete tag_name
推送标签到远程仓库
推送特定标签:
git push origin tag_name
推送所有标签:
git push --tags
9.分支(git branch
, git checkout
, git switch
)
创建分支
创建并切换到新分支:
git checkout -b new_branch_name
git switch -b new_branch_name
checkout
可以换成switch
,创建的分支基于当前所在的分支
仅创建新分支,不切换:
git branch new_branch_name
查看分支
查看本地分支:
git branch
当前分支前面会有一个*
查看远程分支:
git branch -r
查看所有分支(包括本地和远程):
git branch -a
切换分支
切换到已存在的本地分支:
git checkout branch_name
git switch branch_name
从远程分支创建一个新的本地分支,并立即切换到这个新的本地分支(踪远程分支):
git checkout -t local_branch_name remotes/origin/release/xxx
git switch -t local_branch_name remotes/origin/release/xxx
从远程分支创建一个新的本地分支,并立即切换到这个新的本地分支(不跟踪远程分支):
git checkout -b local_branch_name remotes/origin/release/xxx
git switch -b local_branch_name remotes/origin/release/xxx
-b
代表--branch
,创建的分支基于你指定的远程分支
发布分支
git push origin new_branch_name
重命名分支
git branch -m old_branch new_branch
将本地的old_branch重命名为new_branch
删除分支
删除本地分支:
git branch -d branch_name
强制删除未合并的分支:
git branch -D branch_name
删除远程分支:
git push origin --delete branch_name
10.重置(git reset
)
git reset
是一个用于在 Git 中重置当前分支的命令,它可以改变当前分支的 HEAD 指针,恢复工作区和暂存区的状态。git reset 可以用来撤销提交、取消暂存的更改或完全重置工作区的状态。
基本用法
1.git reset --soft HEAD~1
- 功能:将 HEAD 指针回退到上一个提交,但保留工作区和暂存区的更改。可以用来撤销最后一次提交但保留更改在暂存区中,以便可以重新提交或进行其他修改。
示例:
git reset --soft HEAD~1
这个命令会将 HEAD 指针回退到上一个提交,但不会修改工作区或暂存区的内容。
> 其中`HEAD~1`完全等效于`HEAD^`,表示当前提交向上追溯一次提交。
HEAD~3
完全等效于HEAD^^^
,表示当前提交向上追溯三次提交。
2.git reset --mixed HEAD~1
- 功能:将 HEAD 指针回退到上一个提交,并将暂存区重置为该提交的状态,但工作区的更改保留。这意味着你取消了对文件的暂存,但保留了工作区中的更改。
示例:
git reset --mixed HEAD~1
这个命令会将 HEAD 指针回退到上一个提交,撤销对暂存区的更改,但保留工作区中的更改。
另一个例子
比如有两个commit记录
一个是第一次提交a
一个是第二次提交bgit reset --soft a
+git restore --staged .
==git reset --mixed a
效果都是:
将分支恢复到a提交以后的状态,然后将b提交的更改都被恢复到工作目录中,可以看到这些更改
3.git reset --hard HEAD~1
- 功能:将 HEAD 指针回退到上一个提交,并重置暂存区和工作区为该提交的状态。所有未提交的更改会被丢弃。
示例:
git reset --hard HEAD~1
这个命令会将 HEAD 指针回退到上一个提交,同时丢弃所有未提交的更改。
4.重置到特定提交
- 功能:可以将 HEAD 指针重置到指定的提交,无论是
--soft
、--mixed
还是--hard
。 示例:
git reset --hard <commit_hash>
其中
<commit_hash>
是你要重置到的提交的哈希值。
5.取消暂存
- 功能:将文件从暂存区中移除,但保留工作区中的更改。相当于将文件的状态从已暂存改回未暂存。
示例:
git reset <file>
这个命令会将
<file>
从暂存区中移除,但工作区中的更改仍然保留。
6.强制重置本地分支到远程分支的最新版本:
git reset --hard origin/main
7.关于soft
和hard
--soft
:仅移动 HEAD 指针,保留工作区和暂存区的更改。适用于需要撤销提交,但保留更改的情况。--hard
:移动 HEAD 指针,并丢弃所有未提交的更改,包括暂存区和工作区的更改。适用于需要完全丢弃更改的情况。
8.reset
修改完成以后push
要git push --force
11.变基(git rebase
)
将一系列提交从一个基准点移动到另一个基准点。它可以用来将一个分支的更改应用到另一个分支的最新提交之后。
将分支的更改应用到另一个分支上
git checkout feature_branch
git rebase main
这个命令会将 feature_branch 上的更改应用到 main 分支上。它的效果是将 feature_branch 上的所有提交从 main 分支的最新提交之后开始应用
交互式 rebase(git rebase -i)
git rebase -i HEAD~3
这个命令会启动一个交互式 rebase 编辑器,允许你编辑、重新排序、合并或删除过去的提交。HEAD~3 表示你想要编辑过去的 3 次提交。
主要选项
--interactive
或-i
- 功能:启动交互式 rebase 编辑器,允许你手动调整提交。
示例:
git rebase -i HEAD~3
--onto
- 功能:将一个分支上的更改应用到另一个分支的某个提交上。
示例:
git rebase --onto new_base old_base feature_branch
这个命令会将
feature_branch
上自old_base
以来的更改应用到new_base
上。
--abort
- 功能:在 rebase 过程中遇到问题时,取消 rebase 并恢复到原来的状态。
示例:
git rebase --abort
--continue
- 功能:在解决了 rebase 冲突后,继续执行 rebase 操作。
示例:
git rebase --continue
--skip
- 功能:跳过当前冲突的提交,继续 rebase 操作。
示例:
git rebase --skip #### 示例 假设你有如下的提交历史:
A -- B -- C (main)
\ D -- E (feature_branch)
你想将 `feature_branch` 的更改应用到 `main` 分支上:
git checkout feature_branch
git rebase main这将会把 `feature_branch` 上的提交 D 和 E 重新应用到 `main` 的最新提交 C 之后,变成如下历史:
A -- B -- C -- D' -- E' (feature_branch)
--- ### 12.恢复(`git restore`) #### 恢复工作区的文件 如果你对文件进行了更改但想要撤销这些更改,可以使用 git restore 来恢复文件到最近一次提交的状态。 **示例**:恢复单个文件到最近一次提交的状态。
git restore
可以指定多个文件,也可以使用`.`指定当前目录下的所有文件 #### 恢复暂存区的文件 如果你将文件添加到暂存区(使用 git add),但希望将其移出暂存区,可以使用 git restore 来撤销暂存区的更改。 **示例**:将文件从暂存区中移除,恢复为工作区状态。
git restore --staged
#### 从特定提交中恢复文件 如果你需要从历史提交中恢复文件到工作区,可以使用 git restore 来指定特定的提交。 **示例**:从某个提交中恢复文件。
git restore --source
**示例**:从某个提交恢复整个目录中的文件。
git restore --source
--worktree #### 从历史提交中恢复文件:
git restore --source HEAD~1 file.txt
这个命令会将 file.txt 从上一个提交中恢复到当前工作区。 --- ### 13.获取信息`git fetch` 从远程仓库获取最新的提交和分支信息,而不对当前工作区做出任何修改。
git fetch
#### 从所有远程仓库获取更新
git fetch --all
#### 获取指定远程仓库的更新
git fetch origin
#### 获取指定远程分支的更新
git fetch origin main
从 origin 远程仓库获取 main 分支的最新信息 --- ### 14.拉取`git pull` #### 从远程仓库拉取并合并最新提交:
git pull
这个命令从默认的远程仓库(通常是 origin)拉取当前分支的最新提交并合并到本地。 #### 从指定的远程仓库和分支拉取并合并:
git pull origin main
这个命令从 origin 远程仓库的 main 分支拉取最新提交并合并到当前分支。 #### 将远程分支的最新提交应用到本地提交之前
git pull --rebase
> 还可以使用更详细的交互模式 > > ```bash > git pull --rebase=interactive > ``` --- ### 15.合并`git merge` 用于将两个分支的更改合并到一起。它可以将一个分支的提交历史与当前分支的提交历史结合起来,创建一个新的合并提交,从而整合两个分支的更改。
git merge
#### 处理冲突 在合并过程中,如果有文件冲突,Git 会将冲突标记在文件中,并要求你手动解决这些冲突。解决冲突后,使用以下命令完成合并:
解决冲突并暂存:
git add <file>
完成合并:
git commit
16.管理配置
git config
查看所有配置:
git config --list
查看用户名:
git config user.name
查看邮箱
git config user.email
设置用户名和邮箱:
git config user.name "Your Name" git config user.email "[email protected]"
删除用户名和邮箱:
git config --unset user.name git config --unset user.email
设置全局用户名和邮箱:
git config --global user.name "Your Name" git config --global user.email "[email protected]"
设置默认编辑器:
git config --global core.editor "vim"
设置合并工具:
git config --global merge.tool meld
设置全局换行符自动转换为 CRLF:
git config --global core.autocrlf true
在 Windows 上,Git 会将 LF 转换为 CRLF,当你将文件检出到工作目录时;而在提交文件时,将 CRLF 转换回 LF。
设置全局只在提交时转换换行符:
git config --global core.autocrlf input
在 UNIX 或类 UNIX 系统上,Git 仅在提交时将 CRLF 转换为 LF,不会在检出时做任何转换。
17.选择某次提交(
git cherry-pick
)用于将一个或多个特定提交从一个分支应用到当前分支。这对于将特定的更改从一个分支合并到另一个分支而不需要合并整个分支时特别有用。
git cherry-pick <commit>
:要从中选择提交的哈希值或引用。可以是一个完整的提交哈希、短哈希,或者是任何可以唯一标识提交的引用。 选择单个提交:
git cherry-pick abc1234
这个命令将提交 abc1234 应用到当前分支。
选择多个提交:
git cherry-pick abc1234 def5678
这个命令将 abc1234 和 def5678 两个提交应用到当前分支。
选择一系列提交:
git cherry-pick abc1234..def5678
这个命令将 abc1234 到 def5678 的所有提交(不包括 abc1234)应用到当前分支。
注意
在使用 git cherry-pick 时,可能会遇到冲突
1.编辑冲突的文件以解决冲突。
2.标记冲突为已解决:
git add <file>
3.继续 cherry-pick 操作:
git cherry-pick --continue
4.中止 cherry-pick 操作:
git cherry-pick --abort
提示(
cherry-pick
也支持远程仓库的commit应用到当前仓库)举例:
比如有俩仓库,repo1和repo2,我希望将repo1中的特定几条commit应用到repo2上
1.首先,将repo2克隆到本地
git clone <repo2_url>
2 进入repo2目录并添加repo1为远程仓库
cd <repo2_path> git remote add repo1 <repo1_path>
此时可是使用
git remote -v
查看有没有添加成功3 拉取repo1的代码
git fetch repo1
4 查看repo1中的所有commit信息
git log repo1/master
其中
master
是分支的名称,一般也可能是main
找到需要应用到repo2的commit的所有SHA-1值,比如
bcb78abf0eb8674232dd77a2c480ff3165usaf18
等等
最好按照时间顺序由远及近记录然后
q
退出5 使用git cherry-pick命令将指定的commit记录应用到repo2上
git cherry-pick <SHA-1 value>
P.S. 也可以使用
--no-commit
参数,这样就不会自动提交,而是会将修改放到暂存区,然后手动提交,达到合并多条commit的效果git cherry-pick --no-commit <SHA-1 value>
6 最后,将修改推送到repo2
git push origin master
请注意,如果repo1和repo2中存在相同的文件或代码,则可能会发生冲突。在这种情况下,你需要手动解决冲突并提交更改。
18.打包仓库(
git bundle
)将 Git 仓库的所有数据(包括提交、分支、标签等)打包成一个文件,这个文件可以被传输或备份。git bundle 通常用于将 Git 数据从一个仓库转移到另一个仓库,尤其是在没有直接网络连接的情况下。
创建 Bundle 文件
要创建一个 Git bundle 文件,需要先git clone,然后再使用
git bundle create
命令。这个文件包含指定范围的提交记录,可以被用来克隆或合并到其他仓库。git bundle create <bundle-file> <refspec> [<refspec>...]
<bundle-file>
:指定生成的 bundle 文件名。<refspec>
:指定要打包的引用(分支、标签或提交)。例如master
或refs/heads/master
。示例:
git bundle create myrepo.bundle master
这个命令会将
master
分支的所有历史记录打包成myrepo.bundle
文件。git bundle create my_project.bundle --all
创建一个包含所有内容的打包文件
2. 查看 Bundle 文件的内容
要查看 bundle 文件中的内容,可以使用
git bundle verify
命令。这将显示 bundle 文件中包含的所有引用和提交信息。git bundle verify <bundle-file>
示例:
git bundle verify myrepo.bundle
3. 克隆 Bundle 文件
要从 bundle 文件中克隆一个新的 Git 仓库,可以使用
git clone
命令,并指定 bundle 文件作为源。git clone <bundle-file> <directory>
<bundle-file>
:要克隆的 bundle 文件。<directory>
:目标目录。示例:
git clone myrepo.bundle new-repo
这个命令将从
myrepo.bundle
文件中克隆一个新的 Git 仓库到new-repo
目录。4. 将 Bundle 文件中的更改合并到当前仓库
如果你已经有一个现有的仓库,并且想要将 bundle 文件中的提交合并到你的仓库中,可以使用
git fetch
命令。git fetch <bundle-file> <refspec>
示例:
git fetch myrepo.bundle master
这个命令会从
myrepo.bundle
文件中提取master
分支的提交,并将它们合并到你的当前仓库中。19.撤销更改(
git revert
)用于撤销已经提交的更改而不会改变历史记录的命令。
与
git reset
不同,git revert
创建一个新的提交来撤销指定的提交,从而保持历史记录的完整性。这种方法通常用于公共仓库中,因为它不会修改提交历史。1. 撤销单个提交
要撤销一个提交,你可以使用
git revert
命令,后跟要撤销的提交的 SHA-1 值(或其他引用,如分支名)。git revert <commit>
<commit>
:要撤销的提交的 SHA-1 值或引用。示例:
git revert a1b2c3d4
这个命令会创建一个新的提交来撤销
a1b2c3d4
这个提交的更改。2. 撤销多个提交
要撤销一系列提交,可以通过指定一系列的提交引用来完成。可以使用
..
范围表示多个提交。git revert <old-commit>..<new-commit>
<old-commit>
和<new-commit>
:要撤销的提交范围(从<old-commit>
到<new-commit>
)。示例:
git revert HEAD~3..HEAD
这个命令会撤销从当前提交的前三个提交到当前提交之间的所有更改。
3. 撤销提交并解决冲突
如果要撤销的提交引入了冲突,你需要手动解决冲突。
git revert
会将变更应用到暂存区,你可以编辑文件以解决冲突,然后使用git add
和git commit
提交更改。示例:
git revert <commit> # 如果有冲突,需要解决冲突 git add <resolved-files> git commit -m "Resolved conflicts while reverting commit <commit>"
4. 撤销最近的提交
如果你只想撤销最近的一个提交,可以使用
HEAD
指向最新提交。git revert HEAD
20.暂存更改(
git stash
)用于暂时保存当前工作目录和暂存区的更改,以便在稍后恢复这些更改。
这在你需要切换到其他分支处理紧急任务,但又不想提交当前工作时非常方便。使用
git stash
可以避免在切换分支前进行临时提交或丢失未保存的更改。常用操作
1. 存储当前更改
要将当前工作目录和暂存区的更改保存到 stash 中,你可以使用
git stash
命令。git stash
这会将当前更改保存到 stash 中,并将工作目录恢复到干净状态。
2. 存储并附带说明
你可以在存储时附加说明,以便后续识别和管理。
git stash save "your message here"
3. 查看存储的更改
要查看当前所有 stash 项目,你可以使用
git stash list
命令。git stash list
这个命令会列出所有存储的 stash 项目,格式通常是
stash@{n}
,其中n
是索引号。4. 查看 stash 的内容
要查看特定 stash 项目的内容,可以使用
git stash show
命令。git stash show stash@{n}
stash@{n}
:指定要查看的 stash 项目的索引号。要查看更详细的内容,包括修改的具体行,可以使用
-p
参数。git stash show -p stash@{n}
5. 应用存储的更改
要将存储的更改应用到当前分支上,可以使用
git stash apply
命令。git stash apply stash@{n}
如果不指定
stash@{n}
,则默认应用最新的 stash 项目。示例:
git stash apply
6. 删除存储的更改
当你应用或不再需要某个 stash 项目时,可以使用
git stash drop
命令删除它。git stash drop stash@{n}
如果不指定
stash@{n}
,则默认删除最新的 stash 项目。示例:
git stash drop
7. 清空所有存储的更改
要删除所有 stash 项目,可以使用
git stash clear
命令。git stash clear
8. 存储更改包括未跟踪文件
如果你希望同时存储未跟踪文件(即新创建但未添加到暂存区的文件),可以使用
-u
参数。git stash -u
应用场景
- 切换分支时保存工作进度:你正在某个分支上工作,突然需要切换到其他分支处理紧急问题。你可以使用
git stash
保存当前更改,然后切换分支。 - 临时保存更改以测试修复:你对代码做了修改,但希望尝试一种修复方案。在不提交当前更改的情况下,你可以使用
git stash
暂时保存更改,测试修复后再恢复这些更改。 整理工作目录:在处理复杂的任务时,如果你不想立即提交当前更改,可以使用
git stash
来暂时清理工作目录,以便更好地进行其他操作。21.远程仓库(
git remote
)添加远程仓库
git remote add origin https://github.com/user/repository.git
重命名远程仓库
git remote rename <旧名称> <新名称>
删除远程仓库
git remote remove <远程名称>
查看远程仓库列表
git remote
查看远程仓库列表详细信息
git remote -v
查看某个远程仓库详细信息
git remote show <远程名称>
22.移除文件,停止跟踪(
git rm
)告诉 Git 停止跟踪某个文件,将文件从工作区和 Git 索引(暂存区)中删除
从 Git 版本库中删除文件并同时删除该文件在本地的副本
git rm <文件路径>
执行这个命令后,Git 会在下一次提交中删除该文件,并且本地的文件也会被移除。
只从 Git 索引中移除(保留本地文件)
git rm --cached <文件路径>
将某些文件从 Git 版本控制中排除
强制删除文件(即便该文件有未提交的修改)
git rm -f <文件路径>
递归删除目录
将目录及其下的所有文件从 Git 和本地文件系统中移除
#### git rm总结:
- --cached:只从索引(暂存区)中删除文件,保留工作区中的文件。
- -r:递归删除目录及其内容。
- -f:强制删除已被修改但未提交的文件。Git 默认会拒绝删除那些有修改但尚未提交的文件,这时你可以使用 -f 来强制删除。