github 教程(上) Git教程 Github详细教程(上)

Git教程 Github详细教程(上)

  作为一个萌新,我翻遍了网上的Git Bash教程,可能因为我理解力比较差,经常看不懂教程上在说什么。 (。-`ω´-)所以我决定自己一边摸索一边记录,写教程造福那些理解力跟我一样差的人……


第一篇教程会涉及如下内容(按照一般人的使用流程):
  • 下载、登录Git Bash
  • 如何在Git Bash中进入或者退出文件夹
  • 如何建立本地仓库
  • 配置SSH key
  • 如何建立本地仓库和远程仓库的连接
  • 如何克隆远程仓库
  • 远程仓库改变后如何更新本地仓库

这个主要介绍Git Bash的使用教程。首先抛一个Windows用户的下载链接:Git for windows


下载下来之后我的电脑上是显示了这么三个东西的,刚才的下载页面也对这些工具进行了一些相应的介绍。下面我大致说一下吧…… 
这里写图片描述 
- Git CMD: 
  Git CMD我并没用过,但是我查了一下它是什么。据别人说,Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能。所以建议在使用的时候,用Bash更加方便(原网址)。 
- Git GUI: 
  其次就是Git GUI,Git GUI是Git Bash的替代品,他为Windows用户提供了更简便易懂的图形界面。(但是相比GitHub Desktop这个桌面版客户端,_(:3 」∠)我觉得Git GUI也没什么用。) 
- Git Bash: 
  最后是Git Bash,Git Bash是命令行操作,官方介绍有一句就是“让*nix用户感到宾至如归。”(ಥ_ಥ 当然了,萌新用户使用了就肥肠憋屈。)


1.登录

下载之后打开是这个样子的,那你想一下,第一件事一定要登录了。你在网页上已经申请了你的账号了,现在你就要登录进去。 
这里写图片描述 
然后输入:

git config –global user.name “Your Name” 
git config –global user.email “[email protected]

这里写图片描述 
这个时候就登陆了。你就可以执行一些操作了。


2.本地的文件夹基本操作

首先你可以试着打开你本地仓库的文件夹。比如我要打开D:\github\Sian-s-Diary有两种方法


  • 直接在电脑上打开那个文件夹,然后在文件夹空白处右键选择Git Bash here
  • 在Git Bash中输入路径 

 ①可以逐个输入文件夹名(在文件夹名称前要加cd ) 
这里写图片描述 
②也可以直接输入一个完整的文件夹路径cd d:/github/Sian-s-Diary 
这里写图片描述 
   注意!使用cd命令进入到目录中时,在Git-Bash中应该使用斜线”/”, 而不是反斜线”\”
看上面两个图的图一: 其中黄色框框是显示我输入的这个文件夹不存在, 绿色框框是文件夹存在的,然后那个红色框框是你现在所在位置。然后看图二:图二红色框是一个显示所在文件夹的命令行。也就是说你如果想在Git Bash中知道你现在在哪个文件夹中操作,可以直接看后边的路径,也可以输入pwd,回车之后进行查看。

$ pwd

你们可能还会有个疑问,为什么我有的文件夹之后显示了master,有的却没显示。因为我显示了master的是已经建立过仓库的文件夹了。 
这里写图片描述

当然你也可能进错文件夹,要学会回退。

$ cd .. 
..和cd之间有空格

就可以回退到上一个文件夹。 
这里写图片描述

当然除了你也可以直接在Git Bash里直接新建文件夹

进入某个文件夹之后输入(如下)即可

$ mkdir +文件夹名字

例如我要在D:\github\000 下新建一个叫“111”的文件夹。 
这里写图片描述 
第一行黄色文字显示我已经进入了000这个文件夹,然后输入即可创建。

删除文件

输入

$ rm 文件名.文件类型 
一定要输入类型啊

比如我要删除000中的“新建文本文档.txt”,操作如图。 
这里写图片描述


3.现在我们来新建一个仓库

进入到你想建立本地仓库的文件夹,比如我的D:\github\Lolita。起初我这个Lolita文件夹是空的,并且不是本地仓库。 
这里写图片描述 
现在我只需要在Git Bash里先进入这个文件夹,确定已经进入了,我要把它变成本地仓库,需要输入以下命令行

$ git init

这里写图片描述 
然后他就会告诉你建立成功了,这时候你的本地文件夹就出现了一个隐藏的.git文件夹 (。-`ω´-)千万不要乱删,你如果看他烦你就设置一下不现实隐藏文件就OK。至于为什么不能删,这你就要自己另行百度了。 
这里写图片描述 
这个时候本地仓库建立好了,你就可以在里面放东西了。比如我在文件夹里新建一个名为LolitaSian的txt文件,这时候你就可以告诉Git Bash你刚才更改了你的本地仓库。 
这里写图片描述 
这里写图片描述

