日常工作中,个人总结的 - Git - 常用操作方法 (七)

344 阅读2分钟

工作中,多人提交代码总会遇到各种冲突,忐忑,怕合并错误,退不回

链接 :技术来源大佬感谢廖雪峰大佬

前提 我当前工作中,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 id1094adb...,回到未来的某个版本,版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了
    $ git reset --hard 1094a
    HEAD is now at 83b0afe append "巨慌"

如果第二天,想恢复到新版本怎么办,但是昨天的上面的命令行窗口已经关掉了,我的commit id不知道是多少,因为从以前的版本去到未来的版本一定要知道commit id,Git提供了一个命令 git reflog 用来记录你的每一次命令

  • git reflog ----- 好强,append 巨慌的commit id1094adb,看记录得出,你又可以回到未来了
    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前端

(我们的宗旨是,为了加班,为了秃顶……,仰望大佬),希望小伙伴们加群一起学习