基础篇

Git commit(提交)

image-20210707180217632

image-20210707180229217

image-20210707180240632

Git Branch(分支)

image-20210707180311964

image-20210707180321593

image-20210707180338498

image-20210707180354850

image-20210707180409051

git checkout -b bugFix

image-20210708092926600

Git Merge(合并1)

合并到当前分支

image-20210707180502520

image-20210707180520116

image-20210707180535801

Git Rebase(合并2)

把当前分支里的工作合并(复制)到

git rebase branch1 branch2:将分支2的提交合并到分支1

image-20210707180641790

image-20210707180657215

image-20210707180715217

高级篇

Git checkout(在提交树上移动)

HEAD:是对当前提交记录的符号引用

image-20210707181102379

通过指定提交记录哈希值(如C1 C2)的方式在 Git 中移动

image-20210707182107038

image-20210707182131190

image-20210707182148057

image-20210707182202895

相对引用1(^)

image-20210707182718057

image-20210707182755760

image-20210707182857052

image-20210707182916539

image-20210707182947454

image-20210707183002457

相对引用2(~)

image-20210708094914804

image-20210708094927037

强制修改分支位置:git branch -f

image-20210708094944297

image-20210708094957557

image-20210708095006899

image-20210708095740561

image-20210708095752419

1
2
3
git branch -f main c6
git checkout HEAD^
git branch -f bugFix HEAD^

Git reset|Git revert(撤销变更)

image-20210708100028520

  • git Reset:用于本地

image-20210708100107026

image-20210708100127317

  • git revert:用于远程,将记录的撤销(回退)记录加到当前分支记录

image-20210708100137372

image-20210708100205219

移动提交记录

Git cherry-pick(整理提交记录)

image-20210708101132784

把一些提交号复制到当前位置

image-20210708101213736

image-20210708101302552

image-20210708101313112

Git rebase -i (交互式的 rebase)

image-20210708101514919

image-20210708101619930

image-20210708101644114

image-20210708101657579

image-20210708101750066

image-20210708101847656

杂项

本地栈式提交

image-20210708102217807

image-20210708102740387

image-20210708102759444

image-20210708102807847

1
2
3
git checkout main

git cherry-pick c5 或 git cherry-pick bugFix

提交的技巧 #1

image-20210708103425969

image-20210708103558144

image-20210708104016852

image-20210708104024797

1
2
3
4
5
6
7
8
git rebase -i HEAD~2
调整C2 C3
//进行一些小修改
git commit --amend
git rebase -i HEAD~2
调整C2'' C3
//将main移动到修改的最前端
git rebase caption main

image-20210708104217724

image-20210708105041296

image-20210708105110953

image-20210708105235499

提交的技巧 #2

image-20210708105329986

image-20210708105350522

image-20210708105409069

image-20210708105427238

1
2
3
4
git checkout main
git cherry-pick C2
git commit --amend
git cherry-pick C3

image-20210708110350766

image-20210708110400360

Git Tags

image-20210708110500402

image-20210708110931071

image-20210708110943859

image-20210708110956301

Git Describe

image-20210708111252981

image-20210708111345615

image-20210708111406212

高级话题

多分支 rebase

image-20210708113031307

image-20210708113047650

image-20210708113057624

1
2
3
4
git rebase main bugFix
git rebase bugFIx side
git rebase side another
git rebase another main

选择父提交记录

image-20210708122019936

image-20210708122034460

image-20210708122053452

image-20210708122106658

image-20210708122508583

image-20210708122747166

^num是横向移动;~num是纵向移动

纠缠不清的分支

image-20210708124214014

image-20210708125303011image-20210708125313507

1
2
3
4
git cherry-pick C4 C3 C2
git checkout two
git cherry-pick C5 C4 C3 C2
git branch -f three C2

Push & Pull —— Git 远程仓库!

Git clone

image-20210708131220533

image-20210708131436712

image-20210708131503803

image-20210708131528770

远程分支

image-20210708131730919

image-20210708131814248

image-20210708131823958

image-20210708131851696

Git Fetch(抓取)

