202 lines
5 KiB
Plaintext
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
|
|
|