友人C

30分钟git 快速入门
git到底难不难?很多次被git吓到没有深入学习,但是git只是编程的一件额外的协助功能,所以肯定不会很难,学习了...
扫描右侧二维码阅读全文
11
2016/11

30分钟git 快速入门

git到底难不难?很多次被git吓到没有深入学习,但是git只是编程的一件额外的协助功能,所以肯定不会很难,学习了git教程之后,写下这部分内容,以期备用和帮助到你。当你一步步读完全文,并且入门git的时候,你会发现git的强大之处。所以,现在开始。(windows 系统环境)

git简介

你可能使用过github,git与github相比如球与球场的关系。git是版本控制工具,你每次更改代码都会被记录。而github桌面版正是采用了这种机制的一个平台。git不仅在github 桌面版应用,在一些IDE中也有集成,比如visual studio 2015中。但是熟悉git基本操作,可以让我们脱离这些集成git软件的限制,让我们所以的工作都在git的有效管理下。

下载git并初步认识

点击官网下载

安装完成之后在开始菜单里找到“Git”目录下应该有三个程序:git Bash / git CMD / git GUI。点击任何一个文件夹右键菜单应该都会有这三个选项。

  • git Bash : git 命令行工具,我们接下来的大部分命令操作都将在此进行
  • git CMD :git 命令窗口,事实上与windows 提供的 CMD并没有区别,基本不需要使用
  • git GUI: git 的图形化界面,使我们可以在不使用命令行情况下而点击几个按钮使用git版本控制,如add、commit 等。但是纯英文的界面让我更喜欢命令行的操作

设置用户信息

恩恩,给操作git的操作者一些信息吧,这些信息将会在git bash某些操作中显示。(当然不设置也行,每次提交都是unknown...)

$ git config --global user.name "ihewro" //给自己起个用户名
$ git config --global user.email  "abc@gmail.com" //填写自己的邮箱

创建仓库

什么是仓库?英文名repository。在github同样可以看到这个名词。仓库包括两个部分:版本库工作区

工作区就是你所创建的代码文件夹。

版本库就是自动创建、默认隐藏的文件夹.git目录,版本库保存了工作区每个文件的修改记录,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。版本库又分为:stage(暂存区)分支区。默认创建了master分支。

0.jpg
现在开始创建一个仓库。

在任何位置新建一个文件夹,取名为github使用。右键文件夹名称,点击Git bash Here,你会看到一个输入命令行的窗口。

输入命令:git init,仓库建立成功。

在仓库中添加文件

我们建立一个空仓库,目的是在里面添加各种各样的文件,进行各种各样的代码修改,然后让git版本控制软件把我们的更改记录下来。
所以,我们开始在仓库目录下 名称为“readme.txt”文件吧。(推荐使用notepad++替代windows自带的记事本,完全免费,支持代码高亮,体积很小)

  • 先使用 git add readme.txt命令行,把readme.txt文件修改添加到暂存区。正确的话是没有提示信息的。
  • 再使用 git commit -m "这里面是一些文字说明" 命令行,这行命令是一次性提交暂存区的所有修改并保存到当前分支。正确的话会

说明:git add可以重复使用,一些命令代表一些小修改,git commit 代表了上面所有小修改的总结,即一次大修改

版本回退

我们不断创建,不断想修改,每次大修改都会commit一次。这样我们的git里面就会保存很多次我们的修改记录。
首先使用git log命令可以查看我们commit的历史记录。如果想看更加简略的历史记录信息,请输入命令git log --pretty=oneline

$ git log --pretty=oneline
26771120ea1ecf2713d050d6c36b92a37c485bc0 add onoe line
4276b844537928658f27ae287a623b733a5591ec merge bug fix 101
d6b2123d6966c9af215fa0f70dd9e3fcac3cf49b fix bug 101
5333fde1e6199ad1bcef25e42691231afdd5aff3 confict fixed

就像上面这样。上面每一串数字与字符的组合(如:26771120ea1ecf2713d050d6c36b92a37c485bc0)叫做版本号(commit ID)

