python git操作、安装及git误操作版本找回

您所在的位置:网站首页 python安装github库 python git操作、安装及git误操作版本找回

python git操作、安装及git误操作版本找回

2024-01-10 18:56| 来源: 网络整理| 查看: 265

为什么标题中有python那,因为python比git好理解多了。所以,据我了解,好多学会python的,好不容易找到了工作,却因为对git很陌生,结果没过了试用期。你要知道,在工作中大家都是协同开发的,那么代码怎么来共同维护那?git就帮助我们很好的解决了这个问题。

git是什么?github是什么?

不知道你们刚接触git的时候对这个两个词迷不迷,反正我是迷了。现在我要介绍git,肯定是要先帮你们把这两个概念说清楚。 git:是一种版本控制系统,是一种代码版本控制的工具,也是一个命令,可以离线操作,本地仓库,可以离线管理。 github:是一个网站,是一个基于git实现的在线代码版本控制系统,不可以离线操作,远程仓库可以远程托管自己的代码。 git可以通过命令把自己的代码与github上的同步,也就是本地仓库和远程仓库代码可以协同工作。本地的你可以自己怎么修改都行,要与团队同步的时候,你只要把确定无误的本地的修改提交就ok了。

git的简易安装 检查自己用的系统上是否装有git,输入git,看弹出内容,聪明的你可以自行判断有没有安装了。git的各个版本的具体安装在这里就不多叙说了,很简单。特别的如果你用的刚好是linux系统的话,一般一条命令就可以了。sudo apt-get install git 老一点的Debian或Ubuntu Linux,要把命令改为sudo apt-get install git-core,因为以前GNU Interactive Tools有也叫git,结果git就只能叫git-core了。后来随着git越来越有名,GNU Interactive Tools就被改成gnuit,git-core自然而然就是git了。

从创建本地仓库开始:第一个git命令git init 创建本地仓库,其实这里的仓库就是一个文件夹,用git管理之后自然就成了我们的版本库了,创建的版本库的位置你可以随意定,首先在你喜欢的地方创建一个文件夹,下边是我的文件夹,在没有成为git仓库之前,就是一个普通的文件。

这里写图片描述

之后介绍我们第一个git命令:git init 初始化版本库,git init 后的文件结构,多了.git说明你的git仓库已经创建成功,用ls是看不到.git这个目录的,因为这个目录是隐藏的,隐藏的原因就是不想让你乱修改,所以尽量不乱改,以免把仓库破坏,现在hello_git这个文件夹就是我们的git仓库了。

这里写图片描述

现在这个仓库是空的,git也没有开始帮你追踪相应的文件。我们下面创建一个readme.txt,当然这个readme.txt一定要在你刚刚创建的仓库的文件夹或者子文件夹下,不然git再强大也不能帮你追踪的。

通过git status来引出另外的个命令 git add 和 git commit,添加新文件到本地仓库 git status 查看当前仓库的文件更改的记录和状态,输入之后就会显示。通过命令git status的操作之后,会显示当前git仓库的所有文件动态。 untracked files下边跟的是我刚刚创建的readme.txt,这就是新建的文件和git仓库还没有关联的。这时候我们的这个文件是处在工作区的。下边我们通过git add readme.txt这条命令,把文件添加到暂存区,现在文件是在暂存区,再按git status 会显示待提交,因为改动已经被暂存区保留。下一步 git commit -m 提交了readme.txt,-m后边跟着你更改的内容,养成好的习惯一定要写。上边的一系列操作,就完成了新建文件夹提交到本地版本仓库,并且这个文件已经被追踪,所有的更改都将被git记录,截图如下。

这里写图片描述 在工作中,还有一步就是push到你们公司代码托管的总的网上的仓库,后边讲。 下面我修改readme.txt,并且新建readme2.txt,之后看下git status的状态。

这里写图片描述

上边显示的是被追踪了的文件的修改,提示我修改了但是没有添加到暂存区,第二个是新文件,并没有追踪修改。 之后把这两个修改都提交: git add reademe.txt reademe2.txt 可以这样写,也可以git add . 把所有的更改一次性添加到暂存区。 这里写图片描述

