git 命令学习
git 主要用于代码或者文件的一个分布式仓库。可以进行版本控制,实现代码或者文件不同版本的控制,一般主要用于代码,比如文件doc之类的效果不是特别好。既然说到版本控制,其实版本控制的工具也有很多,比如svn之类的等等,其实svn就可以做到版本控制了,为嘛还会有这个git呢,并且git现在还比较流行,主要归于git是一个分布式的版本控制工具。svn不是分布式的,svn是一个服务器,其它本地与一个中央服务器(svn服务器)进行交互。git则不然,git是在本地所有电脑上都构建了一个本地的仓库,一开始进行的提交都是在本地仓库下进行的,最后才使用(git push)同步到远程仓库上。
准备工作
在学习git命令之前,得确保你电脑上已经安装了git客户端,git客户端的下载路径是https://git-scm.com/download/win。下载之后在系统上进行安装。
命令使用
一、如何把本地的项目变为一个git仓库?如果从远程仓库创建一个本地仓库?(主要讲解git init 命令以及 git clone的使用)
首先我们来看一下如何让本地项目变为一个git仓库,最后并提交到远程仓库上的,就比如我现在有一个项目,我想进行提交到到远程仓库上提供给其它人一起共享开发,这个时候,启动git bash,进入到git bash中,找到你的项目的路径,进入到项目的根路径下或者根目录下,执行命令 git init。
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/(master) cdpf4jdemoSharplee@DESKTOP−5H01CFFMINGW64 /Desktop/pf4jdemo(master)cdpf4jdemoSharplee@DESKTOP−5H01CFFMINGW64 /Desktop/pf4jdemo(master) pwd
/c/Users/Sharplee/Desktop/pf4jdemo
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $git init
接着我们来看一下如何获取远程仓库的项目呢?就比如说我们在一个公司进行开发或者想要从github 上获取开源项目的话,这时候就得从远程仓库上下载项目的代码,那这个时候就我们就需要使用git clone 命令来进行远程仓库上的项目,具体的使用步骤如下。首先进入你得进入一个路径下,接着找到你要下载的项目的git路径。最后执行git clone。
Sharplee@DESKTOP-5H01CFF MINGW64 /d
$ git clone https://github.com/591studybar/springbootpf4jdemo.git
二、如何在本地仓库中进行添加文件?添加的文件如何进行提交呢?如何把本地仓库修改或者更新的文件进行提交呢?(git add,git commit,git push等命令使用)
接着上面的内容继续聊聊,我们通过上面的过程在本地构建了一个本地的代码仓库,但是接着构建了仓库之后你肯定得进行项目的开发,这个时候就得在项目中增加文件,第一次新增的文件,在git项目中未被跟踪的,那这时候你会问啥是未被跟踪,这个就得聊一聊,git给出的解释是git仓库目录下的文件有两种状态,一种是已跟踪,一种是未跟踪。已跟踪的文件就是已经纳入了版本控制的文件,在上一次快照中都存在它的记录,在工作一段时间后, 它们的状态可能是未修改,已修改或已放入暂存区。简而言之,已跟踪的文件就是 Git 已经知道的文件。而未跟踪的文件就是除了已跟踪之外的文件都是未跟踪的。它们既不存在于上次快照的记录中,也没有被放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态,因为 Git 刚刚检出了它们, 而你尚未编辑过它们。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 在工作时,你可以选择性地将这些修改过的文件放入暂存区,然后提交所有已暂存的修改,如此反复。现在回到之前的问题,现在我们在项目路径下新增了一个文件,这个时候属于未跟踪状态,未跟踪的文件是没有被git快照追踪,那么就得让未跟踪的文件变成跟踪的文件,这时候我们就得执行git add命令来执行,使文件让git快照进行追踪。那么接下来进行验证一下,我们在项目中增加一个test.txt文件:
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git status
现在已经看到文件是未被追踪的文件,现在通过git add 命令把文件变为追踪文件。
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git add test.txt
这个时候我们已经看到在暂存区以及有一个文件,这时候我们想要把该文件提交到本地仓库。执行git commit命令。
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git commit --m "第一次提交"
下面我们来看一下提交的结果。
这个时候就已经把项目提交到本地仓库中了,但是尚未提交到远程仓库中,那么我们想提交到远程仓库的话就得执行git push 来进行了。git push 后面进行讲解。
通过上面的过程就完成了一个文件在本地仓库的添加以及提交了。下面接着我们来看一下如何执行修改文件的提交以及恢复。
下面我们在test.txt文件中添加一些内容,接着我们来测试一下文件的提交以及恢复。
这时候通过上面的的状态我们可以看出文件已经被修改了,状态已经变为modified。一般情况下比如idea开发工具中,新增的文件,没有进行添加git仓库中,文件一般都是红色的。 接着添加到仓库中的文件就变为绿色的,如果添加到仓库中并且以及commit的文件一般为白色。接着修改的文件变为蓝色。
上面修改的文件,我们要进行提交的话,首先得执行git add 命令,接着执行 git commit 命令。
通过上面的命令已经把修改的文件进行提交了。 下面我们来看一下如何把修改过的文件进行恢复呢?如何把修改过的文件进行commit之后进行恢复呢?
我们来看第一个问题,修改之后的文件是被放到暂存区的,这个时候我们可以使用git restore --staged test.txt 进行文件的恢复,这个时候恢复就恢复到修改的状态。
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $git restore --staged test.txt
这个时候就可以看到文件恢复到之前的状态了,已经变成修改时的状态的了。
接着要恢复到未修改之前的状态,这个时候得需要再执行一下git restore
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $git restore test.txt
执行完以上命令之后,就恢复到文件没有被修改之前的状态了。以上这两个步骤在idea开发工具中,在idea中执行一个步骤就可以恢复到未修改版本状态,点击test.txt文件右键弹出一个框找到local history ----》show history ---》进去之后找到对应的操作历史记录找到对应要恢复的版本右键有一个Revert 。就可以完成恢复。
接下来我们再来看上面所说的当文件被修改完之后又进行commit了,commit完之后,是已经提交到本地仓库中的,那这个时候我们要想恢复到未修改之前的状态。这个时候我们如何进行操作呢?
下面我们就来演示一下吧,随他去吧,请开始你的表演吧。。。。。
下面我们来看一下如何恢复已经commit的文件。
首先执行git log 命令,找到提交的commit记录,找到commit 上一个版本提交记录,进行恢复。假如我们要恢复到图中标红的版本。执行以下命令。
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git reset --hard 34620dcd7f5eda837a13e29cecc670b55ca5483e
HEAD is now at 34620dc 第一次提交
这个时候就恢复到上一个commit版本去了。这样就恢复到修改之前的了。如果这个过程中还新增了其它文件,这时候会把其它文件也弄没了。这个恢复主要用于单个文件提交恢复,如果多文件提交。想进行恢复,你可以在idea 中,通过local history ---》show localhistory -->>找到提交的要恢复的文件,点击右键Revert就可以恢复了。
三、执行完上面的步骤之后我们肯定想把项目提交到远程仓库上,那如何把项目提交到远程仓库呢?(git push ,git remote等命令使用)
下面我们就来详细的介绍一下如何把刚才创建的项目提交到远程仓库的,就是从本地仓库提交到远程仓库,提交到远程仓库的文件,必须是commit到本地仓库的,才能够进行提交到远程服务器仓库上。 如果是本地项目要提交到远程仓库上的,则首先你得指定一个远程服务器的仓库地址才能够提交的,那具体是如何弄这个远程服务器仓库呢?远程服务器仓库可以自己找个服务器进行搭建,也可以使用现在网上的远程服务器仓库github以及gitee这两种,现在就以github为例,首先你得在github上建一个Repository。
创建完成之后,我们就得配置在电脑上配置一下远程仓库的路径,那如何配置远程仓库呢。首先需要把刚才新增的远程仓库的路径复制下来,在git bash中执行以下命令。
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git remote add test https://github.com/591studybar/test.git
这个时候就添加上了远程服务器。那么这个时候又需要怎么做才能够把本地仓库中的项目提交上去呢?这个时候你就可以执行git push test master 来进行把本地项目上传到远程服务器仓库中,解释一下这个命令 git push test(是添加远程仓库服务器的名字) master (远程仓库上的主分支,分支会在后面章节进行解释)
下面来执行一下这个命令。
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master)$git push test master
在上面的过程中会提示输入用户名密码,输入github的用户名密码即可。也可以使用配置文件中进行一个配置,进而能够进行全局的用户名密码的控制。执行完成之后,我们来进行一下验证。
这个时候我们可以看到已经提交上去了。
如果是使用git clone 命令从远程仓库上下载一个项目的话,这个时候不用配置远程仓库地址,直接执行git remote -v 命令来查找远程仓库的名字,接着提交代码的时候直接执行git push xxx(仓库地址对应名字git remote -v 指定的) master (分支)。
四、如果远程仓库有其它人进行提交我们如何进行同步呢?(git pull命令使用)
最后我们再来看一下git pull 命令,有push 肯定得有一个pull命令。pull命令主要用于从远程仓库上有文件被修改或者新增,这个时候本地没有,得先到服务器上进行pull一下,从服务器上拉取一下。拉到本地仓库中,这样就不会造成本地仓库和远程仓库不一致的情况,建议每次提交代码的时候都进行一个git pull,因为这个项目不止一个人在开发,由多个人一起协同开发,必须做到每次再提交代码前都pull一下,把远程变动同步到本地仓库。那么这个命令如何执行呢?其实git pull 命令和git push 命令是相反的含义,一个是往服务器上推,一个是往本地仓库上推(就是本地到远程拉取)
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master)$git pull test master
接着来解释一下这个命令,git pull test(仓库对应的名字 git remote -v 指定的) master(分支)。意思就是从远程仓库test上的主分支上获取项目,直接从主分支上进行同步。
其实以上这些命令通过可视化的ide能够快捷方便的进行操作,比如idea开发工具中在git菜单中能够快速的进行commit and push ,并且也能够快速的进行pull,在项目要进行push之前,多进行一下pull。
最后要记住的是,pull 在项目push前不要忘执行。pull 在项目push前不要忘执行。pull 在项目push前不要忘执行。重要的东西说三遍。