⑴ 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 命令可以取得指定的历史版本
git co xxxxxxx 就是你git log的时候,看到的hash,也就是某指定版本。
⑶ Git怎么将打了某个Tag的文件全部导出
其实要取得不同的branch的tag,只需要在相应的分支上打tag就行了。这样的tag就唯一对应了不同的分支。
⑷ 怎么用java代码查出git代码的当前版本号
@RequestMapping("/git/version")publicStringgetGitVersion(){try{//需要安装git并配置git环境变量Stringcommand="git–version";//执行系统命令Processp=Runtime.getRuntime().exec(command);//获取命令执行结果,封装在IO流中了BufferedReaderbr=newBufferedReader(newInputStreamReader(p.getInputStream()));String//输出结果Strings;StringBuildersb=newStringBuilder();while((s=br.readLine())!=null){sb.append(s);}returnsb.toString();}catch(IOExceptione){e.printStackTrace();}returnnull;}
⑸ Git当中怎么寻找版本号,并回退以前版本当中的某个文件
简单,git log — your_path即可列出某个路径的changelog,然后进一步查commit记录就可以找到被删掉回的文件记录了比如我答的xalk/grails-app/conf/Config.groovy早已经删掉,但是可以通过git log显示最后一次该文件的递交记录拿到这个commit。git log -1 –decorate — xalk/grails-app/conf/Config.groovy
⑹ 如何将git抓取信息以excel方式导出
编程建议:1、先查找表中不重复的代理商代码;2、然后从刚才的查询结果中依次查询代理商的数据;3、每个代理商的数据导出到一个单独的Excel文件中,并以该代理商的代码命名。这样写应该就行了。如果你不会delphi,我也可以帮你完成这个程序。但是,我不常上线。
⑺ 如何利用git 号作为版本号 c++
首先在本地建立一个文件夹命名为manager.然后打开终端,输入cd ,把文件夹拖到cd后面,回车,输入pwd之后再回车,进入到manager文件夹下,然后开始git指令,第一步git init,在本地建立一个空仓库。之后建立一个文件名为mian.c的文件,touch main.c。在mian.c中手动输入一些文字,然后输入git status查看状态。main.c为红色说明main.c被编辑过了,现在继续编辑准备提交输入int b = 2.现在的main.c是存在工作区的,下一步是要把修改的文件添加到暂存区,git add main.c,不过~回车之后并没有什么变化,继续操作,是把暂存区里的main.c添加到本地仓库中,git commit main.c -m添加了b,如果不添加-m的话会少一个配置,会进入到一个vim模式(不可编辑),并且提示你添加一个文件,这时候需要先输入i,下面会出现一个insert,然后编辑你提交的信息,然后按esc键,在按:wq,保存并退出。所以为了不要这么麻烦,直接在后面加上-m和注释就可以了这样说明已经把修改的内容成功提交到本地仓库了!下一步,如果想回到某个版本怎么办看首先git log,看一下日志信息,或者git reflog.git log下可以看到一个40位的哈希值,这里你可以把它当做序列号就好了,也就是你的版本号。而在git reflog下,只显示你版本号的前7位,其实用的时候就用这前7位就够了。如果想回到某个版本,只需要git reset –hard 版本号就可以了在打开你的main.c你会发现他回到了你需要的地方.还有一个指令可以看到你修改的地方:首先编辑你的main.c,然后输入git diff mian.c,你会看到效果的.好了,git建立本地仓库就到这里,还有很多命令没介绍到,以后用的时候还要多多练习!
⑻ 有没有方法可以从git远程版本库里直接下指定版本的一个文件
你pull的时候,后面直接带hash版本就是。不能只下载一个文件。如果是github,你不如直接上去下载那个文件的raw格式。
⑼ 如何将SVN的版本库通过git导出代码
其实,很多人都不care谁写了Git,只在乎它是免费而且好用的!So do I!下面开始我们的学习:1.Git安装(略)。2.创建版本库首先,选择一个合适的地方(我选择了D盘,我的电脑是Win 7),常见一个空目录:$ mkdir Git$ cd Git$ pwd//显示当前的路径/d/Git注:Windows下,路径名不要包含中文,因为Git对中文支持不给力!第二步,通过git init命令把这个目录变成Git可以管理的仓库:12$ git initInitialized empty Git repository in /d/Git/.git/这样就创建了你的Git仓库。接下来,我们上传一个文件到Git。编辑一个readme.txt文件,内容如下:Git is a distributed version control system.Git is free software distributed under the GPL.Git has a mutable index called stage.Git tracks changes of files.将其放到/d/Git目录下,因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。将一个文件放到Git仓库需要两步:(1)使用git add将文件添加到仓库:1$ git add readme.txt(2)使用git commit将文件提交到仓库:git commit -m "wrote a readme file"[master 48b9a84] wrote a readme file1 file changed, 2 insertions(+)注:git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。commit可以一次提交多个文件:$ git add file1.txt$ git add file2.txt$ git add file3.txt$ git commit -m "add 3 files."3.Git的命令很多,下面再学习几个吧!继续修改readme.txt文件:Git is a distributed version control system.Git is free software.git status命令看看结果:$ git status# On branch master# Changes not staged for commit:# (use "git add <file>…" to update what will be committed)# (use "git checkout — <file>…" to discard changes in working directory)## modified: readme.txt#no changes added to commit (use "git add" and/or "git commit -a")git status查看仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:123456789$ git diff readme.txtdiff –git a/readme.txt b/readme.txtindex 46d49bf..9247db6 100644— a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is a version control system.+Git is a distributed version control system.Git is free software.git diff查看不同!在工作中,我们可能提交了几千个文件,如果想看历史记录,可以使用git log命令:123456789101112131415161718$ git logcommit Author: Michael Liao <[email protected]>Date: Tue Aug 20 15:11:49 2013 +0800append GPLcommit Author: Michael Liao <[email protected]>Date: Tue Aug 20 14:53:12 2013 +0800add distributedcommit Author: Michael Liao <[email protected]>Date: Mon Aug 19 17:51:55 2013 +0800wrote a readme file<br>………………………………………………………………………………<br>………………………………………………………………………………commit Author: lixiaolun <[email protected]qq.com>Date: Thu Jan 15 22:06:05 2015 +0800wrote a readme file(END)注:最后你可能会碰到这个(END),此后你怎么点都没有用。那么现在你要输入:wq或:q退出。这个命令同linux指令。git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 –pretty=oneline参数:123456789101112131415$ git log –pretty=oneline commit a file readme text1.txt commit wrote a readme file 2015-1-30 upload local_gitgub remove text1.txt remove text.txt add test.txt git tracks changes add 3 text.txt understand how stage modify reamde.txt add a new word distr wrote a readme file友情提示:你看到的一大串类似3628164…882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。时光穿梭之版本回退!!如果你提交的一个文件,发现还不如你你上一个版本好,赶紧回退!怎么做呢?首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。回退到上一个版本的命令git reset:1$ git reset –hard HEAD^–hard参数有啥意义?这个后面再讲,现在你先放心使用。查看文件命令cat readme.txt:123$ cat readme.txtGit is a distributed version control system.Git is free software distributed under the GPL.git reflog记录了每一次命令:$ git reflogea34578 [email protected]{0}: reset: moving to HEAD^3628164 [email protected]{1}: commit: append GPLea34578 [email protected]{2}: commit: add distributedcb926e7 [email protected]{3}: commit (initial): wrote a readme file前面的数字是commit id。知道commit id可以回退上一次执行的命令,回退命令为git reset –hard <commit id>:1$ git reset –hard 3628164