git - 如何使用 git 暂存新文件的一部分?

标签 git

喜欢 git add --interactive。它现在是我日常工作流程的一部分。

问题似乎不适用于未跟踪的文件。我想做的是跟踪一个新文件,但只添加它的一部分,即这个新文件的某些部分还没有准备好上演。

例如,使用 git add -i,我可以选择补丁选项,甚至可以编辑单个 hunk,以便暂存部分新代码,而不暂存调试代码注释。我喜欢以这种方式工作,因为它可以清楚地表明我目前正在处理的大型补丁的哪些地方仍然需要改进。

不幸的是,我似乎无法对未跟踪的文件执行相同的操作。要么暂存整个文件,要么什么都不暂存。我一直在使用的解决方法是暂存或什至在新文件为空时提交新文件,然后以通常的方式暂存个别更改。但这个解决方案感觉像是一个肮脏的黑客,当我忘记或改变主意时,它会造成比应该有的更多的麻烦。

所以问题是:如何只暂存新文件的一部分,以便跟踪这个新文件但不暂存其全部或部分内容?

最佳答案

哇,所有的 update-indexhash-object 业务似乎过于复杂。这个怎么样:

git add -N new_file
git add -i  # or 'git add -p' if you prefer

来自git help add:

-N, --intent-to-add
    Record only the fact that the path will be added later.  An entry
    for the path is placed in the index with no content.  This is useful
    for, among other things, showing the unstaged content of such files
    with git diff and committing them with git commit -a.

关于git - 如何使用 git 暂存新文件的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436681/

相关文章:

git - 如何永久删除存储在GIT中的文件?

xcode - Mac终端返回 "xcrun: error: unable to exec Xcode native xcrun (Exec format error)."

GIT Packfile 声称有更多对象,无法访问

linux - 如何使用git命名空间 stash 分支

git - 在分支 View 中启动 git-cola

git - 我应该在我的 git 存储库中保留多少 Gradle 固定装置?

gitk:奇怪的历史树

php - 在 GIT 控制的 Intranet 上使用 GIT/BitBucket 进行持续集成

java - Eclipse 错误日志记录 - 由于从 GIT 导入而未显示?

ruby-on-rails-3 - 瘦网络服务器 : `start_tcp_server' : no acceptor (RuntimeError) after git branch checkout