Basic
Concept
Area
git分为三个区
- 工作区:修改的东西会先保存在这个区域,git add操作后会并缓存到暂存区
- 暂存区:待提交的东西保存在这个区域,git commit操作时会并打包到仓库区
- 仓库区:归档的东西保存在这个区域
Name
- 工作区:working area
- 暂存区:stage area 也叫缓存区(cache area)
- 仓库区:repository area
git diff –staged 和 –cached 是一个意思
注意存在 git restore –staged 但不存在 git restore –cached
Object
- 工作区:结构为working tree
- 暂存区:结构为index tree
- 仓库区:结构为commit tree
Config
Repository
Clone
Remote
Submodule
Branch
推荐用git switch代替git checkout来切换分支
Tag
Change
推荐用git restore代替git checkout来还原变更
Commit
git revert:丢弃已提交记录的变更,并生成新的提交
git reset:丢弃已提交记录的变更,不生成新的提交
注意:如果提交已经推送到仓库并被别人同步了,就不能使用git reset,否则会造成代码丢失
Sync
git pull
= git fetch + merge
git pull --rebase
= git fetch + rebase
git merge
和 git rebase
都是同步变更的方式
- merge:
合并同步
- 第一个参数是合并源头分支(即需被合并的分支)
- 第二个参数是合并目标分支(省略的话默认是当前分支)
- rebase:
变基合并
- 第一个参数是变基源头分支(即变基的基础分支)
- 第二个参数是变基目标分支(省略的话默认是当前分支)
Pull
Push
Fetch
Merge
Rebase
Pick
Upstream
Fork
Log
Other
git prune:清除所有不可达的对象
git clean:清除所有未追踪的对象