$ git add+文件名.文件类型

例如图中,我在文件夹里添加了一个LolitaSian.txt,也就是说我修改了LolitaSian.txt,所以我在Git Bash中可以写git add LolitaSian.txt 来添加我的修改记录。但是你发现上一条git add readme.txt失败了,因为我在本地仓库中从没对这个进行我操作,所以没有修改记录,因此无法添加修改记录。

你也可能添加了很多文件,如果一个一个add肯定会累死,所以:

git add -A 提交所有变化 
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) 
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

修改之后就可以提交了。在git Bash中输入命令行即可。

$ git commit -m “修改注释”

这里写图片描述

怎样看你修改了什么呢? 
这时候就要输入

$ git diff 文件名+类型

这里写图片描述 
原来LolitaSian里边是三行文字,现在我新增了一行“啦啦啦啦”,然后在Git Bash里输入了git diff LolitaSian.txt就会出现我刚才都进行了什么修改。 
这里写图片描述

你也可以看你这个文件的内容

$ cat 文件名

这里写图片描述 
注意必须在文件夹里有那个文件你才可以查看。


注意ヽ(•̀ω•́ )ゝ这时候你的文件并没有同步到远程仓库!然后你就需要第四步了

4.本地仓库和远程仓库的骚操作

  当然使用过桌面版的应该知道,commit之后还有一个手动同步的步骤,在Git Bash中也是这样的。 
  4.1在推到远程仓库之前需要配置SSHヽ(・ω・。)ノ点击进入《SSH Key配置教程》 
  4.2我们刚才在步骤3中已经建立了本地仓库,那么现在只要在远程建一个仓库然后把他俩连接起来就OK。 
首先你要进入网页版github新建一个仓库。(以下是简略建立过程,更详细教程可以戳这里:ヽ(・ω・。)ノ仓库的创建、同步、删除) 
这里写图片描述
这里写图片描述 
因为我本地仓库文件夹名字叫Lolita,为了方便我把远程仓库也命名为Lolita。然后建立一个新的空仓库。 
这里写图片描述 
把上边绿框框切换到SSH,然后复制下边随便哪个框框的内容。在电脑上进入你建好本地仓库的文件夹右键点击Git Bash Here或者直接在Git Bash中输入命令行进入文件夹。 
然后在Git Bash中输入

$ git remote add origin +你复制的内容

比如我输入$ git remote add origin [email protected]:Lolita-Sian/Lolita.git

然后他不会有任何提示,但是如果你不确定操作成功没有,你可以再输一遍,这时候他会提示你刚才已经设置过了。 
这里写图片描述 
或者说你输入git remote -v验证一下会出现你添加成功的远程仓库。

$ git remote -v

在这里说一下git remote add origin +你复制的内容,其实就是给本地仓库添加一个远程仓库,你复制的内容就是远程仓库地址,origin就是远程仓库的代称,你也可以取一个别的代称给他。

如果你以后不想连接这个远程仓库了,只需要输入git remote remove +代称即可。比如我刚才添加的远程仓库代称是origin,那我就要写:

git remote remove origin

