X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;ds=sidebyside;f=README.md;h=f23a0684bf66768af7bec5acbc43e8f11a7dd648;hb=66329b9492ea944c441d8be9961cb41214be7c20;hp=bca3d59d8b7bef65182a80dbfcda8fdd5c017d64;hpb=6b6ba9f3495de246fe962f2b23fc62b966c3ab5b;p=git-cheat-sheet.git diff --git a/README.md b/README.md index bca3d59..f23a068 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ How to do stuff with git Splitting a repo ---------------- -### Remove history of all but select files in cloned repo +##### Remove history of all but select files in cloned repo ```sh -$ cp -Rp old new +$ git clone old new $ cd new $ git clean -dfx $ git gc --aggressive --prune=now @@ -27,9 +27,47 @@ $ git filter-branch \ $ git gc --aggressive --prune=now ``` -### Remove history of previously-removed (not in current tree) files +##### Remove history of previously-removed (not in current tree) files ```sh -$ git log --pretty=format: --name-status | awk '$0 != "" {print $2}' | sort -u > /tmp/tree.old +$ git log --pretty=format: --name-status \ + | awk '$0 != "" {print $2}' \ + | sort -u > /tmp/tree.old $ git ls-tree -r --name-only HEAD > /tmp/tree.new -$ git filter-branch --prune-empty --index-filter 'grep -Fvxf /tmp/tree.new /tmp/tree.old | xargs git rm --cached -r --ignore-unmatch' HEAD +$ git filter-branch \ + --prune-empty \ + --index-filter ' + grep -Fvxf /tmp/tree.new /tmp/tree.old \ + | xargs git rm --cached -r --ignore-unmatch + ' \ + HEAD +``` + + +Inserting a new root commit +--------------------------- +```sh +git checkout --orphan $TEMP_BRANCH +git rm -rf . +git commit --allow-empty -m $INIT_COMMIT_MSG +git rebase --onto $TEMP_BRANCH --root $MAIN_BRANCH +git branch -d $TEMP_BRANCH +``` + + +Deleting all tags, locally and remotely +--------------------------------------- +```sh +for tag in `git tag`; +do + git tag -d $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 ```