X-Git-Url: https://git.xandkar.net/?p=git-cheat-sheet.git;a=blobdiff_plain;f=README.md;h=7b84acac11fc3609e283d6e89487918947178427;hp=872a0abe00226bcda16a322888b3596a9257b078;hb=4b6ac450277d33471600ae525a126ece4491d97b;hpb=524e725b13e43fbc020288c35fa998fff9868a4c diff --git a/README.md b/README.md index 872a0ab..7b84aca 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,47 @@ Deleting all tags, locally and remotely for tag in `git tag`; do git tag -d $tag - git push origin :refs/tags/$tag + git push $REMOTE_NAME :refs/tags/$tag done ``` + + +Get an older version of a file +------------------------------ + +```sh +git cat-file -p $COMMIT_DIGEST:$FILE_PATH +``` + + +Splitting a commit +------------------ + +From [docs](https://git-scm.com/docs/git-rebase#_splitting_commits): + +- Start an interactive rebase with `git rebase -i ^`, where `` + is the commit you want to split. +- Mark the commit you want to split with the action "edit". +- When it comes to editing that commit, execute `git reset HEAD^`. The effect + is that the HEAD is rewound by one, and the index follows suit. However, the + working tree stays the same. +- Now add the changes to the index that you want to have in the first commit + (`git add`) +- Commit the now-current index with whatever commit message is appropriate now. +- Repeat the last two steps until your working tree is clean. +- Continue the rebase with `git rebase --continue`. + + +Merge 2 repos +------------- + +```sh +$ ls -1 +repo_A +repo_B +$ cd repo_B +$ git remote add repo_A ../repo_A +$ git fetch repo_A --tags +$ git merge --allow-unrelated-histories repo_A/$BRANCH +$ git remote remove repo_A +```