📜  Git – git-prune

📅  最后修改于: 2022-05-13 01:58:11.080000             🧑  作者: Mango

Git – git-prune

Git prune 是一个命令,用于删除当前分支中无法访问的所有文件。当您的工作目录中有很多不想保留的文件时,prune 命令很有用。 git prune 的主要用途是在您完成项目工作后清理您的工作目录。 git prune 的实际作用是,假设您有一个无法从当前分支访问的对象或提交。然后 git prune 将删除该对象或提交。基本思想是 git prune 是一种清理工作目录的方法,使项目工作更轻松、更轻松。

命令:

git fetch –prune 命令是一种删除远程存储库中无法访问的所有对象的方法。如果您只想修剪远程存储库而不是获取它,您可以使用:

这将导致远程存储库被修剪。如果要配置 git 在获取远程存储库时对其进行修剪,可以使用:

让我们更详细地了解 git prune 命令。

考虑这种情况,假设您有一个正在处理的项目。您的工作目录中有一堆文件,并且从当前分支无法访问提交。然后,您要删除当前分支无法访问的所有对象或提交。

1.创建一个新的存储库并初始化它

上述命令序列将:

  • 创建一个名为 git-prune-demo-geeks 的新存储库
  • 将当前目录更改为 git-prune-demo-geeks
  • 初始化存储库
  • 创建一个内容为“Hello World”的文件 hello.txt
  • 将文件 hello.txt 添加到暂存区
  • 使用“first commit”消息提交文件 hello.txt

输出:

输出

创建存储库

2.修改文件hello.txt,新建commit

输出:

输出

添加提交

这会将“Hello from the other side”这一行添加到文件 hello.txt 中,并使用“second commit”消息提交它。要验证上述命令序列,我们可以使用以下命令:

输出:

输出

git 日志输出

在这里,git log 将显示存储库的提交历史。

3. 使提交无法从当前分支到达

输出:

输出

git 重置

这里, HEAD~1 是当前分支无法访问的提交。现在,如果我们再次尝试查看 git log 输出,我们将看到该提交不再可从当前分支访问,它将仅显示可从当前分支访问的提交。

输出:

输出

混帐日志

这个存储库现在有一个提交,它是一个分离的提交。因此,如果您尝试签出提交,它不会签出提交,而是会创建一个分离的分支。第二次提交是一个分离的提交,不再显示在 git log 输出中。

输出:

输出

HEAD~1 是与当前分支分离的提交。

4. 运行 git prune

签出分离的提交后,我们必须通过 git checkout 命令返回到 master,然后运行 git prune 命令。我们必须将某些选项传递给 git prune 命令,以便命令的输出显示要修剪的内容。

输出:

输出

git 修剪

在这里,空输出意味着没有任何东西被修剪。因为在存储库的某个地方,git 保留了与当前分支分离的提交引用。所以 git prune 不会删除提交。为了结束我们的场景,我们必须首先清除reflog

这将强制使 reflog 过期。删除 reflog 后,我们可以再次运行 git prune 命令。

输出:

输出

修剪不可达的提交

这将导致显示无法从当前分支访问的提交和树对象的 git SHA 对象引用。