我正在使用 VS Code,当我在提交之前(通常在只读“(索引)”编辑器中)发现分阶段更改中的拼写错误时,我总是很恼火。因为解决它涉及打开原始文件,找到相同的位置,进行更改,保存文件,现在打开文件的差异,暂存此更改(而不是其他更改),然后完成提交。这对我来说似乎没有必要复杂。
我只想对索引进行编辑 - VS Code 等智能编辑器应该能够在后台执行必要的操作。但它不会让我,因为编辑器是只读的,而且我“无法在只读编辑器中编辑”
有一个关于此问题的 GitHub 问题#91065(以及#91274、#74149、#15785、#33681),称其“按设计”工作。但解释并没有真正向我解释:
差异的标题说
(Index)- 这意味着您已经分阶段进行了更改,并且您正在将分阶段的更改与头部修订版进行比较。
正确,但这并不能解释为什么 VS Code 不能进行进一步的更改。
这与工作文件不同,因为您可以选择性地暂存文件的某些部分,因此暂存版本可能看起来与工作文件不同
再次强调:正确,但这并不能解释为什么 VS Code 不应该首先经历编辑“工作文件”的麻烦而无法进行进一步的更改。
您无法编辑右侧,因为更改是暂存的
这对我来说不是一个解释。
您需要编辑工作文件并暂存这些更改,或者取消暂存并编辑文件
最后,我再次不明白为什么 VS Code 不能为我做到这一点。
但也许我忽略了一些事情。所以我的问题是,
在允许用户提交之前,我们目前正在使用 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) 我想将一些被一堆 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)
我想要:
有什么解决办法吗?