然后在Git Bash中输入如下命令进行内容同步

$ git push -u 代称 master 
如果刚才是git add remote origin +复制内容,就要写git push -u origin master 
如果刚才是git add remote AAA +复制内容,就要写git push -u AAA master

这里写图片描述 
这时候你就可以把你本地仓库的东西推到远程仓库了,并且你commit的信息也会同步过去。由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,只输入(如下)就OK。

$ git push origin master

你去网页版刷新一下,就可以看到你本地仓库的东西都在那里了。然后点击commis还可以看到我在第三步中commit的操作记录。 
这里写图片描述 
这里写图片描述

还可以查看当前版本信息(也就是最近一个commit)

$ git log

也可以显示某个文件的版本历史,包括文件改名

$ git log –follow 文件名.文件类型

$ git whatchanged 文件名.文件类型

显示所有提交过的用户,按提交次数排序

$ git shortlog -sn

显示指定文件是什么人在什么时间修改过

$ git blame 文件名.文件类型

5.如何克隆一个远程仓库

现在我有一个叫000的远程仓库,并且里边有一个叫readme的文件。点击绿色按钮之后会弹出来。可以复制这一段([email protected]:Lolita-Sian/000.git)。切换成HTTPS再复制也没影响。 
这里写图片描述 
然后在本地建好一个用于作为克隆的本地仓库的文件夹,在文件夹内右键-Git Bash Here。或者直接在Git Bash中进入。然后在Git Bash中输入

$ git clone 加上你刚才复制的那一块

例如我要输入$ git clone [email protected]:Lolita-Sian/000.git

这里写图片描述 
然后你打开你刚才选的本地文件夹,远程仓库的东西都在本地了(。◕ˇ∀ˇ◕)。


远程仓库改变后如何更新本地仓库

  这一步很重要了,在团队合作中,你的队友修改了远程仓库之后,你如何确保自己的文件跟远程仓库一致呢,这就需要以下步骤了。 
  在你刚才init或者Clone的过程中,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动连接到远程的origin/master分支。 
  那么建立远程关系之后,如果你要取回远程文件,你只需要输入“ $ git pull origin”。

$ git pull origin

比如我现在跑到我的远程仓库修改了我的日记。我给日记加了一行测试。然后进行了pull。 
这里写图片描述 
这时候我打开我的本地日记,就发现加上来了。 
这里写图片描述

  或者我也可以输入两句“git fetch”和“git merge”

$ git fetch

$ git merge

  然鹅!事情是这样的,当我输入完“git fetch”之后,我打开本地的日记,发现内容没变,当我输入完“git merge”的时候本地的日记才改变。 
这里写图片描述

但是看一下下图。

这里写图片描述 
  我在fetch之后没有直接merge,而是在他俩之后都使用了 git status.可以看我在上图蓝色框框中有一个commit,但是我merge之后,就显示本地和远程的commit数据都一样了。也就是说git fetch 并没更改本地仓库的代码,只是拉取了远程 commit 数据,将远程仓库的 commit id 更新为latest。回想一下你刚才是怎么push到远程的,add-commit-push。而你拉回来也是这样,fetch-merge。fetch相当于add的逆操作,都是改变了commit。 
  总结一下:pull=fetch+merge。pull:下拉远程分支并与本地分支合并。fetch并没更改本地仓库的代码,只是拉取了远程 commit 数据。

  另外补充一下。

$ git status

刚才提到了这个。status有什么作用呢。 
- 上图中在fetch-merge中,可以提示你本地和远程的数据差异。如果你没有merge,status就会提示。 
- 而在add-commit-push过程中,看下图。如果我修改了文件,没有add,status提示是红色的,add之后提示是绿色的,commit之后,工作树就是空的了。 
这里写图片描述 
这里写图片描述


last but not least,我是萝莉安, 梦想是当个小程序媛。 ಥ_ಥ 萝莉永不服输!

猜你喜欢

转载自blog.csdn.net/hellocsz/article/details/80658926