git - 如何仅提交在 git 中跟踪的某些已修改文件?
问题描述
我的存储库中有几个正在跟踪的文件,但我想提交一个只包含其中几个的提交,而将其他文件保留为已修改。示例,假设我要进行包含更改的提交c.txt
d.txt
e.txt
modified: a.txt
modified: b.txt
modified: c.txt
modified: d.txt
modified: e.txt
这样我的下一个git status
产量
modified: a.txt
modified: b.txt
必须有一个简单的方法来实现这一点。
解决方案
我想做一个包含对 c.txt d.txt e.txt 的更改的提交
您误读git status
并误解了 Git 本身的输出。
Git 提交不包含更改。它们是您整个项目的快照。
git status
告诉两个不同的事情:工作树中修改了什么(Changes not staged for commit:
),以及进入下一个提交的阶段(Changes to be committed:
)。这两个列表文件都一样,modified
但它们是完全不同的东西。
您通过索引添加到先前提交的内容以及(因此)现在索引中存在的内容来构建 Git 对项目构成的理解。一旦你提交了一个包含 c.txt 的快照,Git 就会跟踪c.txt。它不会停止跟踪它。如果您修改 c.txt,Git 会知道这一点,并会git status
在Changes not staged for commit:
.
但这并不意味着 Git 会在您下次提交时提交 c.txt 的当前状态。只有将c.txt 的当前状态添加到索引中, Git 才会这样做。如果你不添加它,Git 将不会提交它。如果您已添加它,使其显示在 下Changes to be committed:
,并且您希望没有添加,请使用git restore
,按照git status
告诉您的操作。
推荐阅读
- php - 如何使用 PHP 从 Google Cloud SQL 连接和检索数据?
- c# - 使用 C# 创建的 ZipArchive 不包含任何条目
- r - 如何在R中复制第1-50行?
- php - 使用 PHP 桌面安装 MySQL
- script# - 无法安装旧版本的 scriptsharp
- git - 将 jenkins 作业结果发布到 github pull request
- sql-server - SQL Server 触发器将插入的事件日期与现有记录日期进行比较
- haskell - 在 monad 中打印
- android - Android + Firebase Auth + REST API:如何正确使用令牌?
- c++ - 为什么空循环更慢?