检查git暂存区是否可行?

3
我想知道在Git中是否有可能进入(checkout,不确定这个词)暂存区,以确保即将提交的代码是稳定、正确等。
假设我修改了3个文件,它们与同一功能无关。我将其中2个文件添加到暂存区。如何确保我即将提交的代码可以编译或其他操作?
或者,也许我的确保提交正确性的方法是错误的。
2个回答

1
您的暂存区中的内容也在您的工作目录中,所以如果您想知道您的代码是否正确,您只需测试它即可。运行您的测试套件(如果有),编译,运行等等。如果它按您想要的方式工作,您可以提交它。
当然,您可以使用分支来分离功能更改,然后在分支之间进行切换(仅当您拥有干净的工作目录时才可能进行检出修改文件,当没有任何冲突时,则可以使用git stash save,然后再使用git stash pop)。
在以下情况下,您将一些更改添加到暂存区,并且您的工作目录中还有其他更改在相同的文件中,您可以通过使用git stash save --keep-index对未暂存的更改进行隐藏。这将隐藏除已暂存更改外的所有内容,因此您只能测试您的“提交”。

3
我不同意暂存区在工作目录中的说法。如果我修改了文件A并将其暂存,然后再次修改文件A,那么工作目录中的文件A与暂存区中的文件A是不同的。 - Maxime

1
不要在工作目录或暂存区同时进行多个操作。每当需要进行像分号更改这样小的操作时,请创建一个分支。提交更改并切换到另一个分支。您不需要将分支推送到远程。 通过这种方式,您一次只处理一件事情,无需担心代码编译和依赖问题。 在当前情况下,您可以创建一个分支并将您的两个文件提交到该分支,然后隐藏您的剩余文件并检查是否有效。如果有效,则可以将新建的分支合并到主分支中,并通过“stash pop”获取第三个文件。

1
有时候只专注于一件事是不可能的,因为更改可能相互关联,但应该分别提交。此外,暂存块/行不符合您的策略;您可以迭代地暂存“就绪”更改,然后像Maxime一样,您希望知道暂存区是否正确,而不管工作目录中的其他更改。这不是问题的真正答案。 - Wirone
虽然可能会很难,但我认为一次只处理一件事情并不是不可能的。如果无法分离,那么它们就是相关的,应该同时提交。这也回答了你最初提出的关于如何知道暂存区是否有效进行编译的问题。你后来在评论中添加了条件,即你也可以修改工作目录中的暂存文件,对此,正如Maxine建议的那样,你可以使用--keep-index选项的stash命令来实现。 - Vishwanath
你弄错了用户:这是Maxime的问题和我的回答 :-) - Wirone
哦,抱歉。我甚至拼错了名字,应该是Maxime,不是Maxine。只看你的回答评论就误解了…… - Vishwanath

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