相关疑难解决方法(0)

为什么我不能使用 VS Code 直接编辑 git 索引中的分阶段更改?

我正在使用 VS Code,当我在提交之前(通常在只读“(索引)”编辑器中)发现分阶段更改中的拼写错误时,我总是很恼火。因为解决它涉及打开原始文件,找到相同的位置,进行更改,保存文件,现在打开文件的差异,暂存此更改(而不是其他更改),然后完成提交。这对我来说似乎没有必要复杂。

我只想对索引进行编辑 - VS Code 等智能编辑器应该能够在后台执行必要的操作。但它不会让我,因为编辑器是只读的,而且我“无法在只读编辑器中编辑”

有一个关于此问题的 GitHub 问题#91065(以及#91274#74149#15785#33681),称其“按设计”工作。但解释并没有真正向我解释:

差异的标题说(Index)- 这意味着您已经分阶段进行了更改,并且您正在将分阶段的更改与头部修订版进行比较。

正确,但这并不能解释为什么 VS Code 不能进行进一步的更改。

这与工作文件不同,因为您可以选择性地暂存文件的某些部分,因此暂存版本可能看起来与工作文件不同

再次强调:正确,但这并不能解释为什么 VS Code 不应该首先经历编辑“工作文件”的麻烦而无法进行进一步的更改。

您无法编辑右侧,因为更改是暂存的

这对我来说不是一个解释。

您需要编辑工作文件并暂存这些更改,或者取消暂存并编辑文件

最后,我再次不明白为什么 VS Code 不能为我做到这一点。

但也许我忽略了一些事情。所以我的问题是,

为什么我不能直接进行阶段更改?VS Code 应该可以吗?

git visual-studio-code

14
推荐指数
1
解决办法
1431
查看次数

git pre-commit hook 同时格式化和重新添加文件

在允许用户提交之前,我们目前正在使用 git hook(如下)在我们的源代码上运行 astyle。这有一个警告,即用户必须提交,格式化他们的代码,然后再次提交,这有点麻烦。理想情况下,我们希望钩子格式化代码,然后将格式化的代码包含在原始提交中。我试过重新添加更改的文件,但它会导致引用错误(显然)。我还尝试在 pre-commit 挂钩中获取历史记录,并尝试退出挂钩并重新运行 git commit 命令,但没有成功。

# Run astyle on changed .cs files, ignoring $ignored
res=$(exec git diff --cached --name-only | \
    grep -Ev $ignored | \
    xargs astyle --options=conf/astylerc | \
    tail -n 1)
num_formatted=$(echo $res | cut -b 1) # We are only interested in the number preceeding 'formatted'.
[[ $num_formatted -ne 0 ]] && echo "WARNING: Code has been automatically formatted. Please re-add and re-commit" && exit 1 || echo "No code to format! …
Run Code Online (Sandbox Code Playgroud)

git formatting githooks

9
推荐指数
2
解决办法
5934
查看次数

当计算忽略时,可以让 git 忽略嵌套的 .gitignore 文件吗?

我想将一些被一堆 repos 忽略的文件跟踪到一个 repo 中。

这是一个示例布局:

.
+-- .git
+-- .idea
|-- .gitignore
|-- proj1
|   +-- .git
|   |-- .gitignore
|   |-- foo
|   |   |-- foo.iml
|   |-- bar.c
|   |-- proj1.iml
|-- proj2
    +-- .git
    |-- .gitignore
    +-- bar
    |-- foo.c
    |-- proj2.iml
Run Code Online (Sandbox Code Playgroud)

我想要:

  • 包含所有 *.iml 文件的根级存储库,而每个子存储库单独忽略它们
  • 所有 repos 都是独立的(项目不依赖于根,可以单独操作)
  • 要维护此文件夹结构

有什么解决办法吗?

git gitignore

5
推荐指数
1
解决办法
774
查看次数