标签: git-index

为什么Git需要设计Index/Stage?

下图是Git流程图,我很奇怪为什么Git需要设计Index /Stage

您知道RepositoryWorkspace之间的通信是本地的,因此RepositoryWorkspace之间的提交或回滚很容易。

为什么Git需要设计Index/Stage?

图像

在此输入图像描述

git version-control git-index

4
推荐指数
1
解决办法
766
查看次数

如何使用 git fsck 从“resolve-undo 中无效的 sha1 指针”中恢复?

git gc在存储库中运行并收到致命错误:

Enumerating objects: 2382, done.
Counting objects: 100% (2382/2382), done.
Delta compression using up to 8 threads
Compressing objects: 100% (747/747), done.
fatal: unable to read <object-id>
fatal: failed to run repack
Run Code Online (Sandbox Code Playgroud)

运行git fsck --full --no-dangling提供了有关该对象问题的更多详细信息:

Checking object directories: 100% (256/256), done.
Checking objects: 100% (2381/2381), done.
error: <object-id>: invalid sha1 pointer in resolve-undo
Verifying commits in commit graph: 100% (287/287), done.
Run Code Online (Sandbox Code Playgroud)

我相信这是由已修复的错误引起的

索引中的解析-撤消信息不受 GC 保护,这一问题已在 Git 2.38(2022 年第 3 季度)中得到纠正。

如果我的存储库已经处于这种状态,我该如何修复它?

git git-index git-fsck

4
推荐指数
1
解决办法
407
查看次数

3
推荐指数
1
解决办法
62
查看次数

我运行了 git update-index --assume-unchanged 现在想要获取文件列表?

我暂时想删除某个提交的一些文件并运行:git update-index --assume-unchanged file_name在一堆文件上。

然后我关闭了终端,是否有办法取回我运行命令的文件名,git update-index以便我可以--not-assume-unchanged在它们上运行?

git git-index

3
推荐指数
1
解决办法
535
查看次数

为什么结帐有时会暂存文件?

当我第一次开始使用Git时,我发现checkout命令很混乱.但是,当我适应Git的版本控制模型时,它开始变得有意义了.现在我不得不向同事们教Git,我想checkout简单解释一下.我以为我有一个简单的解释(来自文档):

签出一个或多个工作树的路径

这似乎统一了一些你可以用结帐做的事情,这对于Git的新手来说似乎是一组多样化的操作:

git checkout .
git checkout HEAD .
git checkout HEAD~2
git checkout feature/update-readme README.md
Run Code Online (Sandbox Code Playgroud)

...除了最后一个,因为这不只是更新工作目录,它会分段文件.

我如何理解为什么或何时结账会导致某些事情上演而不是仅仅复制到工作目录中?

git working-directory git-checkout git-index git-stage

3
推荐指数
1
解决办法
946
查看次数

显示 Git 索引中并在工作副本中更改的文件

我有一个 Git 预提交钩子,它会去除空格并将修改后的文件保留在工作副本中,这样它就不会踩踏像git add -p.

如果我提交多个已更改文件中的一个,并且更正了空格,则我会在工作副本中更改两个文件和一个暂存文件(该文件也在工作副本中,但暂存更改存在空格错误):

vi fileWithBadWS.txt  # leave bad whitespace
vi fileWithGoodWS.txt # don't leave bad whitespace
vi unrelatedFile.txt

git add fileWithBadWS.txt fileWithGoodWS.txt 
git commit -m "Commited files, one with bad whitespace" # pre-commit hook fails
Run Code Online (Sandbox Code Playgroud)

仓库现在看起来像这样:

On branch master
Changes to be committed:

        modified:   fileWithBadWS.txt  # bad WS
        modified:   fileWithGoodWS.txt

Changes not staged for commit:

        modified:   fileWithBadWS.txt   # fixed WS
        modified:   unrelatedFile.txt                                 
Run Code Online (Sandbox Code Playgroud)

我可以用:

  • git diff去看fileWithBadWS.txt并且unrelatedFile.txt
  • git diff --cached查看暂存文件fileWithBadWS.txt和 …

git git-diff pre-commit-hook git-index

3
推荐指数
1
解决办法
802
查看次数

对于给定的 Git 存储库,如何找到其索引文件的路径?

假设我正在 Git 存储库中运行脚本并希望直接访问索引文件。如何以也尊重例如工作树的方式获取索引文件的路径?

git git-index

0
推荐指数
1
解决办法
100
查看次数