1.分支管理
创建分支
git branch xxx分支 #创建
git checkout xxx分支 #切分支
git checkout -b xxx分支名字 #创建并切分支
查看分支
git branch
命令不只是可以创建与删除分支。 如果不加任何参数运行它,会得到当前所有分支的一个列表
git brancn #查看本地分支
git brancn -a #查看所有分支
--merged
与 --no-merged
这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。 如果要查看哪些分支已经合并到当前分支,可以运行 git branch --merged
git branch --merged #查看哪些分支已经合并到当前分支
git branch --no-merged #查看所有包含未合并工作的分支
合并分支到当前分支
git merge xxx分支名字
删除分支
git branch -d # 删除已合并的分支,有未合并代码不允许删除
git branch -D # 强制删除有未合并代码的分支
git push origin --delete dev_new #删除远程分支
2.忽略文件
语法
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
/aa/ 过滤整个aa文件夹
*.zip 过滤所有.zip文件
/aa/index.html 过滤具体文件
*.[ab] 过滤*.a和*.b文件
!abc.html 该文件(目录)除外
新建忽略文件.gitignore 写入规则后,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
参考文章:Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍 - morphues.zee - 博客园
3.冲突解决
当修改多人或多分枝修改同一个文件时 会发生冲突
CONFLICT (content):XXXXXXXXX
冲突解决
git pull (--rebase)命令获取最新的版本后对修改人员对冲突文件进行讨论并修改
4.rebase 命令
git merge
将分支1和分支2的更改进行组合,并产生一个新的commit,该commit包含两个分支所有的更改
git rebase
先取消掉分支2与分支1从最后一个都有的节点开始的所有的提交,然后使用快速合并将分支1合并到分支2,此时分支2的HEAD指向分支1最后一个提交,然后再将被取消掉的分支2的更改添加上去,这样便形成了一个看上去似乎就像是先写了分支1的内容,再写了分支2的内容,而没有合并过的样子。
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
git pull
默认为merge方式合并,git pull --rebase是以rebase的方式进行合并分支。
假如有两次提交
此时 有两分支同时在B基础上进行提交 就会产生冲突
1.git merge
用git merge 命令把其他分支上的修改本地提交合并(merge)成版本E,但这样会形成图中的菱形,让人很困惑。
2.git rebase
创建一个新的提交E,E的文件内容和上面E的一样,但我们将D提交废除,当它不存在。由于这种删除,避免了菱形的产生,保持提交曲线为直线。
参考文章:Git 冲突处理 - 简书