基本操作
working area --> stage area --> repo area
1 正常提交分两步:
git add : 将working area的修改提交stage area
git commit : 将stage area的修改提交到repo area
2 一步搞定:
git commit -am :将working area的修改提交到repo area
working area <-- stage area
1:修改了working area, 但未提交到stage area, 直接丢弃working area的修改:
git checkout -- <file>
2:修改了working area, 还提交到stage area, 想丢弃working area的修改:
git reset HEAD <file>
git checkout -- <file>
working area <-- stage area <-- repo area
1: rollback至repo area中某个历史版本
同步更新stage area和working area中的代码
git reset --hard <commit-id>
仅rollback commit-id, 而stage area和working area中的代码保持不变
git reset --soft <commit-id>
2:为”撤消某个commit-id"而产生新的commit-id(仅针对指定commit-id生效)
git revert <commit-id>
用于merge commit的revert, -m 1 将使用主干的上一个版本,--m 2 将使用分支的版本
git revert <commit-id> -m <1/2>
日志查看
git log [file-name]
-p 显示文件差异
--graph --oneline --decorate 显示当前分支的所有日志(一直向上追溯父级分支的记录)
--graph --oneline --decorate b1..b2 显示在b2分支,但不包括在b1和b2公有的历史记录的commit_id(即:仅显示b2分支的记录)
--graph --decorate --oneline --all 以树型图状查看所有分支日志
git log --graph --oneline --decorate master..test
显示: d
master => a->b -> c
test |-- d
git log --graph --oneline --decorate test..master
显示: c
分支操作
创建分支
git branch <branch_name>
创建并切换分支
git checkout -b <branch_name>
删除分支
git branch -d <branch_name>
git branch <branch_name> -D
合并分支 -- 将<branch_name> 合并入当前分支
git merge <branch_name>
--no-ff 生成分支合并commit_id,禁用fast-forward
查看分支
git branch
-a 查看远程和本地的所有分支
-v 查看分支及其的最后一次commit_id
--merged 查看已经合并入当前分支的分支
--no-merged 查看未合入当前分支的分支
创建并跟踪远程分支
git checkout -t origin/<branch_name>
删除远程分支
git push origin --delete <branch_name>
拉取远端分支 -- 拉取并合并入至本地分支中
git pull origin <branch_name>
推送本地分支
git push origin <branch_name>
分支rebase -- 将当前分支rebase至<branch_name>中
git rebase <branch_name>
快速合并分支 -- 将<branch_name>合并入当前分支
git merge <branch_name>
分支rebase --onto A B C
取出C分支,找出处于C分支和B分支的共同祖先之后的修改,然后把它们在A分支上重放一遍
注:不要对在你的仓库外有副本的分支执行rebase
标签操作
列出标签
git tag
创建附注标签
git tag -a 'v1.0' -m 'v1.0' <commit-id>
显示标签信息
git show <tag_name>
推送所有标签
git push origin --tags
推送指定标签
git push origin v1.0
检出标签到分支
git checkout -b <branch_name> <tag_name>
删除标签
git tag -d <tag_name>
删除远端标签:
git push origin --delete tag <tag_name>
git push origin :<tag_name>