有没有一种方法可以git stash文件中特定行?

10

这个问题有点难以解释,因为我对git了解的还不是很多。

我只知道基础知识才能勉强使用。

目前我正在开发一个大型项目,并且已经修改了特定文件中的一堆代码。但是,我要更新的内容离提交和推送到git的时间还有一段距离。

结果在同一个文件中出现了一个较小的更新,现在需要推送该代码,而不是当前半成品的文件。

有没有办法将该文件的某些代码暂时存储起来,以便在决定推送较小的更改时不会丢失对该文件所做的大量更改?

或者我必须存储当前的内容,然后重新回到该文件并再次制作较小的更改并推送它们?

如果理解起来比较困难,那我很抱歉,这个问题确实有点难以解释,而且我也不知道有没有一种当前可以在git上实现这种方法。

编辑

我正在研究使用类似第二个答案提供的单独分支。这似乎是一种更有效的解决方案,并将允许我跟踪修复。


2
我建议使用 git add --interactivegit add --patch 来添加/提交指定行,而不是将特定的行藏起来:https://dev59.com/U3NA5IYBdhLWcg3wH6AW - Alexander Nied
1
补充亚历山大的评论;如果你真的想使用stash,你可以使用git add -p来排除任何你想要排除的内容,然后使用git stash --keep-index - Calum Halpin
好的,我会再仔细研究这些解决方案。 - Michael
2个回答

16
您可以使用 --patch 选项从文件中隐藏特定行:
git stash --patch

git stash --patch  <filename>

Git会与您交互式地询问您对每个文件想要做什么。您可以编辑文件或选择哪些行被暂存。

请注意,当将文件添加到暂存区时,您也可以使用git add执行此操作:

git add --patch  <filenames>

如果你想提交文件的一部分,你可以使用 git add --patch 来暂存你想提交的部分,不需要使用 stash。


当我执行 git add --patch <filename> 命令时,它显示“没有更改”。 - Michael
你在文件里有做过任何修改吗?git diff <filename> 会显示什么? - David Sugar

2

虽然这不完全是我所要求的,但我认为这可能是跟踪正在进行的代码而不会遇到冲突的最佳方法。我开始在我的日常流程中使用它,它帮了我很多,因此我给了你一个赞。 - Michael

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