玩转Git

233 阅读3分钟

前言

先来说说 Git 的由来,Git 是一个版本控制软件,最初是由Linux之父——林纳斯·托瓦兹 为了更好的管理 Linux 内核代码而编写的。当时 林纳斯 要合并来自其他 Linux 开发者的代码,维护整个 Linux 内核,万一合并代码后出了问题,那么就需要上一个版本的代码,如果是单纯的每个版本都复制保存一份,就需要很多很多代码版本,并且对于频繁的修改,这样手动操作太繁琐了而且也容易出错,所以版本控制就显得非常的必要。

下面将自己常用并且觉得还不错的git命令记录一下,以便回顾学习,建议收藏。

git代码回滚

git revert -m 1 commit_id

撤销某次git操作尽量用revert,如果确定是要删除某些提交再考虑用reset。
建议新建分支去回滚,避免影响个人开发分支

git切换远程仓库

git remote -v // 查看

git remote rm origin // 删除

git remote add origin url // 添加

回滚到指定的一个commit号

前言

我们在开发过程中避免不了代码历史记录回滚的情况,我们最近就遇到了这样的问题, 在项目上线以后出现了线上bug,但发现没有一个分支是对应线上代码的,问题出现在release代码上线后没有及时合并到master分支上,后续工作又在release上进行。

解决

git checkout master

git merge release

git reset --hard commit_id

git push origin HEAD --force

讲解

回退命令:

$ git reset --hard HEAD^         回退到上个版本

$ git reset --hard HEAD~3        回退到前3次提交之前,以此类推,回退到n次提交之前

$ git reset --hard commit_id     退到/进到 指定commit的sha码

强推到远程:

$ git push origin HEAD --force

git push提交成功后如何撤销回退

前言

我们在使用Git进行版本控制时,有可能会出现这种情况。git push后发现提交的内容不是想要的,这时候我们怎么做呢,提交上去的内容是没有删除按钮的(比如github,或码云)。所以我们需要一些手段将提交上去内容撤销下来。

解决

首先将本地的内容回退到自己想要的版本。回退版本我一般使用

git reset

其中这条命令中又分为两种

git reset --hard git reset --soft

注意上者的区别,在说这两者区别前,我们首先要明白一个东西,commits,它在git中扮演了一个重要角色,我们平常用的一些操作git clone ,git commit 都会产生commits,通俗的讲这个就是版本号,但是git reset并不会产生commits(不是不会产生,而是会产生 但是都是一样的),我们可以先看看自己项目中的commits,使用如下命令

git reflog

image.png

看到没前面那一串数字就是commits,所以git reset可以看成不产生commits,它只是改变了当前HEAD指向的commits。


时刻怀有一颗虔诚之心,乐于分享。知识才更有意义。