目錄表

Git

Bare

Convert existing git repo to bare repo

mkdir repo.git
mv repo/.git repo.git
rm -rf repo
cd repo.git
git config --bool core.bare true

Archive

https://stackoverflow.com/questions/160608/do-a-git-export-like-svn-export

# local
git archive --format zip --output /path master
# remote
# path is optional
git archive --format=tar \
--remote=ssh://remote_server/remote_repository master path1/ path2/ | tar -xv

Shallow clone

Convert shallow clone to full clone

git fetch --unshallow
git fetch --depth=2147483647

Convert full clone to shallow clone

https://stackoverflow.com/questions/38171899/how-to-reduce-the-depth-of-an-existing-git-clone

git fetch --depth 10 / git fetch --deepen 10
git reflog expire --expire=all --all
git tag -l | xargs git tag -d
git gc --prune=all

https://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository

; Shallow to last 5 commits
git rev-parse HEAD~5 > .git/shallow

; Manually remove all other branches, tags and remotes that refers to old commits

; Prune unreachable objects
git fsck --unreachable ; Will show you the list of what will be deleted
git gc --prune=now     ; Will actually delete your data

git shared repo

[core]
sharedRepository = 0666

git-svn

git svn clone -s http://svn-server/repo
git svn fetch
git svn dcommit
git svn rebase

Stash

git stash show -p stash@{1}

Rewrite

svn-remote.<name>.rewriteRoot
This allows users to create repositories from alternate URLs. For example, an administrator could run git svn on the server locally (accessing via file://) but wish to distribute the repository with a public http:// or svn:// URL in the metadata so users of it will see the public URL.

svn-remote.<name>.rewriteUUID
Similar to the useSvmProps option; this is for users who need to remap the UUID manually. This may be useful in situations where the original UUID is not available via either useSvmProps or useSvnsyncProps.

Convert svn to git repo

https://epicserve-docs.readthedocs.io/en/latest/git/svn_to_git.html