通过git diff 文件名来查看修改文件的具体内容 查看修改的内容,git diff,比如我们在reademe.txt添加内容,然后看看我们修改了什么,为了防止我们之前修改的内容时间过长了,不知道修改了什么,用git diff就可以看到底哪里被改动了,之后决定到底要不要提交。 这里写图片描述 下边+hello python就说明我们在readme.txt的最后增加了hello python,如果是-hello python 就说明我们删除了这一行。截图就不上了,你们可以自己做测试。

工作区,暂存区,本地仓库,远程仓库理解

工作区:工作区很好理解,就是你的git仓库根目录下的所有文件以及文件夹,我的就是hello_git文件夹下的所有区域,只要有变动,git status就会有记录。

暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),git add 之后就是把更改提交到暂存区。

本地仓库:git commit 之后就把暂存区的文件添加到本地仓库,当我们初始化一个git仓库时,git会自动创建一个master分支和一个指向master的HEAD指针。 其实提交到本地仓库的代码一共是经过了三个地方:工作区 add 到暂存区 commit 到分支(这里是master分支)。

远程仓库:push操作后,会把本地的修改提交到远程仓库。

以上说的都是正向的操作,下面说点撤回的,工作中难免出点小失误。

用到的git命令 git checkout – file, git reset (–hard) file, git reflog 下面分几种情况介绍撤回操作。

现在你处在工作区,修改readme.txt,你准备提交之前检查了文件。文件多加了点没用的东西,比如说加了一句I am the most handsome man in the world。因为在工作区,你可以手动删除这句,手动恢复成原来的样子。不过在你修改过后可以试一下git status,下图所示,添加一两句手动修改还可以接受,但是如果你把整个文件改的乱的不要不要的,那么就要通过git checkout – file来进行恢复了,其实git已经很友好的进行提示你,可以用git check out 丢弃工作区的更改。

这里写图片描述

git checkout – readme.txt之后 git status查看更改内容,现在已经是干净的工作区了。下面我们是不仅添加了这句话,已经add到了暂存区,又作了修改,现在checkout撤销修改就回到添加到暂存区后的状态。总结就是checkout就是当前文件修改了之后,checkout就会把当前文件回到上一步的状态,没有add回到版本库一样,add之后修改回到add之前的状态,commit之后修改就回到commit之前的状态。 注意:git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令。

假如你把修改之后的文件add到了暂存区,还没有commit,并且想回到没有修改的状态,那么就要用到git reset了。下图命令详解:刚开始显示readme.txt在暂存区等着被commit,然后我们需要把修改的文件撤回,首先通过git reset HEAD readme.txt,把文件从暂存区拉到工作区,现在git status就看到了现在的文件回到了工作区,并且显示已经修改。看下已经回到工作区,可以任我们摆布了,你可以手动删除,也可以checkout,好吧随你的开心。然后git status,打开文件看下,I am the most handsome man in the world这句话已经没有了,好吧,我的内心毫无波澜,并且有点想笑! 这里写图片描述

如果你修改了,add了而且还commit了但是并没有push,还好,可以挽回你想要回复到未修改之前的内容,那么就要用到版本回退了。我这里介绍使用git reflog来恢复。git reflog之后我们可以看到输出信息前边显示的是commit id的简化版,这就够了,这就是每个版本的记录。接下来我们可以根据id进行版本之间的回复了。通过git reset –hard HEAD^因为HEAD本身指的是当前版本加上^之后就是回退到上一个版本,也就是commit id是af1707c这个版本。注意查看我们添加的内容已经没了,然后你又想了想,这一句还挺重要的,还是加上去把。那么还可以根据id来回复,命令如下git reset –hard 882032f,又回到了添加的时候的状态了。那么现在你就可以根据id来进行commit之后的不同版本之间的自由穿梭了吧,有的博客中可能会给你这个操作,–hard这个参数可能没说清楚,会导致你的本地文件丢失,如果你恢复a版本的时候加了–hard HEAD没加特别指定的文件名字,就代表硬盘上的所有文件全部同步到a版本,那么你再工作区的修改的其他文件就也会对应更改,甚至新建的文件会丢失,所以在没有commit之后慎用–hard,git reset commit id就行了。 这里写图片描述

根据文章和截图你能理解所有操作,在工作中使用git的命令就游刃有余了。真正的工作中使用最多的就是git status git add git commit git push了,由于时间和篇幅有限,git的远程连接,clone,push等,以及github仓库搭建与本地关联部分之后抽时间会更新。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3