这里写目录标题
- 1 版本回退
- 2 工作区、暂存区、本地仓库、远程仓库
- 3 分支合并
- 3.1 Fast-forward
- 3.2 Recursive
- 3.3 Ours & Theirs
- 4 处理冲突
- 5 git stash 存储工作区
参考:https://www.liaoxuefeng.com/wiki/896043488029600
1 版本回退
原文链接:https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192
首先 git log 查看提交记录
在Git中,用 HEAD
表示当前版本
上一个版本就是 HEAD^
,上上一个版本就是 HEAD^^
,往上100个版本写成 HEAD~100
要把当前版本回退到上一个版本,就可以使用 git reset
命令:
git reset --hard HEAD^
git reset --hard commit的id
(如果使用cmd命令行,第一种要加引号:git reset --hard "HEAD^")
当前文件内容:
输入回退命令后:
如果想要回到我的最近版本:
git reset --hard 70597932a3e34eab2fd8c2eae42dd5520e3351c6
2 工作区、暂存区、本地仓库、远程仓库
工作区: 工作区就是你克隆项目到本地后,项目所在的文件夹目录。
暂存区: 用于存储工作区中添加上来的变更(新增、修改、删除)的文件的地方。操作时,使用git add .会将本地所有新增、变更、删除过的文件的情况存入暂存区中。
本地仓库: 用于存储本地工作区和暂存区提交上来的变更(新增、修改、删除)过的文件的地方。操作时,使用git commit –m “本次操作描述” 可以将添加到暂存区的修改的文件提交到本地仓库中。
远程仓库: 简单来说,就是我们搭建在服务器上的 git 远程仓库(如 github )。操作时,使用git push origin 分支名称,将本次仓库存储的当前分支的修改推送至远程仓库中的对应分支中。
3 分支合并
https://zhuanlan.zhihu.com/p/192972614
3.1 Fast-forward
Fast-forward 是最简单的一种合并策略,如上图中将 some feature 分支合并进 master 分支,Git 只需要将 master 分支的指向移动到最后一个 commit 节点上。
Fast-forward 是 Git 在合并两个没有分叉的分支时的默认行为
Fast-forward方式实操过程: https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480
3.2 Recursive
Git 在合并两个有分叉的分支时的默认行为,会递归寻找路径最短的唯一共同祖先节点,然后以其为 base 节点进行递归三向合并
如下图这种简单的情况,当我们要合并中间两个节点的时候,找到他们的共同祖先节点(左边第一个),接着进行三向合并得到结果为 B
3.3 Ours & Theirs
4 处理冲突
https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344
git_stash__61">5 git stash 存储工作区
https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136
若当前正在 dev 上进行开发,突然收到 bug 修改任务,要在分支 issue-101 来修复。但是当前正在dev上进行的工作还没完成,不能提交。
Git提供了一个 git stash
功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
执行 git stash
后,用 git status
查看工作区,就是干净的
然后我们切换到分支 issue-101 修复 bug ,修复完成后,是时候接着回到 dev 分支干活了!
回到 dev,工作区是干净的,刚才的工作现场存到哪去了?用 git stash list
命令看看工作现场
然后用 git stash pop
,恢复工作现场,同时删除 stash 内容
再用 git stash list
查看,就看不到任何stash内容了