git checkout <branchName> 切换分支
git branch <branchName> 创建分支
git checkout -b <branchName> 创建并切换分支
git checkout -d <branchName> 删除分支
git checkout -D <branchName> 强制删除分支
git branch 列出所有的分支,并在当前分支前面有一个*号
git merge <branchName> 合并branchName到当前的分支
git merge <branchName> --no-info -m 'commitId' 禁止fast-forward模式的合并 fast-forward会丢掉分支信息
git log --graph=oneline --abbrev-commit 查看分支图谱
git stash 储存现场,临时开发别的分支
git stash list 查看所有储存的现场,包括stashId
git stash pop 恢复并删除stash的栈顶
git stash apply [stashId] 恢复stashId现场,默认为栈顶
git stash drop [stashId] 删除stashId现场
git remote 查看远程库信息
git remote -v 查看相信的远程库信息
git push <remoteName> <branchName> 提交到远程库
git pull 从远程库获取最近的提交 (冲突时)
branch 和 tag 有很多相似之处,可以一起记忆
git tag <tagName> 给当前分支添加标签 ==> git branch <branchName>
git tag <tagName> commitId 给过去的某次提交后的版本库打标签 commitID使用git log查看
git tag -a <tagName> -m "tag hint" [commitId] 创建带说明的标签
git show <tagName> 查看某个标签的详细信息
git tag 列出所有的标签 ==> git branch
git tag -d <tagName> 删除某个标签 ==>git branch -d <branchName>
git push <remoteName> <tagName> 将某个标签推送到远程库 ==> git push <remoteName> <branchName>
git push <remoteName> --tags 一次性推送全部尚未推送所有的标签
git push <remoteName> :refs/tags/<tagName> 删除远程库中的标签
1.git用master指向最新的提交,再用head指向master,故版本回退只是head和master的移动
2.但你创建新的分支的时候,head又指向了新的分支
3.git merge <branchName>合并branchName分支到当前的分支,有两种模式
(1) fast-forward:只需要把master和head的指针往前移动就可以。
(2)else
4.分支基本操作
git checkout -b <branchName1> 创建并切换分支
------对本地库的修改,详见git教程总结(上) 最后记得add 和 commit
git checkout <branchName2> 切换到上一个分支
git merge <branchName1> 合并branchName到当前的分支
git checkout -d <branchName1> 删除分支
5.冲突
如图所示:master和feature1修改了同一个文件的相同位置,合并的时候会有冲突,必须手动解决这个冲突(可以使用git status查看冲突的地方),查看冲突的文件,git用 <<<<<< 、 ======、>>>>>>来标记不同分支的内容
手动修改这个文件,再次 add commit,就解决了冲突
使用git log --graph可以查看改图
6.分支管理策略
(1).master主分支只用来发布新版本,稳定
(2).dev分支干活,不稳定
(3).修复bug,可以把当前分支git stash(冻结)了
7.多人协作
(1).git clone remoteUrl 克隆远程库之后默认只有master分支
(2).git checkout -b <branchName> <remoteName>/<branchName>
eg. . git checkout -b dev origin/dev 创建远程的dev分支到本地
(3)冲突:你打算push的文件和你小伙伴push的文件有冲突
(4)解决冲突:
a.git pull把最近的提交从远程库中抓取下来,
b.git pull失败,git branch --set-upstream ....(git pull的提示中有)指定本地的分支与远程分支之间的链接
c.git pull 获取
d.打开文件手动解决冲突(手动修改文件内容)
e.add -> commit -> push
8.删除标签
标签尚未推送到远程库,删除本地库标签
$ git tag -d <tagname>
标签已经推送到远程库
首先删除本地库标签: git tag -d <tagname>
删除远程库标签: git push <remoteName> :refs/tags/<tagName>