git删除某一个版本|git 代码上传后怎么回退版本

|

Ⅰ git获取历史版本的几种方式

我们简单的描述一个例子:

a)初始化操作

有两个文件file1.txt和file2.txt

1, 初始化的时候就有首配这两个文件

操作:

git init

git status

git add .

git mit -m “init version”

2, 在master分支上修改了file1.txt,并提交

操作:

(修改file1.txt)

git add file1.txt

git mit -m “change file1”

3, 然后新建分支banana,并切换到banana分支上

操作:

git branch banana

git checkout banana

4, 修改file1.txt和file2.txt,并提交。

操作:

(修改file1.txt和file2.txt)

git add file1.txt file2.txt

git mit -m “change by banana”

这个时候,我们可以输入 gitk,查看一下当前的版本情况。

如下图:git-001

5, 然后,切换到master分支上,修改file2.txt,并提交。

操作:

git checkout master

(修改file2.txt)

git add file2.txt

git mit -m “change by master”

输入gitk,查看当前版本情况,如下图:git-002

b)发现问题需要查看历史版本

我们现在发现当前的版本有点问题,还不能提交到版本库。

1,我们需要从git mit中返回.

则输入:

git reset –soft HEAD^

解释一下,HEAD是当前分支的最新版本。

^表示父节点。

当前节点的父节点,就是上一次提交的版本。

也就是标记为“change file1”的版本。

问为什么不是”change by banana”这个版本呢者扒指?不同的分支哦。

”change by banana”是banana分支的最新代码,和master分支不同的。

这个时候输入

git status

看看,是不是显示file2.txt修改了没有提交呢。

2,我们需要从git add中返回

再仔细查看之后,我们发现file2.txt真的写错了,需要返回到此悔git add之前的状态。

输入:

git reset -q file2.txt

这个时候,file2.txt就回到了解放前了。

用git status查看一下,file2.txt是”change not staged for mit”状态。

3,回到没有做过的情况

我们最终确定,最后一次修改的file2.txt是无用的代码,我们需要废弃掉。

注意,这个操作不能恢复的哦。

git reset –hard

这个命令,不能指定具体的文件。

是把当前的修改全部清除,恢复到最后一次提交的版本。

这个时候,用gitk查看一下:git-003

已经彻底回复到了“change file 1”的版本了。

4,直接回复到某个版本

我们现在切换到banana分支。

git checkout banana

然后用gitk看一下。

可以看出,我们之前的操作,对banana分支一点影响也没有。

现在我们需要把banana分支回复到初始状态,但是当前的改动的代码还是需要留着。

我们可以看,init版本是当前版本的父节点的父节点。

我们可以这么操作:

git reset –soft HEAD^^

然后用gitk看一下:git-004

最近的版本已经变成了init version了。

所有的改动都是add未提交状态。

5,得到当前最新代码

最后。

我们把file1.txt和file2.txt都删掉。

我们需要从版本库中取得当前最新的代码。

很简单:

git checkout master

如果是要banana分支的最新代码,则:

git checkout banana

以上的操作,我们知道了如何查看版本分支,和如何回复到以前的版本。

Ⅱ git如何撤销pull命令。

git撤销pull命令的方法和操作步骤如下:

1、首先,输入1,然后按Enter键进入项目的git存储库所版在的文件夹,如下图权所示。

Ⅲ git 代码上传后,怎么回退版本

总有一天你会遇到下面的问题.(1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.(2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.大致分为下面2种情况:1.没有push这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令resetgit reset [–soft | –mixed | –hard上面常见三种类型–mixed会保留源码,只是将git commit和index 信息回退到了某个版本.git reset 默认是 –mixed 模式 git reset –mixed 等价于 git reset–soft保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.–hard源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)当然有人在push代码以后,也使用 reset –hard <commit…> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突…..所以,这种情况你要使用下面的方式2.已经push对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令revertgit revert用于反转提交,执行evert命令时要求工作树必须是干净的.git revert用一个新提交来消除一个历史提交所做的任何修改.revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.git revert 通常,前几位即可git revert c011eb3git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit看似达到的效果是一样的,其实完全不同.第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

Ⅳ 【学了就忘】Git后悔药 — 34.版本回退操作(三)

git reset –hardcommit-id 命令:回退到指定版本。(hard:强硬,严格的回退)

该命令不仅移动了分支中HEAD指针的位置,还将工作区和暂存区中数据也回退到了指定的版本。

(提示:该命令慎用。)

示例开始:

首先在版本库中的 readme.txt 文件中添加一行内容,并提交该内容。我们的目的就是要再回退到该版本。

1)查看本地版本库日志

2)向 readme.txt 文件中新增一行数据,并提交到本地版本库

