git查看历史版本代码|如何用 Git 将代码恢复到一个历史的版本

❶ gitgui查看历史版本

1. git gui怎么查看文件修改记录

在git中查看历史的命令主要是git log,要查看某个文件的修改历史可以这样:$ git log — begin.txt可以添加不同的选项让输出的内容或格式有所不同。

$ git log -p — begin.txt-p 选项可以输出每次提交中的diff, 但个人感觉会把输出搞得很长、很乱,不容易找到重点。个人比较喜欢的方式是:$ git log –pretty=oneline — filename在log 命令中加入 –pretty=oneline 选项会让结果看起来清爽一些,但是只能看到ments,看不到提交的用户和日期。

2. git gui怎么查看文件修改记录

在git中查看历史的命令主要是git log,要查看某个文件的修改历史可以这样:

$ git log — begin.txt

可以添加不同的选项让输出的内容或格式有所不同。

$ git log -p — begin.txt

-p 选项可以输出每次提交中的diff, 但个人感觉会把输出搞得很长、很乱,不容易找到重点。

个人比较喜欢的方式是:

$ git log –pretty=oneline — filename

在log 命令中加入 –pretty=oneline 选项会让结果看起来清爽一些,但是只能看到ments,看不到提交的用户和日期。

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

我们简单的描述一个例子:a)初始化操作有两个文件file1.txt和file2.txt1, 初始化的时候就有这两个文件操作:git initgit statusgit add .git mit -m “init version”2, 在master分支上修改了file1.txt,并提交操作:(修改file1.txt)git add file1.txtgit mit -m “change file1”3, 然后新建分支banana,并切换到banana分支上操作:git branch bananagit checkout banana4, 修改file1.txt和file2.txt,并提交。

操作:(修改file1.txt和file2.txt)git add file1.txt file2.txtgit mit -m “change by banana”这个时候,我们可以输入 gitk,查看一下当前的版本情况。如下图:git-0015, 然后,切换到master分支上,修改file2.txt,并提交。

操作:git checkout master(修改file2.txt)git add file2.txtgit mit -m “change by master”输入gitk,查看当前版本情况,如下图:git-002b)发现问题需要查看历史版本我们现在发现当前的版本有点问题,还不能提交到版本库。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以上的操作,我们知道了如何查看版本分支,和如何回复到以前的版本。

4. git gui怎么在本地建版本库

git怎么创建本地版本仓库安装git我就不用说了吧!下载地址:/msysgit/msysgit/releases/download/Git-1.9.4-preview20140815/Git-1.9.4-preview20140815.exe 安装完后 点击桌面Git Bash :命令如下$ mkdir testcms$ cd testcms$ pwd/Users/my-pc/testcmspwd命令用于显示当前目录。

在我的机器上,这个仓库位于Usersmy-pcestestcms。 如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

第二步,通过git init命令把这个目录变成Git可以管理的仓库:$ git initInitialized empty Git repository in /Users/my-pc/testcms/.git/瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的开发者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。

不过,不建议你使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责。把文件添加到版本库首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。

版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件。因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

使用Windows的童鞋要特别注意:千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。

建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可:set-utf8-notepad++言归正传,现在我们编写一个test.txt文件,内容如下:Git is a version control system.Git is free software.一定要放到testcms目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。和把大象放到冰箱需要3步相比,把一个文件放到Git仓库只需要两步。

第一步,用命令git add告诉Git,把文件添加到仓库:$ git add test.txt执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。第二步,用命令git mit告诉Git,把文件提交到仓库:$ git mit -m “wrote a test file”[master (root-mit) cb926e7] wrote a test file 1 file changed, 2 insertions(+) create mode 100644 test.txt简单解释一下git mit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m “xxx”行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。

