GitHub教程 Git bash超详细教程(上)
2018-01-17 16:12
204 查看
作为一个萌新,我翻遍了网上的Git Bash教程,可能因为我理解力比较差,经常看不懂教程上在说什么。 (。-`ω´-)所以我决定自己一边摸索一边记录,写教程造福那些理解力跟我一样差的人……
第一篇教程会涉及如下内容(按照一般人的使用流程):
下载、登录Git Bash
如何在Git Bash中进入或者退出文件夹
如何建立本地仓库
配置SSH key
如何建立本地仓库和远程仓库的连接
如何克隆远程仓库
远程仓库改变后如何更新本地仓库
- 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用户感到宾至如归。”(ಥ_ಥ 当然了,萌新用户使用了就肥肠憋屈。)
然后输入:
git config –global user.name “Your Name”
git config –global user.email “email@example.com”
这个时候就登陆了。你就可以执行一些操作了。
直接在电脑上打开那个文件夹,然后在文件夹空白处右键选择Git Bash here
在Git Bash中输入路径
①可以逐个输入文件夹名(在文件夹名称前要加cd )
②也可以直接输入一个完整的文件夹路径cd d:/github/Sian-s-Diary
注意!使用cd命令进入到目录中时,在Git-Bash中应该使用斜线”/”, 而不是反斜线”\”
看上面两个图的[b]图一: 其中黄色框框是显示我输入的这个文件夹不存在, 绿色框框是文件夹存在的,然后那个红色框框是你现在所在位置。然后看图二:图二红色框是一个显示所在文件夹的命令行。也就是说你如果想在Git Bash中知道你现在在哪个文件夹中操作,可以直接看后边的路径,也可以输入pwd,回车之后进行查看。[/b]
$ pwd
你们可能还会有个疑问,为什么我有的文件夹之后显示了master,有的却没显示。因为我显示了master的是已经建立过仓库的文件夹了。
..和cd之间有空格
就可以回退到上一个文件夹。
$ mkdir +文件夹名字
例如我要在D:\github\000 下新建一个叫“111”的文件夹。
第一行黄色文字显示我已经进入了000这个文件夹,然后输入即可创建。
$ rm 文件名.文件类型
一定要输入类型啊
比如我要删除000中的“新建文本文档.txt”,操作如图。
现在我只需要在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 -
d81c
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.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 git@github.com: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 文件名.文件类型
然后在本地建好一个用于作为克隆的本地仓库的文件夹,在文件夹内右键-Git Bash Here。或者直接在Git Bash中进入。然后在Git Bash中输入
$ git clone 加上你刚才复制的那一块
例如我要输入$ git clone git@github.com: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”的时候本地的日记才改变。
[b]但是看一下下图。[/b]
我在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 数据。
刚才提到了这个。status有什么作用呢。
- 上图中在fetch-merge中,可以提示你本地和远程的数据差异。如果你没有merge,status就会提示。
- 而在add-commit-push过程中,看下图。如果我修改了文件,没有add,status提示是红色的,add之后提示是绿色的,commit之后,工作树就是空的了。
last but not least,我是萝莉安, 梦想是当个小程序媛。 ಥ_ಥ 萝莉永不服输!
第一篇教程会涉及如下内容(按照一般人的使用流程):
下载、登录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@example.com”
这个时候就登陆了。你就可以执行一些操作了。
2.本地的文件夹基本操作
首先你可以试着打开你本地仓库的文件夹。比如我要打开D:\github\Sian-s-Diary有两种方法直接在电脑上打开那个文件夹,然后在文件夹空白处右键选择Git Bash here
在Git Bash中输入路径
①可以逐个输入文件夹名(在文件夹名称前要加cd )
②也可以直接输入一个完整的文件夹路径cd d:/github/Sian-s-Diary
注意!使用cd命令进入到目录中时,在Git-Bash中应该使用斜线”/”, 而不是反斜线”\”
看上面两个图的[b]图一: 其中黄色框框是显示我输入的这个文件夹不存在, 绿色框框是文件夹存在的,然后那个红色框框是你现在所在位置。然后看图二:图二红色框是一个显示所在文件夹的命令行。也就是说你如果想在Git Bash中知道你现在在哪个文件夹中操作,可以直接看后边的路径,也可以输入pwd,回车之后进行查看。[/b]
$ 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 -
d81c
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 git@github.com: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的文件。点击绿色按钮之后会弹出来。可以复制这一段(git@github.com:Lolita-Sian/000.git)。切换成HTTPS再复制也没影响。然后在本地建好一个用于作为克隆的本地仓库的文件夹,在文件夹内右键-Git Bash Here。或者直接在Git Bash中进入。然后在Git Bash中输入
$ git clone 加上你刚才复制的那一块
例如我要输入$ git clone git@github.com: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”的时候本地的日记才改变。
[b]但是看一下下图。[/b]
我在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,我是萝莉安, 梦想是当个小程序媛。 ಥ_ಥ 萝莉永不服输!
相关文章推荐
- 使用gitbash上传代码到github远程仓库简单教程
- GITHUB之GIT BASH使用教程
- 详细的git GitHub创建管理仓库教程之一
- Git Bash使用详细教程
- GitHub详细教程/Git详细教程
- Git详细教程(3)---结合gitHub使用
- 【详细教程】使用git把自己的项目上传到github
- 入门级:GitHub和Git详细使用教程!
- 使用Git上传代码到GitHub详细的不能再详细教程
- github版本库使用详细教程(命令行GitShell及图形界面GitHub)
- GITHUB之GIT BASH使用教程
- 超详细!Github团队协作教程(Gitkraken版)
- GITHUB之GIT BASH使用教程
- node.js零基础详细教程(3):npm包管理、git github的使用
- GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
- github网站介绍、并使用git命令管理github(详细描述)
- GitHub详细教程
- GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流 .
- Git使用详细教程
- Git详细使用教程