zoukankan      html  css  js  c++  java
  • 关于Git我们不得不知道的事(一)

    一.什么是Git?

    Git是目前世界上最先进的分布式版本控制系统(没有之一)。

    Git可以协助我们很方便的管理我们的项目,我们随时可以找回(或者回到)我们之前任何一个时刻的项目;还可以让同事或者开发小组成员一同开发;是不是很方便!

    二.Git的使用方法

    安装Git(这些在官网教程写的很清楚就不啰嗦再写一遍了)

    获取Git仓库

    有两种取得 Git 项目仓库的方法。 第一种是在现有项目或目录下导入所有文件到 Git 中; 第二种是从一个服务器克隆一个现有的 Git 仓库。

    1,进入想管理的项目目录,执行下面命令:

    $ git init

    你将看到一个.git结尾的子目录

    2,执行下面代码开始跟踪文件并且提交(git add 后面加文件名 执行后表示你要指定哪些文件被跟踪并提交

    $ git add *.c
    $ git add LICENSE
    $ git commit -m 'initial project version'

    克隆现有仓库

    1,克隆仓库的命令格式是 git clone +(仓库地址)注意⚠️下面代码不要直接复制

    $ git clone https://github.com/libgit2/libgit2

    2, 你想在克隆远程仓库的时候,自定义本地仓库的名字下面的命令 git clone +(仓库地址)+(自定义仓库名字)注意⚠️下面代码不要直接复制

    $ git clone https://github.com/libgit2/libgit2 mylibgit

    检查当前仓库文件状态

    1,要查看哪些文件处于什么状态,可以用 git status 命令

    $ git status
    On branch master
    nothing to commit, working directory clean

    2,我们在项目下创建一个新的 README 文件

    $ echo 'My Project' > README
    $ git status
    On branch master
    Untracked files:
    (use "git add <file>..." to include in what will be committed)
    
        README
    
    nothing added to commit but untracked files present (use "git add" to track)
    在状态报告中可以看到新建的 README 文件出现在 Untracked files 下面(表示未跟踪的文件)

    跟踪新文件

    1,用命令 git add 开始跟踪一个文件。 所以,要跟踪 README 文件 执行下面的命令

    $ git add README

    此时再运行 git status 命令,会看到 README 文件已被跟踪,
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        new file:   README

    git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。

    如何暂存已修改文件

    1,首先你得将一个文件跟踪 也就是 git add + (文件名) ;然后试着将此文件修改;最后运行 git status 命令,你会看到 

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        new file:   README
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
        modified:   CONTRIBUTING.md

    ⚠️这里你会有点看不懂:因为CONTRIBUTING.md文件哪来的?

      它是通过echo “My Project” > CONTRIBUTING.md 先创建好,然后再用了 git add CONTRIBUTING.md 命令跟踪文件,再修改文件内容,这样就会再modified栏(说明已跟踪文件的内容发生了变化,但还没有放到暂存区)暂存了,然后记得要看到以上反馈要 git status

    vim CONTRIBUTING.md
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        new file:   README
        modified:   CONTRIBUTING.md
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
        modified:   CONTRIBUTING.md

    现在CONTRIBUTING.md同时出现在暂存区和非暂存区,怎么会是  如果你现在提交,CONTRIBUTING.md 的版本是你最后一次运行 git add 命令时的那个版本,而不是你运行 git commit 时,在工作目录中的当前版本。 所以,运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来

    $ git add CONTRIBUTING.md
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        new file:   README
        modified:   CONTRIBUTING.md

    状态简览

    1,使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格式输出。

    $ git status -s
     M README
    MM Rakefile
    A  lib/git.rb
    M  lib/simplegit.rb
    ?? LICENSE.txt

    ??表示新添加为跟随文件

    A 新添加到暂存文件

    M 有两个出现的位置:1,出现在右边表示该文件被修改了但还没有放入暂存区  2,左边表示该文件被修改并放入暂存区

    忽略文件

    一般我们总会有些文件无需纳入 Git 的管理

    方法:

    我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。 来看一个实际的例子:

    $ cat .gitignore
    *.[oa]
    *~
     第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。 第二行告诉 Git 忽略所有以波浪符(~)结尾的文件, 此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。 要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

    文件 .gitignore 的格式规范如下:

    • 所有空行或者以  开头的行都会被 Git 忽略。

    • 可以使用标准的 glob 模式匹配。

    • 匹配模式可以以(/)开头防止递归。

    • 匹配模式可以以(/)结尾指定目录。

    • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

    查看已暂存和未暂存的修改

    git diff 命令

    提交更新

    现在的暂存区域已经准备妥当可以提交了。 在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。 这些修改过的文件只保留在本地磁盘。 所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit

    $ git commit

    这种方式会启动文本编辑器以便输入本次提交的说明。 (默认会启用 shell 的环境变量 $EDITOR 所指定的软件,一般都是 vim 或 emacs。当然也可以使用 git config --global core.editor 命令设定你喜欢的编辑软件。)

    编辑器会显示类似下面的文本信息(本例选用 Vim 的屏显方式展示):

    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    # On branch master
    # Changes to be committed:
    #	new file:   README
    #	modified:   CONTRIBUTING.md
    #
    ~
    ~
    ~
    ".git/COMMIT_EDITMSG" 9L, 283C

    好,现在你已经创建了第一个提交!可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过。

    $ git commit -m "Story 182: Fix benchmarks for speed"
    [master 463dc4f] Story 182: Fix benchmarks for speed
     2 files changed, 2 insertions(+)
     create mode 100644 README

    跳过使用暂存区域

    给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:

    移除文件

    1,移除文件。

    git rm + (文件名)

    2,当你忘记添加 .gitignore文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 为达到这一目的,使用 --cached 选项:

    $ git rm --cached + (文件名)

    git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。 比方说:

    $ git rm log/*.log

    注意到星号 * 之前的反斜杠 , 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开。 此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:

    $ git rm *~

    该命令为删除以 ~ 结尾的所有文件。

    移动文件

     要在 Git 中对文件改名,可以这么做:

    $ git mv + (旧文件名) + (新文件名)

    它会恰如预期般正常工作。 实际上,即便此时查看状态信息,也会明白无误地看到关于重命名操作的说明:

    $ git mv README.md README
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        renamed:    README.md -> README

    其实,运行 git mv 就相当于运行了下面三条命令:

    $ mv README.md README
    $ git rm README.md
    $ git add README

     

     

     

     

     

     

     

    《《 未完待续 》》

  • 相关阅读:
    loading加载动画
    js获取文本的行数
    获取浏览器结尾生成的参数,提交的时候对其做判断
    js获取当前浏览器地址栏的链接,然后在链接后面加参数
    a链接在新窗口打开
    js随机出现2个数字
    css进行中打点效果
    jqeury显示前几个,隐藏后几个,点击后隐藏前几个显示后几个
    jQuery 源码解析(七) jQuery对象和DOM对象的互相转换
    jQuery 源码解析(六) $.each和$.map的区别
  • 原文地址:https://www.cnblogs.com/Webzhoushifa/p/9363070.html
Copyright © 2011-2022 走看看