当我对Git中的文件进行更改时,如何才能只提交部分更改?
例如,如何在文件中更改的30行中只提交15行?
当我对Git中的文件进行更改时,如何才能只提交部分更改?
例如,如何在文件中更改的30行中只提交15行?
当前回答
对于使用Git扩展的用户:
在提交窗口中,选择要部分提交的文件,然后在右窗格中选择要提交的文本,然后右键单击所选内容并从上下文菜单中选择“暂存选定行”。
其他回答
我强烈建议使用Atlassian的SourceTree。(这是免费的。)这让事情变得微不足道。您可以快速轻松地分段单个大块代码或单个代码行。
gitgui在diff视图下提供了此功能。只需右键单击您感兴趣的行,就会看到一个“stage this line to commit”菜单项。
vim-gitgolf插件可以在不离开vim编辑器的情况下使用
:GitGutterStageHunk
除此之外,它还提供了其他很酷的功能,如一些现代IDE中的差异符号列
如果只有一部分人被安排逃亡
:Gdiff
允许视觉范围选择,然后:“<,”>diffput或:“<”>diffget暂存/还原单个行更改。
当我有很多更改,并且最终将根据这些更改创建一些提交时,我希望在暂存之前暂时保存我的起点。
这样地:
$ git stash -u
Saved working directory and index state WIP on master: 47a1413 ...
$ git checkout -p stash
... step through patch hunks
$ git commit -m "message for 1st commit"
$ git checkout -p stash
... step through patch hunks
$ git commit -m "message for 2nd commit"
$ git stash pop
Whymharh的回答是我通常会做的,但有时会有很多变化,我可以告诉你,我可能会在表演过程中犯错误,我想要一个可以依靠第二次传球的坚定状态。
我想把lazygit添加到工具列表中。这是一个不错的命令行gui(即,即使不允许X转发,也可以通过ssh工作)。它具有广泛的功能(例如,选择要提交的行、交互式重基)、有用的着色,并且使用起来相对简单。可以以多种方式安装(go、conda、包管理器等)。仍在积极开发/维护。