git mit命令执行成功后会告诉你,1个文件被改动(我们新添加的test.txt文件),插入了两行内容(test.txt有两行内容)。为什么Git添加文件需要add,mit一共两步呢?因为mit可以一次提交很多文件,所以你可以多次add不同的文件,比如:$ git add test1.txt$ git add test2.txt$ git add test3.txt$ git mit -m “add 3 files.”现在总结创建git仓库分为三步:第一步 初始化一个Git仓库,使用git init命令。

添加文件到Git仓库:•第二步,使用命令git add ,注意,可反复多次使用,添加多个文件;•第三步,使用命令git mit,完成。这种用命令的方式感觉还是用svn好用,但是对于分布式版本控制来说git是最好的选择。

5. windows下git怎么查看提交历史

1.查看Git日志:

命令:git log 默认不加参数,git日志会按照最新的日期从上往下显示 参数:-p 显示版本间的代码差异

-数字 显示部分的提交

-哈希值 显示指定的版本

2.指定查找范围:

–since=”5 hours” 显示最近5小时内的提交 –since=”5 hours” -1 显示5小时内的最后一个提交 –before 用法和–since的用法差不多,显示的是在某个时间点之前的提交 版本1..版本2 说明:版本1之后到版本2的所有提交,版本2可以用 HEAD(要注意大写)表示当前的最新版本 版本^ 回溯一个版本 注意: 在windows下要加双引号”版本^” ~N: 回溯N个版本

3.查看指定版本之间的差异

git diff 版本号 说明:当前目录树和对应版本号的差异 git diff –stat 说明:统计对应改动的代码量

4.撤销修改

4.1增补修改(只能用于针对最后一个提交)

git mit -C HEAD -a –amend

4.2反转提交

创建一个新的反向的提交来抵消原来的提交

git revert -n HEAD 反转当前版本库最新的提交并且缓存起来。但是不提交

4.3复位

git reset –soft 缓存因复位带来的差异但是不提交,也就是复位到上一个提交前的状态 git reset –hard 同时删除提交 例子:git reset –hard HEAD^ 复位到HEAD之前的那个版本

5重新改写历史记录

什么时候需要改写历史记录?

给历史记录重新排序

多个提交合并成一个提交

一个提交分解成多个提交

git rebase -i HEAD~3

本质上利用的是变基操作,定位到你想变化的范围之前。然后进入编辑器去修改你想修改的部分。完成之后再回到当前的末梢。

6. 怎样使用webstorm查看一个文件在git中的变动

首先,我们打开webstorm软件,然后找到项目里面的同时也在版本库中存在的文件。

打开文件后,我们点击编辑器上方菜单中”VCS”选项,在弹出的菜单列表中选择“GIT”

点击后又会有一个级联菜单出现,里面的选项基本上就是git的一些常见操作,我们选择“show history”选项,来查看文件的历史版本及相应改动。

我们可以看到软件下方有一个弹出的界面有在这个文件名字下面有一个表格,表格的标题依次对应的是“版本号”、“日期”、“作者”、“mit信息”

然后我们随便点击一个版本所在行,就会弹出一个两个版本的文件的比较界面,左边是上一个版本,右边是最新版本

两个版本相比较,以行的变动作为变动,我们可以看到绿色背静的代码是新添加的,蓝色背景的是有改动的部分。

7. windows下git怎么查看提交历史

给历史记录重新排序多个提交合并成一个提交一个提交分解成多个提交git rebase -i HEAD~3本质上利用的是变基操作,定位到你想变化的范围之前.指定查找范围:–since=”5 hours”。