image-20210708132039850

image-20210708132118768

image-20210708132146200

image-20210708132156470

image-20210708132324194

Git Pull(拉取=抓取+合并)

image-20210708132614877

image-20210708132632183

image-20210708132732130

image-20210708132745265

image-20210708132847811

git pull=git fetch + git merge

模拟团队合作

image-20210708133042614

image-20210708133055142

image-20210708133104029

image-20210708133141450

image-20210708133506924

image-20210708133517625

1
2
3
4
git clone
git fakeTeamwork 2
git commit
git pull

Git Push(推送)

image-20210708133828791

image-20210708133844106

image-20210708133914152

偏离的工作

image-20210708134026480

image-20210708134033083

image-20210708134200396

image-20210708134240816

image-20210708134253823

image-20210708134308393

image-20210708134516265

image-20210708134544127

image-20210708134640963

image-20210708134741663

image-20210708134812644

image-20210708134828932

image-20210708135720602

1
2
3
git pull = git fetch + git merge

git pull --rebase = git fetch + git rebase

image-20210708140648399

image-20210708140710442

image-20210708140725614

image-20210708141024342

image-20210708141038183

1
2
3
4
5
git fake' Teamwork
objective
git commit
git pull --rebase
git push

远程服务器拒绝!(Remote Rejected)

image-20210708141215295

image-20210708141250110

image-20210708141325847

image-20210708142008765

image-20210708142015998

1
2
3
4
5
6
7
8
$ git reset --hard o/main
➊在本程序中默认的行为是--hard 硬重置,可
以尽情省略掉那个选项以避免麻烦!但是要记录
Git中默认的是--mixed。
$ git checkout -b feature C2
$ git push origin feature
0 local branch "feature" set to track
remote branch "o/ feature"

关于 origin 和它的周边 —— Git 远程仓库高级操作

合并特性分支

image-20210708142416567

image-20210708142507101

image-20210708142610921

image-20210708142622769

image-20210708143546325

image-20210708143555630

1
2
3
4
5
6
$ git fetch
$ git rebase o/main side1
$ git rebase side1 side2
$ git rebase side2 side3
$ git rebase side3 main
$ git push

合并远程仓库

image-20210708144023265

image-20210708144057908

image-20210708144131116

image-20210708144802230

image-20210708144811391

1
2
3
4
5
6
git checkout main
git pull
git merge side1
git merge side2
git merge side3
git push

远程跟踪分支

image-20210708145247050

image-20210708145254765

1. git checkout -b foo o/main

image-20210708145407891

image-20210708145459743

image-20210708145531527

image-20210708145546365

image-20210708145612482

2.git branch -u o/main foo

image-20210708145630700

image-20210708145825968

image-20210708150403153

image-20210708150412005

1
2
3
4
git checkout -b side o/main
git commit
git pull --rebase
git push

Git Push 的参数

image-20210708150947720

image-20210708151031205

image-20210708151130836

image-20210708151209286

image-20210708151219562

image-20210708151234915

image-20210708151308955

image-20210708151359962

image-20210708151407109

1
2
git push origin main
git push origin foo

<place>参数详解

image-20210708151517814

image-20210708151558370

image-20210708151630372

image-20210708151713402

image-20210708151724079

image-20210708152005397

image-20210708152017612

1
2
git push origin main^:foo
git push origin foo:main

Git fetch 的参数

image-20210708152517963

image-20210708152526401

image-20210708152550967

image-20210708152623538

image-20210708152648161

image-20210708152724640

image-20210708152754538

image-20210708152807081

image-20210708152821953

image-20210708152832652

image-20210708152844370

image-20210708152855544

image-20210708153609012

image-20210708153618871

1
2
3
4
git fetch origin main~1:foo
git fetch origin foo:main
git checkout foo
git merge main

古怪的 <source>

image-20210708154016519

image-20210708154055142

image-20210708154118967

image-20210708154128060

image-20210708154143579

Git pull 参数

image-20210708154252617

image-20210708154310504

image-20210708154322563

image-20210708154340066

image-20210708154417895

image-20210708154431000