git 里怎么方便地追踪某一行的修改历史

2020-05-12 15:21:35 +08:00
 x97bgt

在整个历史里,我在不同 commit 里对某一行做若干次修改。怎么方便地追踪这一行的修改历史? intellij 全家桶可以做到吗?或者还有其他工具?

顺便再问 2 个问题
- 我先后提交了 commit1 和 commit2 。现在发现 commit1 没写好,改了几行。但我不想接在 commit2 后面,怎么把这些修改放到 commit1 里?
- 当前 HEAD 是 commit100 。现在想把某个文件 revert 到 commit1 的记录,同时想让这个文件每一行的提交者还是提交 commit1 的人。这可以做到吗?

4279 次点击
所在节点    git
9 条回复
sbw
2020-05-12 15:25:25 +08:00
1. git blame -L

2. 需要强制 push,不然无法修改已经提交的 commit
git reset commit1
git commit --amend commit1
git cherry-pick commit2
git push -f

3. git reset file commit1
x97bgt
2020-05-12 15:29:09 +08:00
@sbw
2. 这个方法里,如果 commit2 是若干的 commit,那就要一个个 cherry-pick 吗?感觉有点麻烦
3. 不是的。我是要在 commit100 的基础上做 revert,不是直接 reset commit1 。
Orenoid
2020-05-12 15:32:30 +08:00
第一个问题,intellij 可以,选中你要查看的代码块,右键->Git->Show History for Selection
crystom
2020-05-12 15:34:21 +08:00
vscode gitlens 插件,光标在那行直接就能看
msg7086
2020-05-12 18:26:56 +08:00
2. rebase
3. rebase
hronro
2020-05-12 18:48:28 +08:00
第二个问题:git rebase -i HEAD^2
zpfhbyx
2020-05-12 19:44:26 +08:00
git log --follow -p 文件
hantsy
2020-05-12 19:47:15 +08:00
git checkout <版本 Hash> <某个版本的单个文件>
hantsy
2020-05-12 19:49:04 +08:00
如果对一个文件的某行的操作,可能还是用什么可视 Diff 工具比较方便,直接 Copy 过来。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/670941

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX