工作中,多人提交代码总会遇到各种冲突,忐忑,怕合并错误,退不回
链接 :技术来源大佬感谢廖雪峰大佬
前提 我当前工作中,
git rebase冲突,二话不说先git rebase --abort保命……,立即取消当前rebase怕合错大佬的代码。太慌了……
git add .git commit -m "慌"- …… 此处省略好多,commit……
git log---- 查看你commit版本控制的历史记录,显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append 巨慌,上一次是add 很慌,最早的一次是wrote 慌。。。
$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: -------
Date: Fri May 19 23:00:15 2019 +0800
append "巨慌"
commit e475afc93c209a690c39c13a46716e8fa000c366
Author: -------
Date: Fri May 19 19:03:36 2019 +0800
add "很慌"
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: -------
Date: Fri May 19 12:00:18 2019 +0800
wrote "慌"
git log --pretty=oneline----- 如果嫌输出信息太多,可以这样,前面那个是commit id(版本号),巨有用,可以用来回退和前进版本,每commit一次都会有个不同的ID
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append 巨慌
e475afc93c209a690c39c13a46716e8fa000c366 add 很慌
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote 慌
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100, 版本也就是提交
94adb...这类的id
git reset --hard HEAD^---- 把当前版本append 巨慌回退到上一个版本add 很慌
$ git reset --hard HEAD^
HEAD is now at e475afc add 很慌
git log--- 看现在版本库的状态, 最新的那个版本append "巨慌"已经看不到了
$ git log
commit e475afc93c209a690c39c13a46716e8fa000c366 (HEAD -> master)
Author: -------
Date: Fri May 19 19:03:36 2019 +0800
add "很慌"
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: -------
Date: Fri May 19 12:00:18 2019 +0800
wrote "慌"
git reset --hard 1094a---- 只要上面的命令行窗口还没有被关掉, 找到那个append "巨慌"的commit id是1094adb...,回到未来的某个版本,版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了
$ git reset --hard 1094a
HEAD is now at 83b0afe append "巨慌"
如果第二天,想恢复到新版本怎么办,但是昨天的上面的命令行窗口已经关掉了,我的
commit id不知道是多少,因为从以前的版本去到未来的版本一定要知道commit id,Git提供了一个命令git reflog用来记录你的每一次命令
git reflog----- 好强,append 巨慌的commit id是1094adb,看记录得出,你又可以回到未来了
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append 巨慌
e475afc HEAD@{3}: commit: add 很慌
eaadf4e HEAD@{4}: commit (initial): wrote 慌
突然master分支出现新问题,本地master分支和版本库里的master分支的内容不同,但要以版本库里的master分支内容为主,需要强制覆盖本地代码(与git远程仓库保持一致)
git checkout master---- 先切换到master主分支
git强制覆盖:
git fetch --all
git reset --hard origin/master
git pull
更新远程分支列表
git remote update origin -p ----- 这条指令就能更新远程最新的分支列表了
git branch -a ---- 可以看到本地和远程分支列表
总结
- Git的版本指向当前版本的HEAD指针,你让HEAD指向哪个版本号,你就把当前版本定位在哪
git log--- 可以看下你commit过的历史记录,你可以回到以前的版本git reflog---- 可以查看查看命令历史,让你可以回到未来
结语
前端react QQ群:
788023830----React/Redux - 地下老英雄前端交流QQ群:
249620372----FRONT-END-JS前端(我们的宗旨是,为了加班,为了秃顶……,仰望大佬),希望小伙伴们加群一起学习