
- Workspace 工作区
- index/stage 暂存区
- Repository 本地仓库
- Remote 远程仓库
设置
- 配置快捷键[将git status 设置为 git s] git config --global alias.s 'status'
查看
- git log --online 查看提交历史记录
- git log --oneline --decorate --graph --all 查看全部的分支提交历史图
- git remote -v 查看远程仓库
分支
git branch [分支名] 创建一个分支
git branch -D [分支名] 删除分支[不能自己删除自己]
git branch -u [remove]/[分支名] (--set--upstream-to) 设置已有的本地分支跟踪一个刚刚拉取下来的远程分支
git branch -vv 查看设置的所有远程跟踪分支
git checkout [分支名] 切换分支d
git checkout -b [分支名] 创建一个分支并切换过去
git push -u [reomove] [分支名] 自动在远程创建一个该分支,本地追踪该远程分支(本地有分支,远程没有此分支)
git checkout --track [remove]/[分支名] 创建一个本地分支,并跟踪已有的远程分支(本地没有此分支,远程有此分支)
存储
- git stash 将未完成的修改保存到一个栈中
- git stash list 查看存储
- git stash apply 拿出栈顶的元素
- git stash pop 取出存储然后立即从栈中移除掉
- git stash drop [存储名] 将存储从栈中移出去
撤销
- git reset --hard [HEAD] 回滚到指定版本,同时清空工作目录的所有变动(意思我们修改的所有代码全没了)
- git reset --soft [HEAD] 回滚到指定版本,同时保留暂存区的内容(可以进行)
- git reset --mixed [HEAD] 回滚到指定版本,同时保留修改内容(--mixed为git reset默认参数)
git pull 和git fetch 的区别
远程跟踪分支是远程分支状态的引用,它们是你不能移动的本地分支,当你做任何网络通信操作的时,他们会自动移动。 命名形式:[remote/branch]
git fetch 更新的是 远程跟踪分支

- 首先我们假设本地仓库的master分支上commit ID = 1,origin/master 上的commit ID =1
这时候远程仓库有人更新了github origin库中master分支上的代码,新的代码版本号 commit ID = 2

- 使用 git fetch 更新代码,本地的库中master的commitID不变,但是远程跟踪分支 origin/master的 commit ID 变成了2。这时候我们本地相当于存储了两个版本,还要通过merge合并这两个不同的代码版本。
git pull
使用git pull 会将本地的代码更新至远程仓库里面最新的代码版本,
