git branch #查看所有分支
git branch 分支名 #创建分支
git branch -d 分支名 #删除分支,如果分支存在未merge的提交,删除失败
git branch -D 分支名 #强制删除分支,即使存在未merge的提交
git branch -r #查看远程仓库分支、
git branch -a #查看所有分支,本地 和 远程 仓库
git branch -vv #本地分支与远程分支的对应关系
git branch -m oldname newname #分支重命名
git branch --set-upstream-to=origin/remote_branch your_branch #本地分支与远程分支关联
切换分支 :
git checkout 分支名 #切换分支
git checkout -b 分支名 #创建并切换分支
git switch 分支名 #切换分支
git switch -c 分支名 #创建并切换分支
撤销操作:
git checkout -- filename #丢弃工作区修改modify,恢复到staged状态(--须留空格)
git reset HEAD filename #unstaged,撤销暂存
git reset commitID #重置版本,效果上可以撤销错误的commit
git checkout commitID 和 git reset commitID 区别:
git reset commitID: HEAD->branchname回退到指定版本
git checkout commitID:将HEAD指针指向游离分支!!!
要保存游离分支(匿名临时)上的commit:
1、从游离分支上创建一个新分支newBranch,git branch name,git switch name
2、将新分支merge到开发分支dev上。
3、git checkout dev 回到原开发分支,游离分支消失。
关于git reset --soft --mixed --hard commitI的区别:
git reset --soft commitID:
跳转前后版本间的commit会回退到staged状态。
但是跳转前版本的【工作区】和【暂存区】的内容依然保持不变。
git reset --mixed commitID:
跳转前后版本间的commit会回退到unstaged状态,放到工作区。
跳转前版本的【暂存区】staged的变成unstaged。
跳转前版本的【工作区】unstaged依然不变。
git reset --hard commitID:
跳转前后版本间的commit不再保留,直接切换指针。
切换前版本的【工作区】、【暂存区】内容丢失!!!!
总结:
--hard 模式来回切换会丢失【工作区和暂存区】内容。
--soft 模式切换到以前的版本,版本间commit变成staged,切换前版本的【工作区和暂存区】都会保留,不受影响。
--mixed 模式切换到以前的版本,版本间commit变成unstaged,切换前版本的【暂存区】变为unstaged工作区。
注意:
三种模式下,在保证当前目录干净的条件下,再进行相同模式的切换,不会丢失数据。
切换的模式一定要相同!!!