GitDeepDive/commands.txt

202 lines
5 KiB
Plaintext

Setup
bash ~/eibhear_org/scripts/gitDemo.sh
bash ~/eibhear_org/Version1/TechTalks/merge-setup.sh
gpg2 --generate-key
git config --global gpg.program gpg2
Slide: Configuration
git config --list
cd ~/tmp/DeepDive1
git config --local --list
git config --global --list
git config --system --list
git config --global user.name "Éibhear Ó hAnluain"
git config --global user.email "eibhear.ohanluain@version1.com"
git config -e
# Slide
Slide: fetch and merge, not pull
cd ~/tmp/gitDemo/javaBootcampNoEclipse.dev1
git fetch --prune
# Slide
git branch -va
# Slide
Slide: Merging approaches: fast-forward
cd ~/tmp/DeepDive1
git checkout master
git log --decorate --graph --oneline --all
git merge Rel1
# Slide
git log --decorate --graph --oneline --all
# Slide
Slide: Merging approaches: merging strategies
cd ~/tmp/DeepDive1
git checkout master
git merge Rel2
git log --decorate --graph --oneline --all
# Slide
Slide: Merging approaches: Rebase
bash ~/eibhear_org/Version1/TechTalks/merge-setup.sh
cd ~/tmp/DeepDive1
git checkout master
git log --decorate --graph --oneline --all
git merge Rel1
git log --decorate --graph --oneline --all
git checkout Rel2
git rebase master
# Slide
git log --decorate --graph --oneline --all
# Slide
Slide: refs
bash ~/eibhear_org/Version1/TechTalks/merge-setup.sh
cd ~/tmp/DeepDive1
ls -l .git/refs/heads/
cat .git/refs/heads/Rel2
# Slide
git tag Rel1.0 Rel1
cat .git/refs/heads/Rel1
cat .git/refs/tags/Rel1.0
cat .git/HEAD
# Slide
cd ~/tmp/gitDemo/javaBootcampNoEclipse.dev1
ls -l .git/refs/remotes/origin/
cat .git/packed-refs
# Slide
Slide: Annotated tags
cd ~/tmp/DeepDive1
cat .git/refs/tags/Rel1.0
git cat-file -t $(cat .git/refs/tags/Rel1.0)
git cat-file -p $(cat .git/refs/tags/Rel1.0)
# Slide
git tag -a -m "Formal release of 1.0" Rel1.0.prod Rel1
cat .git/refs/tags/Rel1.0.prod
git cat-file -t $(cat .git/refs/tags/Rel1.0.prod)
git cat-file -p $(cat .git/refs/tags/Rel1.0.prod)
# Slide
Slide: blame
git blame information.md
git checkout Rel1
git blame information.md
git merge Rel2
git blame information.md
# Slide
Slide: Tag and commit signing
gpg --list-secret-keys
git checkout master
# Edit information.md
git commit -a -Seibhear.ohanluain@version1.com -m "Update to information.md"
git cat-file -p master
git tag -s -u eibhear.ohanluain@version1.com -m "Release 2." Rel2.0 Rel2
git cat-file -p Rel2.0
# Slide
git tag -v Rel2.0
git log --show-signature -1
# Slide
Slide: Git Objects -- blobs
cat ~/.bash_history | git hash-object --stdin
# Slide
Slide: Git Objects -- trees
cd ~/tmp/gitDemo/javaBootcampNoEclipse.dev1
cat .git/refs/heads/master
git cat-file -p <treeObject>
# Slide
Slide: Git Objects -- commits
cd ~/tmp/DeepDive1
git log --graph --all --decorate --oneline
git cat-file -p HEAD
git cat-file -p <objectId>
# Slide
Slide: Git Objects -- tags
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize)' --batch-all-objects | grep tag
git cat-file -p <tagObject>
# Slide
Slide: "Content Addressable Filesystem"
git rev-list --all --objects
git cat-file -p <blobObject>
git cat-file -p <blobObject> | git hash-object --stdin
ls -l .git/objects/...
# Slide
Slide: The reflog
git reflog
git reflog expire --expire=now --expire-unreachable=now --verbose --all
git reflog
# Slide
Slide: fsck and gc
git fsck
git gc
# Slide
Slide: Useful commands
bash ~/eibhear_org/Version1/TechTalks/largeFile-setup.sh
cd ~/tmp/DeepDive1
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize)' --batch-all-objects | sed -n 's/^blob //p' | sort -n --key=2
git rev-list --objects --all | grep <blobID>
git log --follow -- "largeInformation.md"
# Slide
Slide: Permanently removing a file from your git db [1/2]
for tag in $(git tag)
do
echo "${tag},$(git log --format="%H,\"%cn\",\"%ci\",\"%s\"" ${tag} | head -1)"
done | tee ../tag_list.csv
for branch in $(git branch -r | grep -v HEAD | sed 's/\ \ origin\///')
do
git checkout ${branch}
done
for branch in $(git branch | sed 's/^..//')
do
git checkout -q ${branch}
du -sk . | sed "s/\./${branch}/"
done | tee ../branch_sizes.out
# Slide
git checkout Rel1
# Slide
git filter-branch --tree-filter 'rm -f largeInformation.md' --prune-empty HEAD
# Slide
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
# Slide
for branch in Rel2 Rel3 Rel4 master
do
git checkout ${branch}
git filter-branch --tree-filter 'rm -f largeInformation.md' --prune-empty HEAD
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
done | tee ../cleanup.out
# Slide
git reflog expire --expire-unreachable=now --all
# Slide
git gc --prune=now
# Slide
git fsck --unreachable --no-reflogs
# Slide
for branch in $(git branch | sed 's/^..//')
do
git checkout -q ${branch}
du -sk . | sed "s/\./${branch}/"
done | tee ../branch_sizes_post_process.out
# Slide
# End