这里写目录标题
一、git 新建分支
- 新建分支
git checkout -b 分支名称
- 创建仓库分支
git push origin 分支名称
- 切换分支
git checkout 分支名字
- 查看当前分支
git branch
二、git 将分支修改的暂存在本地
适用场景:合并分支或者切换分支,修改内容无法保存,可以先将内容暂存到本地,然后切换成功后在pop出。
- 分支修改内容暂存本地
git stath
- 将本地分支暂存pop出
git stath pop
三、拉取合并分支流程
-
切换到测试分支
git checkout <切换到需要合并的分支>
-
拉取服务器代码
git pull
-
合并自己的分支到当前分支
git merge <需要合并的分支>
-
将本地dev环境上传至测试环境
git push
四、git reset 和 git revert区别
git reset
- git reset的作用是修改HEAD的位置
- git reset [–soft | --mixed | --hard
--mixed
会保留源码,只是将git commit和index 信息回退到了某个版本.
git reset 默认是 --mixed 模式(git reset --mixed === git reset)
--soft
保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
--hard
源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
-
实现过程:
-
适用场景:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
-
操作:
-
commit后为版本号
git log
-
修改目标版本
git reset --hard '目标版本号'
-
查看版本信息,此时本地的HEAD已经指向之前的版本
git log
-
提交 (git push会报错 因为提交的版本比服务器版本低)
git push -f
-
如果不想解决冲突的话可以取消撤回
git revert --abort
-
git revert
-
原理:撤销某一版本的提交但不影响其他的版本。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。
-
实现过程:
-
操作:
-
查看提交版本
git log
-
指定修改的版本
git revert -n '版本号'
-
提交修改
git add . → git commit -m 版本名
-
推送服务器
git push
-
五、git merge 和 git rebase区别
git rebase
- 原理:先提取当前分支从切换分支到最新提交上的所有更改,将dev分支应用到最新的分支上,并且删除分支的提交内容
- 实现过程:
- 初始状态如下所示,两个分支一个master,一个develop,此时HEAD在(6.added hello.txt file)处,现在执行git rebase develop
- git rebase之前
- git rebase之后
- 总结:将新建分支的内容合并到master最新提交之后,并且应用,删除分支的所有提交内容。
git merge
- 原理:合并两个分支并生成一个新的提交
- 实现过程:
- 假设现在git的HEAD在 6.added hello.txt file 处,master分支最新的提交处,此时执行 git merge develop ,结果如下:
- 合并过程:git会自动找到从master分支新建dev分支的节点(切分支的共同起点),此时merge,git会识别master和dev分支上最新的提交,并且识别的更改的内容,形成一个新的提交,为 7.Merge branch ‘develop’
- 总结:merge是识别请求合并的分支和主分支共同的起点和终点的所有更改,生成一个新的提交
- 假设现在git的HEAD在 6.added hello.txt file 处,master分支最新的提交处,此时执行 git merge develop ,结果如下:
六、git pull 和 git fetch区别
git fetch
-
原理:git fetch是将远程主机的最新内容拉到本地,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
-
某个远程主机的更新全部取回本地
git fetch <远程主机名>
-
取回origin 主机的master 分支:
git fetch origin master
git pull
-
解释:是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
-
应用场景:git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。相对来说git fetch + git merge 这种操作根安全。