summaryrefslogtreecommitdiff
path: root/3 Resources/Git
diff options
context:
space:
mode:
authorJasper Ras <jras@hostnet.nl>2025-03-20 11:07:49 +0100
committerJasper Ras <jras@hostnet.nl>2025-03-20 11:07:49 +0100
commit80ccf68f55dbb70d7e5ed52ee95b3c9d1b6ce264 (patch)
tree93e28e85ab70052aa6f577998ec7dc1f413b40c0 /3 Resources/Git
parent9642cd7ae24f0ba79ce5647c709b35ae8f06a285 (diff)
vault backup: 2025-03-20 11:07:48
Diffstat (limited to '3 Resources/Git')
-rw-r--r--3 Resources/Git/Edit existing commits.md22
-rw-r--r--3 Resources/Git/Find files in history.md17
2 files changed, 39 insertions, 0 deletions
diff --git a/3 Resources/Git/Edit existing commits.md b/3 Resources/Git/Edit existing commits.md
new file mode 100644
index 0000000..9832ee5
--- /dev/null
+++ b/3 Resources/Git/Edit existing commits.md
@@ -0,0 +1,22 @@
+---
+tags:
+ - git
+---
+I've found a nice and easy way to edit existing commits. Before I used the following "tedious" process.
+```
+git stash # Git rebase wants a clean working tree
+git rebase -i <main|master|whatever branch your branched off>
+... in the interactive editor, find the commit to edit, and mark it to edit ...
+... write & quit ...
+git stash pop # Optional. Only if you've already made the changes on HEAD.
+git commit --amend
+git rebase --continue
+```
+
+Now we can do something much easier using a so called "fixup commit".
+
+```
+git commit --fixup=<commit_id_to_fix>
+git rebase -i --autosquash <main|master|whatever branch you branched off>
+... write & quit
+``` \ No newline at end of file
diff --git a/3 Resources/Git/Find files in history.md b/3 Resources/Git/Find files in history.md
new file mode 100644
index 0000000..d5592fe
--- /dev/null
+++ b/3 Resources/Git/Find files in history.md
@@ -0,0 +1,17 @@
+---
+tags:
+ - git
+references:
+ - https://stackoverflow.com/questions/7203515/how-to-find-a-deleted-file-in-the-project-commit-history
+---
+Find a (deleted) file in all commits.
+`g lg --all --full-history -- "**/shell.nix"`
+or more generally
+`g lg --all --full-history -- <path-to-file>`
+then using the SHA
+`g show <sha> -- <path-to-file>`
+
+**Epic bonus**
+Restore the file:
+`g checkout <sha>^ -- <path-to-file>`
+the caret (`^`) references one commit before sha, because in sha it is deleted. \ No newline at end of file