VS Code中“Commit”、“Commit Staged”和“Commit All”的区别

4
在Visual Studio Code中,Git提交有三个命令:
  • Commit
  • Commit Staged
  • Commit All

它们之间的区别是什么?

很遗憾,我没有找到任何关于这方面的文档或网页。(例如,全面列表中没有 Commit命令的德语文章Visual Studio Code (7): Git als Quellcodeverwaltung einsetzen。)


我猜这是由不同插件提供的相同功能。卸载插件,看看会发生什么,然后逐个重新安装它们。 - fredrik
1
@fredrik,这是在未安装任何扩展的情况下发生的(你是指扩展,对吗?)。 - Melebius
2个回答

2
我尝试从我的VS Code实例运行“Commit”,但它提示我一条消息:
“没有要提交的暂存更改。
您是否想将所有更改都暂存并直接提交?”
所以我猜测:这只是一个命令,用于检查您的本地配置或交互式地询问您该怎么做。最终,它会应用“提交已暂存”或“提交全部”。

如果您在没有暂存任何内容的情况下执行Commit StagedCommit All(并启用选项Git:Suggest Smart Commit),则会发生同样的情况... - Melebius
嗯,知道了。我对于VSCode中用于Git的GUI界面并不是很精通。 - LeGEC

1

我通过 git log 窗口 观察了 VS Code 的行为,并发现无论是 commit 还是 commit all 选项,它都会记录一个 git add -A -- .,因此结果是相同的。

> git add -A -- .
> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file -
> git status -z -u
> git symbolic-ref --short HEAD
> git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track) refs/heads/master refs/remotes/master
> git for-each-ref --sort -committerdate --format %(refname) %(objectname) %(*objectname)
> git remote --verbose
> git config --get commit.template
> git ls-tree -l HEAD -- /home/antonio/tmp/vscode/f9
> git show --textconv HEAD:f9
> git status -z -u
> git symbolic-ref --short HEAD
> git for-each-ref --format=%(refname)%00%(upstream:short)%00%(objectname)%00%(upstream:track) refs/heads/master refs/remotes/master
> git for-each-ref --sort -committerdate --format %(refname) %(objectname) %(*objectname)
> git remote --verbose
> git config --get commit.template

在我看来,这可能是一个bug!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接