创建版本库
版本回退
-
git log --pretty=oneline
: 将log记录显示为一行,包含版本号及commit信息 -
HEAD
: 表示当前版本,HEAD^
表示上一个版本,HEAD~100
表示前100个版本 -
git reset --hard HEAD^
: 表示回退至上一个版本。也可以通过git log
查询需要回退的版本信息,获取commit id(可以只输入前半部分,git会自动模糊匹配),然后通过git reset --hard commitid
回退至对应版本 -
cat filename
: 可以查看对应文件内容 -
git reflog
: 查看命令历史
撤销修改
git checkout -- readme.txt
: 把工作区readme.txt的修改全部撤销,这里面有两种情况:
- 一种是
readme.txt
自修改后还没有提交到暂存区,现在撤销修改后就跟版本库是一致的; - 一种是
readme.txt
已经添加到暂存区,又做了修改,现在撤销修改后就回到暂存区的状态;
总之就是让这个文件回到最近一次git commit
或者git add
的状态
小结:
- 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。 - 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD file
,就回到了场景1,第二步按场景1操作。 - 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
git rm test.txt
: 删除test文件
Tip: 若删错了,可以通过git checkout -- test.txt
恢复误删文件git rm window -r -f
: 删除window文件夹及其下所有的文件
删除本地分支
git branch -d branchname
: 删除本地分支
删除远程分支
解决冲突
git log -graph
: 可以查看分支合并图
分支管理策略
- 通常,合并分支时,如果可能,Git会用
Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。 - 如果要强制禁用
Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。 -
git merge --no-ff -m 'merge with no-ff dev
: 合并dev分支到当前分支,并且禁用Fast forward
模式。 因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。 - 合并以后,可以通过
git log
来查看分支记录
BUG分支
-
git stash
: 暂存工作区修改 -
git stash list
: 查看工作区暂存内容列表 -
git stash apply
: 恢复工作区暂存内容,但恢复后,stash内容不会删除,需要使用git stash drop
来删除 -
git stash pop
: 恢复工作区暂存内容,并且删除stash内容 -
git stash cleat
: 删除所有的stash - 你可以多次stash,恢复的时候,先用
git stash list
查看,然后恢复指定的stash,用命令:git stash apply stash@{0}
Feature分支
- 如果要丢弃一个没有被合并过的分支,可以通过
git branch -D
强行删除。
多人协作
- 建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name
创建标签
-
git tag
: 新建一个标签,默认是HEAD
,也可以指定一个commit id -
git tag -a
: 可以指定标签信息-m 'blala..' -
git tag
: 查看所有标签 -
git show
: 查看某一标签的详细信息
操作标签
-
git tag -d
: 删除本地标签 -
git push origin
: 推送某一标签至远程分支 -
git push origin --tags
: 一次性推送全部尚未推送的分支至远程 -
git push origin :refs/tags/
: 可删除一个远程标签
git别名
git config --global alias.
: 简化命令
比如: git config --global alias.st status
: 将git status
简化为git st
重命名分支
git branch -m
: 重命名分支
Clone单一分支
git clonr -b
: clone某一分支