Add getting an older version of a file
[git-cheat-sheet.git] / README.md
1 git-cheat-sheet
2 ===============
3
4 How to do stuff with git
5
6
7 Splitting a repo
8 ----------------
9
10 ##### Remove history of all but select files in cloned repo
11 ```sh
12 $ git clone old new
13 $ cd new
14 $ git clean -dfx
15 $ git gc --aggressive --prune=now
16 $ git remote rm origin
17 $ git filter-branch \
18 --prune-empty \
19 --index-filter '
20 git ls-tree -r --name-only HEAD \
21 | grep -v file_i_want_to_keep_1 \
22 | grep -v file_i_want_to_keep_.. \
23 | grep -v file_i_want_to_keep_n \
24 | xargs git rm --cached -r --ignore-unmatch
25 ' \
26 HEAD
27 $ git gc --aggressive --prune=now
28 ```
29
30 ##### Remove history of previously-removed (not in current tree) files
31 ```sh
32 $ git log --pretty=format: --name-status \
33 | awk '$0 != "" {print $2}' \
34 | sort -u > /tmp/tree.old
35 $ git ls-tree -r --name-only HEAD > /tmp/tree.new
36 $ git filter-branch \
37 --prune-empty \
38 --index-filter '
39 grep -Fvxf /tmp/tree.new /tmp/tree.old \
40 | xargs git rm --cached -r --ignore-unmatch
41 ' \
42 HEAD
43 ```
44
45
46 Inserting a new root commit
47 ---------------------------
48 ```sh
49 git checkout --orphan $TEMP_BRANCH
50 git rm -rf .
51 git commit --allow-empty -m $INIT_COMMIT_MSG
52 git rebase --onto $TEMP_BRANCH --root $MAIN_BRANCH
53 git branch -d $TEMP_BRANCH
54 ```
55
56
57 Deleting all tags, locally and remotely
58 ---------------------------------------
59 ```sh
60 for tag in `git tag`;
61 do
62 git tag -d $tag
63 git push $REMOTE_NAME :refs/tags/$tag
64 done
65 ```
66
67
68 Get an older version of a file
69 ------------------------------
70
71 ```sh
72 git cat-file -p $COMMIT_DIGEST:$FILE_PATH
73 ```
This page took 0.07586 seconds and 4 git commands to generate.