# 基本操作
建立版本库:git init
查看结果:git status
查看不同:git diff
# 版本回退
查看提交日记:git log
回退:git reset --hard HEAD^
HEAD^
表示上一个版本,HEAD^^
表示前两个版本,HEAD~100
表示前100个版本
恢复:git reflog
查看命令历史,确定回到未来的哪个版本
# 撤销修改
- 直接丢弃工作区的修改时,用命令
git checkout -- file
- 已经添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD <file>
,第二步按1操作。
# 上传
|
|
# 下载
|
|
git clone到当前文件夹
|
|
# 分支管理
# 创建与合并分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
删除分支:git branch -d <name>
合并某分支到当前分支:git merge <name>
- 当Git无法自动合并分支时,就必须首先解决冲突,自己手动修改冲突文件再合并即可。
- 查看分支合并图:
git log --graph
- 使用非快速模式合并,有commit:
git merge --no-ff -m "merge with no-ff" dev
# Bug分支
需要紧急处理Bug时,可以使用git stash
将现在的工作区暂存
恢复原来的工作区
- 恢复但不删除stash内容:
git stash apply
- 手动删除stash内容:
git stash drop
- 恢复且删除stash内容:
git stash pop
可以多次stash,恢复的时候,先用git stash list
查看,然后恢复指定的stash,如:
|
|
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>
命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
# 多人协作
-
查看远程库信息,使用
git remote -v
-
从本地推送分支,使用
git push origin branch-name
-
如果冲突,先
git pull
抓取远程的新提交,处理好后再push
-
在本地创建和远程分支对应的分支:
git checkout -b branch-name origin/branch-name
-
建立本地分支和远程分支的关联:
git branch --set-upstream branch-name origin/branch-name
-
将非直线的提交日记变为直线:
git rebase
# 标签管理
# 创建标签
-
新建一个标签:
git tag <name>
,默认为HEAD
,也可以指定一个commit id -
指定标签信息:
git tag -a <tagname> -m "blablabla..."
-
查看所有标签:
git tag
# 标签管理
- 推送一个本地标签:
git push origin <tagname>
- 推送全部未推送过的本地标签:
git push origin --tags
- 删除一个本地标签:
git tag -d <tagname>
- 删除一个远程标签:
git push origin :refs/tags/<tagname>