3)现在比对工作区与暂存区、暂存区与本地版本库的差异

我们可以看到此时,工作区、暂存区与本地版本库中的 readme.txt 文件状态无差异。

4)开始回退操作,退回到V3版本

使用 git reset –hard HEAD^ 命令,退回到前一个版本。

说明:

HEAD is now at 529ad74 第3次提交,新增内容:readme.txt file v3

意思:HEAD现在位于commit-id为 529ad74 的提交,提交说明为: 第3次提交,新增内容:readme.txt file v3 。

5)回退后,对比工作区、暂存区与本地库中版本中文件的差异

回退后,我们再次对比了工作区、暂存区与本地库中版本中文件的差异:没有内容差异,完全一样。

说明:工作区、暂存区和本地库中的内容,都回退到了之前的版本。(重要)

6)查看本地版本库的提交日志信息

从上我们可以看到:(重点)

7)恢复到回退前版本

上面说了,使用 git reset –hard 命令回退,做了三个操作:

我们现在来查看一下工作目录中的文件状态。

可以看到工作目录中是非常干净的。

所以若要恢复到回退之前的版本,只能使用 git reset –hard 命令回退。

我们查看到, readme.txt 文件的内容已经完全恢复。

Ⅳ 如何用 Git 将代码恢复到一个历史的版本

有些时候,在一些特殊情况下,我们需要将代码恢复到一个历史的提交版本上。而这个历史提交版本,离最新的提交已经比较久远了。比如,我希望将如下的仓库的提交,恢复到上上上上次提交。当然,我可以一次一次的 revert,但是有没有更快更简单的办法呢?暴力的方式如果你的仓库是自己在用(不影响别人),那么你可以使用 git reset –hard <target_commit_id> 来恢复到指定的提交,再用 git push -f 来强制更新远程的分支指针。为了保证万一需要找回历史提交,我们可以先打一个 tag 来备份。对于刚刚的例子,需要执行的命令就是:// 备份当前的分支到 backup_commitgit tag backup_commitgit push origin backup_commit// 重置 source 分支git reset –hard 23801b2// 强制 push 更新远程分支git push origin source -f温和的方式如果你的仓库是多人在协作,那么你这么操作会使用别人本地的代码库混乱,所以只能建一个新的提交,这个新的提交中把想取消的提交都 revert 掉,那么具体应该如何做呢?方法如下:首先,和刚刚一样,用 git reset –hard 23801b2 将代码切换到目标提交的 id。接下来,用 git reset –soft origin/source 命令,将当前代码切换回最新的提交。执行完上面两步后,你的仓库还是最新的提交,但是工作区变成了历史的提交内容,这个时候用 git add 和 git commit 即可。最终完成的效果如下:不过经过念茜的提醒,该方法需要保证 reset 的时候没有别人做新的提交,如果有的话,会一并把别人的提交也撤销了。所以还是挺危险的,慎用。虽然用到的时候很少,但是理解它的原理有助于大家理解 Git 的工作区,暂存区和版本库的各种指针操作的意义,希望对大家有用。

Ⅵ Android studio项目怎么使用git版本返回到上个版本

如果开发当前的项目中,对项目的代码编写错误了,导致这些功能无法返回了,如果对项目没有很好进行管理的话,那么这样整个文件就需要重新开发了,如果有通过git提交代码仓库中,就可以使用git的方法,把对项目版本进行回退上一次提交的版本中,就可以再次对上一个版本开发。1、需要在项目中导入正在开、项目文件,也已提交的项目到仓库中文件,然后就可点击菜单中的“CVS”的选项。2、点击完菜单中CVS的选项之后,就会弹出了一个下拉的菜单中,进行下拉的菜单中的git的选项。3、这样就会弹出了一个下一级的菜单,在下一级的菜单中找到一个为“reset HEAD”的选项,点击进入这个菜单。4、弹出了一个reset Head的选项中,要把项目到电脑中路径的,在git root的进行选择路径。对需要进行回退的版本信息进行确认,可以进行点击“Validate”的选项。5、弹出一个上一个版的提交的过的文件的信息,根据这些文件是否需要把这些的文件回退到当前到项目中,确认完成之后,点击close关闭窗口。6、开始进行对把项目回退到上一个版本中,如果要进行回退到上上一个版本话,可以把to commit的中HEAD~1,就可以回退到上上一个版本,点击Reset开始回退。7、可以通过查看log的信息项目从代码仓库中是否回退成功,可以在log信息并没有提示错误信息,是回退成功的。也可以通过代码的代码来查看是否回退成功。


赞 (0)