git 新建、切换分支
- 当前活跃分支
- git branch:列出当前所有分支,用(*)凸显当前活跃分支。
(code) 111@111-PC:~/code$ git branch
* lyq-favicon
master
- git checkout:改变当前活跃分支
- 创建分支
- 为当前提交创建分支
> git branch lyq-favicon
- 为任意一批提交创建分支
> git branch new-branch 48b6fd32e
- 从现有分支中创建分支
> git branch new-branchc older-branch
- 切换到新分支:git checkout lyq-favicon
- 创建新分支:git checkout -b lyq-favicon
checkout 操作被拒绝
在分支之间来回切换,工作区存在修改,切换分支失败
- 提交修改并切换
> git commit --all
> git checkout lyq-favicon
- 放弃这部分修改并进行切换
- 可以用–force 选项进行强制切换,但会令这部分修改被覆盖
> git checkout --force lyq-favicon
- 储藏修改并切换
- 可以用stash命令先将这部分修改储藏起来,然后再进行切换,之后再用git stash pop 命令来恢复
> git stash
> git checkout lyq-fav
- 重置分支指针
> git reset --hard 12e34w
- 该指针被重置到了提交12e34w 所在的活动分支上。其中–hard 选项用于确保工作区和暂存区也都会被设置到提交12e34w的状态。
- git reset --hard 命令会覆盖当前工作区和暂存区中的所有修改,所以在执行重置之前先用git stash 命令存储一下修改。
删除分支
- 删除分支
- 删除一个已被中止的分支
> git branch -d lyq-favicon
- 删除一个打开的分支
> git branch -D lyq-favicon
- 恢复被删除的分支
- (在已知提交的散列值的情况下)恢复某个分支
> git branch lyq-favicon 245dcf6
- (未知情况下)先确定相关的提交散列值
> git reflog
> 87f0079 (HEAD -> lyq-favicon, origin/lyq-favicon) HEAD@{0}: commit: blue.png
> a2dcdb7 (origin/master, origin/HEAD, master) HEAD@{1}: checkout: moving from master to lyq-favicon
> a2dcdb7 (origin/master, origin/HEAD, master) HEAD@{2}: pull: Fast-forward
> 4f06ef5 HEAD@{3}: checkout: moving from lyq-delete to master
> a8e29db (origin/lyq-delete) HEAD@{4}: commit: delete import1
> 7e6d2a7 HEAD@{5}: commit: delete import
> 4f06ef5 HEAD@{6}: checkout: moving from master to lyq-delete
- (通过reflog 命令找到的散列值)恢复该分支
> git branch lyq-favicon HEAD@{1}
清理提交对象
- gc命令(gc指的是垃圾回收)可用于清理版本库,移除所有不属于当前分支的提交对象;
- 如果想净化自己的版本库,可以先将它克隆一份,并删除其源版本库。