commit
HEAD: 当前commit
HEAD~1: 简写HEAD~, HEAD的前一个版本
HEAD~n: HEAD的前n个版本
HEAD^1: 简写HEAD^, 只merge时主分支
HEAD^2: 代指merge分支
branch
branch_name: 本地某个分支
origin/branch_name: 远程本地对应分支
git branch: 创建分支
git checkout: 切换分支
git checkout -b: 创建并切换分支
三个分区
工作区working dirctory
暂存区 stage index
历史记录区 history
fetch
git fetch branch-name: 更新远程跟踪分支,从远程copy到本地refs/remotes/origin命名空间中去
merge
git merge other-branch: 将其他分支合并到当前分支
pull
git pull branch-name: git fetch+merge, 更新远程跟踪分支,并将其merge到当前分支
rebase
git rebase develop: 将develop放入临时分支,将当前分支commit以patch的形式追加到develop临时分支
git rebase -i develop: 交互的方式rebase
git rebase --abort: 终止rebase,回到当前分支初始状态
git pull --rebase origin develop: 拉取远程develop更新,基于最新develop rebase
reset
git reset --hard commit-id: 将版本库回退到指定commit-id,同时将暂存区、工作区内容都重置成commit-id这个版本,因此会丢失暂存区/工作区的修改
git reset --soft commit-id: 将版本库回退到指定commit-id,将commit-id之后的变更移动到staging区,保留staging,working区
revert
git revert commit-id: 新增一个commit回滚之前的commit-id, 是之前commit-id的逆向操作
cherry-pick
git cherry-pick commit-id: 将某个commit-id合并到当前分支
log
git log: 查看提交记录
git log -p: 按补丁格式显示提交中差异
git log --stat: 显示每次commit的统计信息
git log --pretty: 格式化显示提交信息
git reflog: 查看所有操作记录,包过被删除的commit
case
远程覆盖本地:
git fetch --all
git reset --hard origin/branch_name
本地覆盖远程:
git push --force origin