1、查看分支
git branch
2、创建分支
git branch branch1
3、切换分支
git checkout branch1
注:git log仅会打印当前分支的内容。且创建分支不会自动切换分支。
且新创建的分支独立于当前分支之上。
一、分支合并
当分支不同线路
1、切换回主分支 git checkout master
2、将目标分支与主分支合并 git merge branch1 并输入
问题一:快速前移(不友好的)
当分支仍和master处在同一条线上
解决方案
问题二:合并内容产生冲突
1、当想合并的2个分支,都对同一文件都做了修改,且非祖先级关系。则冲突
并打开文件
解决方案一: 打开冲突的文件 删掉冲突合并后的无用内容,再一次commit提交即可。
解决方案二: git merge --abort (方便)
当你合并完分支到master后,其实该分支就没有任何后期用途了,相当于补丁一样。打完不可能再回退。(已经是正式版本)
2、当想合并的2个分支,对不同文件进行修改,非祖先级。则直接合并。
3、当想合并的2个分支,对同一文件都做了修改,是祖先级关系。则快速前移。
二、分支删除
git branch -d <branchName>
问题一: 未充分合并的分支
如果确定删除未合并的分支,git branch -D branch3
三、撤销大集合
情景一:
当你 git add a.txt 文件给git暂存区管理
突然你不想要git管理文件(即从git仓库删除此文件 )了。
则在暂存区删除它: git rm --cached a.txt
情景二:
当你 修改一个未被加入暂存区的文件,而且修改了多处,你想回到之前的状态。
git checkout – a.txt //-- 前后有空格
注:checkout不会带上分支的指针。
情景三、
当你 修改了1个文件a(之前有提交记录的文件),又创建了1个文件b,你的初衷是进行2次提交,而手误git add .
使用 git reset HEAD a.txt // 取消掉已添加到暂存区的内容,git之前的暂存区有它时使用
情景四:
当你提交commit时,写错了描述。 请紧接着
使用 git commit -m ‘新建1个b文件’ --amend // 替换上一次提交的commit描述
情景五:
当你修改了a,b两个文件时,却只提交了a。
那么 ,先将b放入暂存区 git add b.txt
再git commit --amend,会进入编辑模式,无需改描述,直接:wq
然后git log 发现 a,b已合并,且描述也正确
撤销最近一次提交
git reset HEAD^ // 多少个^代码撤销最近多少次
git reset HEAD~2 // 多少数字代表撤销最近多少次
注:撤销git reset 可以跟文件名 、HEAD(撤销) 、哈希值(找回)
并不是真正的撤销和找回,而是头指针发生变化。
若忘记保留 git log 撤销之前的哈希。则可以
查看提交历史记录 git reflog
如上图,根据历史记录中的哈希去git reset <哈希> 改变指针位置。(即找回由C2指针移动到C3)
图总结:
四、存储及操作
当branch1的暂存区有内容,切换到了branch2 则发现携带着branch1的暂存操作。怎么办?
git stash 存储暂存区及工作目录修改文件 // 即将当前分支的暂存区的内容存储到 stash list中
git stash list 查看存储内容
git stash apply <存储标号> // 取出文件(不放入暂存区)
git stash apply <存储标号> --index // 取出文件(放入暂存区)
git stash drop <存储标号> // 移出存储
注:存储标号默认为最新条
如果存储未追踪的文件。需要 git stash -u
overwritten by checkout
https://blog.youkuaiyun.com/qq_32452623/article/details/75645578