版本回退有三种不同的情况:

  • 修改了文件,并没有add
  • 修改了文件,已经add,但没有commit
  • 修改了文件,已经add,并且commit
  1. 使用命令$ git checkout -- readme.txt,即把readme.txt文件在工作区的修改全部撤销
  2. 先使用命令$ git reset HEAD readme.txt,即可以把暂存区的修改撤销掉(unstage),重新放回工作区。然后转换成第一种情况,使用命令行撤销工作区修改。
  3. 使用$ git reset --hard HEAD^表示回退到上一版本。或者直接使用版本号如:$ git reset --hard 3628164 版本号不必写全,会自动匹配版本号。如果你已经回退到上一个版本号,忘记了之前的最后一个版本号,可以使用$ git reflog命令,这个命令会输出你的每一次命令记录。可以找到你的回退版本号。

操作远程仓库

当然,我们本地建立仓库,更主要的是与远程仓库同步,跨平台合作更方面。这里以更加常用的github为例。

  1. 获取公用密钥
  • 现在本地获取git公用密钥,然后填到github——setting——SSH keys——New SSH key
ssh-keygen -t rsa -C "abc@gmail.com" //填写email地址,然后一直“回车”ok

然后打开本地...ssh\id_rsa.pub文件。此文件里面内容为刚才生成的密钥。然后把该密钥复制到github的setting/ssh中,点击打开页面的add SSH key按钮,title任意,把key值复制进去。

经过上述配置,你的Git应该可以通过SSH连接GitHub服务器了,可以测试一把(配置完SSH key后,就表示本地能操作该用户下的库,能提交代码了):

ssh -T git@github.com

提示像我这样:

Hi ihewro! You've successfully authenticated, but GitHub does not provide shell access. 那就说明连接成功了。
  1. 创建远程仓库

github上面点击New Respository

2016-11-12_145315.png

  1. 克隆远程仓库
  • 先fork
  • 在你的工作区打开Git Bash,使用命令git clone git@github.com:ihewro/github-.git,把git@github.com:ihewro/github-.git 替换成相应仓库的SSH地址。
  1. 本地与远程仓库同步操作

第一次把本地仓库内容同步至github仓库,使用命令$ git push -u origin master,之后同步只需要使用命令$ git push origin master

最后说明

最后修改:2016 年 11 月 12 日 03 : 08 PM
如果觉得我的文章对你有用,请随意赞赏

17 条评论

  1. [...]因为本地仓库要同步,所以必须本地连接github仓库。方法见 30分钟git 快速入门-操作远程仓库[...]

  2. 友人C

    测试垃圾评论

  3. 不懂不问

    感觉离你们这些大神的距离有点遥远

  4. xema

    :idea: 相比win还是比较喜欢linux,配上git容易使用,window一般都是那种GUI图形化,很少人使用命令

    1. hewro
      @xema

      昨天我一个室友说Linux是过时的操作系统,我们学习Linux是为了学习前人的思路..........

      1. xema
        @hewro

        不同意这个过时这个说法,现在企业都转型linux,安全人员也用linux,win是走向备用和入门或者是游戏等

        1. hewro
          @xema

          对吧,我也不同意!

          1. xema
            @hewro

            还好对着室友,对着别人会被嘲笑的

            1. hewro
              @xema

              他才不会咧 :grin:

  5. 1900

    嫌麻烦,用的svn =w=

    1. hewro
      @1900

      没用过SVN,有机会试试

  6. 蔡锶铎

    为啥不用ssh就能操作qwq

    1. hewro
      @蔡锶铎

      操作远程库当然要ssh呀,我写了的 :?:

      1. 蔡锶铎
        @hewro

        可是我每次不用ssh就可以远程操控啊qwq

        1. hewro
          @蔡锶铎

          那你是用github 桌面版的吧?

          1. 蔡锶铎
            @hewro

            一样的git qwq

            1. hewro
              @蔡锶铎

              那我就不造了,你一定有特别的技巧吧 :oops:

发表评论