Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://git-scm.com/book/zh/

大家好,又见面了,我是你们的朋友全栈君。

本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://git-scm.com/book/zh/v1)。本篇博客以及后边的将要发的几篇博客是对之前看ProGit时的笔记的整理。当然在整理时,根据具体示例来梳理了一下知识点,和ProGit上的讲解顺序有些区别。本篇博客聊了Git基础操作的一部分,主要是基于Github上Fork的Masonry仓库来做的,首先Clone相关仓库,然后根据git status命令的提示引出了一系列的命令操作。

Git的原理就不做过多赘述了,ProGit上聊得挺好。不过还是要聊一下集中版本控制系统和分布式版本控制的区别。在版本管理中主要包含集中化的版本控制系统 (Centralized Version Control Systems,简称 CVCS) 例如 CVS、Subversion 以及 Perforce 等 ,和分布式版本控制系统(Distributed Version Control System,简称 DVCS), 例如Git、Mercurial、Bazaar 以及 Darcs  。DVCS的特点为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。 其中文件的状态主要包括已提交(committed)、已修改(modified)和已暂存(staged) 的。这些东西就不细说了,先看一下git的命令的一些操作。

备注:接下来的几篇博客的终端操作都是在 Mac 上使用的 ITerm完成的,终端上装的是oh-my-zsh (https://github.com/robbyrussell/oh-my-zsh)

 

一、获取远程仓库

为了方便做一些git相关的基础操作,就是使用在github上Fork的Masonry的仓库做实验吧,然后基于此Fork的仓库来展开接下来的相关内容。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

第一步要做的就是将远程仓库中的代码克隆到本地,git clone 命令做的就是这件事情。其后边跟的参数就是上述截图中的地址,其具体操作如下所示:

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

在第一部分我们就先简单的看一下 git clone 的演示操作。首先使用了git clone 命令将远端的代码以及相关分支信息clone到本地,然后在本地进行了一次提交(git commit), 最后将提交push到远端。在接下来的几篇博客中会陆陆续续的介绍到,在此就先不多说了。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

 

二. 由 git status 命令引起的其他命令

我们可以使用 git status 命令来查看相关文件的状态,在下方的操作中首先我们对README.md文件使用vim编译器进行修改并保存, 然后创建了一个名为NewCreateFile的文件。并使用git status命令来查看其相关的状态。

从下方输出的结果中不难看出README.md的文件状态为 modified, 也就是被修改了,更详细的提示为 “Changes not stagged for commit”, 也就是说文件被修改了,但是还没有在提交(commit)前进行存储(staged)。并且给了相关的提示,可以使用 git add <文件名>命令进行存储,或者使用 git checkout — <文件名> 命令放弃在工作目录中的修改。

而我们刚创建的 NewCreateFile 文件处于Untracked (未被跟踪的状态),并且可以使用git add <文件名>来将该创建的NewCreateFile添加到可以被提交(commit)的内容当中去。并且还给出了一条建议,可以对 NewCreateFile 文件使用 git commit -a 来直接进行提交。

如果你对git的各种状态比较熟悉了,也可以使用 git status -s 来查看简写的状态,这种简写的状态和SVN上的差不多 M – 被修改,A – 被添加,D – 被删除,R – 重命名,?? – 未被跟踪 等等,下方遇到其他的状态符号时在一一解释。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

根据上面git status命令的提示内容,我们至少可以得到三种命令的使用方式:

  • 暂存文件的命令:
    git add <文件名>

  • 放弃未暂存文件的修改命令:
    git checkout — <文件名>

  • 将被修改的文件暂存并提交的命令:
    git commit -a 

 

1、git add

接下来我们可以看一下git add的命令,下方分别将上述两个文件进行了add, 也就是将文件进行暂存。暂存后,使用了git status命令查看状态,提示这些修改可以被提交了,并且还可以使用 git reset HEAD <文件名>来取消相关文件的暂存。使用 git status -s 命令来查看 状态标记由原来的红色改成了绿色,并且NewCreateFile的状态标记由??变成了 A  (新添加文件)。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

2、git reset HEAD 

接下来我们根据提示,看一下 git reset HEAD <文件名> 命令的操作,下方分别对已经暂存的两个文件执行了 git reset HEAD <文件名>操作,如下所示。从操作后的结果可以看出,两个文件的状态是一夜回到了解放前,又回到了之前暂存的状态。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

3、git checkout — <文件名>

接下来我们在看一下对未暂存的修改文件进行回滚的操作命令: git checkout — <文件名>,根据上面的提示我们可以知道该操作可以放弃对某个为暂存的文件的修改。接下来我们就来看一下这个命令的操作。不过有一点需要注意,该操作如果生效了,再想找回被丢弃的内容就找不回了。也就是说git checkout — <文件名>是不可逆的,因为其回滚的内容并没有在git中进行暂存和记录。从下方的操作我们可以看出被修改的README.md回到了未被修改的状态之前。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

4、git commit -a

接下来我们来看一下上面提到的命令git commit -a 的操作,首先我们再次对README.md进行修改,然后查看一下状态。接着使用 git commit -a -m “提交说明” 来进行添加和提交。从该命令执行后的状态中我们可以看到,git commit -a 只对 状态为M的文件有用,而对新增而为添加的问题是不起作用的,因为我们新添加的文件NewCreateFile仍然处于 Untracked 状态中。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

我们可以使用 git add 命令对 NewCreateFile 文件进行暂存,使用 git commit 命令对暂存的内容进行提交。提交后,我们查看状态时看到一个提示, 大概是说你的分支已经领先远端的主分支2个提交,可以使用 git push 操作来发布你本地的提交。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

5、git push

下方是git push操作的相关内容,我本地是配了github的ssh-key的,不过之前clone的时候使用的是https的方式,需要在第一次PUSH的时候都要求输入用户名和密码。每次都输入用户名和密码挺麻烦的稍后我们将使用git的其他命令将其解决掉。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

push完毕后,我们可以动github上相应的仓库中可以看到其相关的修改内容了,具体如下:

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

由上面的内容,不难发现,从一开始的git status命令,根据相关提示,引出了其他相关命令。下方是对其相关命令的总结:

  • git status : 查看当前仓库中文件的状态。

  • git status -s : 文件状态的简写(M – 修改, A – 添加, D – 删除, R – 重命名,?? – 未追踪)。

  • git add <文件名> :将后方紧跟的文件进行暂存,以便commit使用。

  • git reset HEAD <文件名> : 将已经暂存的文件进行撤销,回到未暂存的状态。

  • git checkout — <文件名> :撤销对尚未暂存文件的修改,该操作不可逆,慎用。

  • git commit -a : 对那些被修改的文件单尚未暂存和提交的文件进行暂存和提交。注意:对未暂存的新增文件无效。

  • git commit : 对暂存区的文件进行提交到本地仓库。

  • git push : 将本地仓库已经提交的内容发布到远端。

 

 

三、查看和修改远端地址

1、添加远端仓库地址

根据上面的操作可以看到,上面的远端链接是https的。因为我本地是赔了github的ssh-key的,所以也是支持ssh的链接的。下方我们将根据 git remote 远程仓库操作来添加上ssh的仓库地址。下方是一系列的操作:

  • 首先通过
    git remote -v 命令来查看当前仓库的远端地址,从下方看到是 https格式的。

  • 然后在通过
    git remote add 远端仓库地址别名 <url> 来添加一个新的仓库地址,下方添加的是一个ssh的仓库链接。

  • 接着我们再次对远端仓库的链接查看时,就会看到相应的新添加的仓库地址。

  • 然后我们队README文件做了点修改,并push远端。在 push 时我们选择了后来添加的新的远端仓库,可以看出使用的是别名。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

下方是push后从github上对应的仓库看到的相关内容,也是可以看到的修改的相关内容的。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

2、远端仓库地址删除和重命名

从上面的内容不难看出,两个仓库地址其实是重复的。现在我们没必要都将其进行存储了。我们要删掉那个https的仓库,下方是具体的操作步骤。

  • 首先通过
    git remote -v 来查看目前现有的远端仓库。

  • 然后通过
    git remote rm origin 命令来删除别名为 origin 的远端地址,删除后,再次查看时,origin的仓库地址就木有了。

  • 紧接着使用
    git remote rename origin_ssh origin 命令,将origin_ssh重命名为origin即可。

  • 最后我们还可以使用
    git remote show origin 命令来查看push到远端的那个分支上,具体操作步骤如下所示。

  Git知识总览(一) 从 git clone 和 git status 谈起「建议收藏」

 

今天博客就先到这儿,下篇博客会继续聊git命令的其他基础操作。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154935.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Nginx 防攻击安全配置

    Nginx 防攻击安全配置网站安全配置(Nginx)防止网站被攻击(包括使用了CDN加速之后的配置方法)网站被攻击是一个永恒不变的话题,网站攻击的方式也是一个永恒不变的老套路。找几百个电脑(肉鸡),控制这些电脑同时访问你的网站,超过你网站的最大承载能力,然后你就瘫了。方法虽然老土,但却一直都很管用,就像怎么打败美帝国主义,最简单的方法就是13亿中国人都移民去美帝,吃他的、用他的、花他的,直接能让美帝破产,压根不需要用…

  • pytest 执行用例_python分布式爬虫

    pytest 执行用例_python分布式爬虫前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

  • 数学建模13种常见方法

    数学建模13种常见方法下面来介绍一下数学建模大赛中常用的13中建模方法:1、层次分析法,简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国国防部研究"根据各个工业部门对国家福利的贡献大小而进行电力分配"课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。2、多…

  • linux下nginx启动_centos7添加静态路由

    linux下nginx启动_centos7添加静态路由啥?都2020年了,在Linux中还不会安装部署nginx啊。花5分钟赶紧来看看吧。步骤超详细,学不会你来揍我。

  • Android文件系统的结构及目录用途、操作方法 整理「建议收藏」

    Android文件系统的结构及目录用途、操作方法 整理「建议收藏」1、android文件系统的结构android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中,ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把system和userdata分别加载到ram

    2022年10月15日
  • [2018年新版]以太坊ETH挖矿教程

    [2018年新版]以太坊ETH挖矿教程一.准备工作1.硬件准备ETH以太坊挖矿主要是使用高端3G显存以上显卡来挖矿,因此你需要一台拥有以下设备的电脑:显卡:6张rx470或gtx1060以上显卡,显存推荐4G以上主板:需要有6个以上pci-e插槽,目前市面上有主板直插和转接板2种。一般来说直插6卡或者8卡主板较为稳定。电源:电源功率视显卡数量,一般6卡需要850w以上其他配件:CPU、内存、硬盘(推荐60G以上SSD)、延长线…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号