如何用git可以得到两个版本之间修改了哪些文件

如何用git可以得到两个版本之间修改了哪些文件,第1张

git diff hash1 hash1 --stat

如果是branch的话

git diff branch1 branch2 --stat

加上 --stat 是显示文件列表, 否则是文件内容diff

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

a)初始化 *** 作

有两个文件file1txt和file2txt

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

*** 作:

git init

git status

git add

git mit -m “init version”

2, 在master分支上修改了file1txt,并提交

*** 作:

(修改file1txt)

git add file1txt

git mit -m “change file1”

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

*** 作:

git branch banana

git checkout banana

4, 修改file1txt和file2txt,并提交。

*** 作:

(修改file1txt和file2txt)

git add file1txt file2txt

git mit -m “change by banana”

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

如下图:git-001

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

*** 作:

git checkout master

(修改file2txt)

git add file2txt

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

看看,是不是显示file2txt修改了没有提交呢。

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

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

输入:

git reset -q file2txt

这个时候,file2txt就回到了解放前了。

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

3,回到没有做过的情况

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

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

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,得到当前最新代码

最后。

我们把file1txt和file2txt都删掉。

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

很简单:

git checkout master

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

git checkout banana

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

cd dev //进入当前路径dev

cd //返回上一级目录

cd - //常看上次目录

pwd //显示当前目录

ls //列出当前目录内容

mkdir dev //新建一个名为dev的目录

rm -rf dev //强制删除dev,不管目录是否为空

explorer //打开当前文件夹图形界面

i 输入正文

:wq 保存后退出编辑状态

:w 保存文件不退出编辑

:q! 不保存文件,退出编辑状态

vim 文件名

git config --global username 'yourname'

git config --global useremail 'youremail'

cd ~/ssh

ls

若出现id_rsa id_rsapub说明已经有ssh key,直接在github中设置即可

若没有

ssh -keygen -t rsa -C 'youremail'来生成,然后直接回车回车

生成成功后,到C盘的user下找ssh文件,打开id_rsapub得到ssh key公钥

1git rm --cached 删除的文件名 (有cached的话只会删除远程仓库不会删除本地文件)

2git commit -m "这是注释"

3git push -u origin master

1git rm 文件名

2git commit -m "这是注释"

git log (查看最近的修改历史)

git reset --hard HEAD^ (回退到上一个版本号 HEAD^^表示上上一个版本号)注意:只是在本地库上修改,如果需要返回上一个版本号,还需要重新push

git reset --hard commit的版本号可以是前六七位 (回退到版本号)

git checkout -- 文件名 (当未放入暂存区时,直接使用,工作区文件发生变化,也可以找回被删除的文件)

git reset HEAD 文件名(当已经放入暂存区,git reset HEAD 文件名,重新放回工作区,在暂存区找不到,工作区不会发生变化,)

git log --pretty=oneline 文件名 (查看文件的改动历史)

关于创建分支:

git checkout -b fenzhi ---创建分支后切换到fenzhi上

git push origin fenzhi --- 将本地分支添加到远程分支上

git push --set-upstream origin fenzhi 为分支制定一个上游分支(在远程仓库上的分支)

在分支上处理数据后:

git add

git commit -m ''

git push

git checkout master ---> 切换到主分支上

git merge fenzhi ----> 合并分支

git push ---->提交到远程仓库

关于密钥生成错误解决

1查询没有密钥:在github中删除原密钥重新生成密钥

2生成密钥过程中出现 Saving key "/path/to/key" failed: No such file or directory

ssh-keygen -t rsa -b 4096 -C ' xxx@gmailcom ' -f ~/ssh/id_rsa -P ""

>

安装git,不同系统安装命令不同

apt-get install git

yum install git

pkg install git

本地创建仓库,在需要的目录执行命令

git init

不执行这个,会找不到本地仓库位置,拉取了也找不到仓库存放。

拉取仓库的代码

git pull 远程仓库地址

发送代码到远程有点复杂,不过也挺简单

发送代码的时候,本地仓库里的代码必须和远程仓库里的代码一样,因为如果不一样,那就乱套了,所以要先拉取,覆盖到本地仓库,用网页在远程仓库新增或修改文件后,需要拉取代码覆盖本地没修改的,否则远程仓库拒绝接受。

添加要发送的文件

git add 文件名称

(git add )代表添加所有文件

添加要上传的文件之后,必须要给文件注释,否则远程仓库拒绝接收。

git commit -m "对文件的解释信息"

最后就可以发送了

git push 远程仓库地址 分支名

弄了2天才弄懂,790431300githubio

以上就是关于如何用git可以得到两个版本之间修改了哪些文件全部的内容,包括:如何用git可以得到两个版本之间修改了哪些文件、git获取历史版本的几种方式、初学git,一些简单的命令 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9446605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存