然后进入编辑器去修改你想修改的部分:版本1之后到版本2的所有提交,版本2可以用 HEAD(要注意大写)表示当前的最新版本 版本^ 回溯一个版本 注意: 在windows下要加双引号”:git log 默认不加参数,git日志会按照最新的日期从上往下显示 参数; -1 显示5小时内的最后一个提交 –before 用法和–since的用法差不多:-p 显示版本间的代码差异-数字 显示部分的提交-哈希值 显示指定的版本2..版本2 说明;版本^” ~N: 回溯N个版本3; 显示最近5小时内的提交 –since=”5 hours”.3复位git reset –soft 缓存因复位带来的差异但是不提交,也就是复位到上一个提交前的状态 git reset –hard 同时删除提交 例子:git reset –hard HEAD^ 复位到HEAD之前的那个版本5重新改写历史记录什么时候需要改写历史记录,显示的是在某个时间点之前的提交 版本1.查看指定版本之间的差异git diff 版本号 说明:当前目录树和对应版本号的差异 git diff –stat 说明:统计对应改动的代码量4.撤销修改4.1增补修改(只能用于针对最后一个提交)git mit -C HEAD -a –amend4.2反转提交创建一个新的反向的提交来抵消原来的提交git revert -n HEAD 反转当前版本库最新的提交并且缓存起来。但是不提交41.查看Git日志:命令。

8. 如何使用git gui提交代码

在windows系统客户端安装git工具。

注:如何安装git工具在此不做介绍,如需了解可网上搜索安装介绍。

在“本地文件”中添加“.git文件”,用于git管理。

进入本地文件夹,右击鼠标-单击Git Init Here-生成.git文件夹。

在github创建仓库用于存储管理本地文件,示例:Blog。

点击账号前的加号(Create New)–New repository,根据引导创建一个Blog仓库。

远程添加github上的Blog仓库。

1)进入本地文件夹下-右击鼠标-Git Gui-远端(remote)-Add。

2)获取github中Blog仓库的地址。

3) 在Add Remote窗口中填写名字、Location。

名字:Blog

Location:粘贴刚刚复制的Blog仓库路径

最后单击“Add”。

将本地文件内容即“已缓存的改动”,提交git管理的master分支上。

将本地文件上传到github上去。

单击Git Gui界面“上传”–“上传”窗口随意勾选一个或多个传输选项–点击“上传”–上传Blog过程中需要输入github的登录账号和密码。

在github上查看本地文件Blog项目是否上传成功。

END

注意事项

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

我们简单的描述一个例子:a)初始化操作有两个文件file1.txt和file2.txt1, 初始化的时候就有这两个文件操作:git initgit statusgit add .git commit -m “init version”2, 在master分支上修改了file1.txt,并提交操作:(修改file1.txt)git add file1.txtgit commit -m “change file1”3, 然后新建分支banana,并切换到banana分支上操作:git branch bananagit checkout banana4, 修改file1.txt和file2.txt,并提交。操作:(修改file1.txt和file2.txt)git add file1.txt file2.txtgit commit -m “change by banana”这个时候,我们可以输入 gitk,查看一下当前的版本情况。如下图:git-0015, 然后,切换到master分支上,修改file2.txt,并提交。操作:git checkout master(修改file2.txt)git add file2.txtgit commit -m “change by master”输入gitk,查看当前版本情况,如下图:git-002b)发现问题需要查看历史版本我们现在发现当前的版本有点问题,还不能提交到版本库。1,我们需要从git commit中返回.则输入: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 commit”状态。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管理本地代码版本

那些xml文件是分支配置的文件,使用的话直接init 后再sync就可以了repo init git地址 -b 分支名 -m xml文件名repo sync如果要将本地代码回到某个历史版本直接checkout 或者 resetcheckout 支持将文件切换到历史版本,数据库不会修改,还可以回到你最新的状态reset 是直接回退带指定版本,它有两种模式 一种是只将所有提交回退,修改还在,还有一种模式是完全回退,修改直接就没了。repo forall -c git chekout 指定节点的哈希值repo forall -c git reset 指定节点的哈希值repo forall -c git reset 指定节点的哈希值 –hard (此操作会回退掉指定节点之后的所有修改,如果回退出错 只能重新跟服务器同步了。)希望我的回答能帮助你

❹ 如何用 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 的工作区,暂存区和版本库的各种指针操作的意义,希望对大家有用。


赞 (0)