Skip to content

Instantly share code, notes, and snippets.

@x-yuri

x-yuri/a.sh Secret

Last active May 12, 2021 20:46
Show Gist options
  • Save x-yuri/9cf623ac9d52bd29e23b93137fd0fdd7 to your computer and use it in GitHub Desktop.
Save x-yuri/9cf623ac9d52bd29e23b93137fd0fdd7 to your computer and use it in GitHub Desktop.
#!/bin/sh -eu
rm -rf r.git r1 r2
set -x
mkcommit() { echo "$2" > "$1"; git add "$1"; git commit -m "$2"; }
log() { git --no-pager log --all --oneline --graph --decorate; }
mkdir r.git
(cd r.git
git init --bare
)
git clone r.git r1
(cd r1
git init
mkcommit a a1
mkcommit b b1
git push origin HEAD
log
)
git clone r.git r2
(cd r2
log
)
(cd r1
git reset --hard HEAD~
mkcommit b b12
git push -f
)
(cd r2
mkcommit c c2
git fetch
log
# no conflict
git -c pull.rebase=true pull
# git pull --rebase
# git rebase
# git rebase origin/master --fork-point
# conflict
# git -c pull.rebase=false pull
# git rebase origin/master
git --no-pager branch -vv
log
)
+ mkdir r.git
+ cd r.git
+ git init --bare
Initialized empty Git repository in /home/yuri/_/git-fork-point/r.git/
+ git clone r.git r1
Cloning into 'r1'...
warning: You appear to have cloned an empty repository.
done.
+ cd r1
+ git init
Reinitialized existing Git repository in /home/yuri/_/git-fork-point/r1/.git/
+ mkcommit a a1
+ echo a1
+ git add a
+ git commit -m a1
[master (root-commit) e4f6248] a1
1 file changed, 1 insertion(+)
create mode 100644 a
+ mkcommit b b1
+ echo b1
+ git add b
+ git commit -m b1
[master f77692d] b1
1 file changed, 1 insertion(+)
create mode 100644 b
+ git push origin HEAD
To /home/yuri/_/git-fork-point/r.git
* [new branch] HEAD -> master
+ log
+ git --no-pager log --all --oneline --graph --decorate
* f77692d (HEAD -> master, origin/master) b1
* e4f6248 a1
+ git clone r.git r2
Cloning into 'r2'...
done.
+ cd r2
+ log
+ git --no-pager log --all --oneline --graph --decorate
* f77692d (HEAD -> master, origin/master, origin/HEAD) b1
* e4f6248 a1
+ cd r1
+ git reset --hard HEAD~
HEAD is now at e4f6248 a1
+ mkcommit b b12
+ echo b12
+ git add b
+ git commit -m b12
[master 8f70fed] b12
1 file changed, 1 insertion(+)
create mode 100644 b
+ git push -f
To /home/yuri/_/git-fork-point/r.git
+ f77692d...8f70fed master -> master (forced update)
+ cd r2
+ mkcommit c c2
+ echo c2
+ git add c
+ git commit -m c2
[master 436df9d] c2
1 file changed, 1 insertion(+)
create mode 100644 c
+ git fetch
From /home/yuri/_/git-fork-point/r
+ f77692d...8f70fed master -> origin/master (forced update)
+ log
+ git --no-pager log --all --oneline --graph --decorate
* 436df9d (HEAD -> master) c2
* f77692d b1
| * 8f70fed (origin/master, origin/HEAD) b12
|/
* e4f6248 a1
+ git -c pull.rebase=true pull
Rebasing (1/1)
Successfully rebased and updated refs/heads/master.
+ git --no-pager branch -vv
* master 1c8d4e3 [origin/master: ahead 1] c2
+ log
+ git --no-pager log --all --oneline --graph --decorate
* 1c8d4e3 (HEAD -> master) c2
* 8f70fed (origin/master, origin/HEAD) b12
* e4f6248 a1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment