zoukankan      html  css  js  c++  java
  • GIt的基本知识

    以前已经把git 看过一遍了,由于好久没有用它 ,现在已经忘了。现在呢,要用它进行同步代码,所以呢,我打算记一记,再复习复习。

    参考文件:https://git-scm.com/book/zh/v2

    第一章: 了解GIt

    Git 的特点:

    1. 直接记录快照,而非差异比较;

    2. Git 的基本所有的操作都是在本地进行的;因为它本地有数据库的镜像;

    3. git的完整性,Git 中所有数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

    记住 Git 的三种状态:

    已提交(committed)、已修改(modified)和已暂存(staged)。   已提交表示数据已经安全的保存在本地数据库中。已修改表示修改了文件,但还没保存到数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

    由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。  

    Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

    工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

    暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作“索引”,不过一般说法还是叫暂存区域。

    所以,基本的Git工作的流程如下:

    1. 在工作目录中修改文件。

    2. 暂存文件,将文件的快照放入暂存区域。

    3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

    git 的安装与配置:

    1. 我的电脑为debian系统的,所以呢,最简单的方法就是:sudo apt-get install git. 其它系统详细参考:https://git-scm.com/download/linux

    2. 安装完成以后,现在来配置一下我们的Git 工作环境。

    它的配置可以通过命令 git config 工具来进行配置,也可以直接修改配置文件。反正通过命令来配置也是修改配置文件的。

    配置分为三个等级:

    第一, /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置,如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。

    第二:~/.gitconfig~/.config/git/config 文件:只针对当前用户。可以传递 --global 选项让 Git 读写此文件。

    第三:当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。

    现在,我们通过 git config工具来配置一些基本的信息:

    用户信息:

    $ git config --global user.name "John Doe"
    $ git config --global user.email johndoe@example.com

    文本编辑器:

    $ git config --global core.editor emacs

    通过 git config –l 可以列出你已经配置完的信息;通过 git config 可以列出 git config的相关选项来。

    3. git 的帮助: git help 可以查看一些详细的操作等。

    第二:基本的操作:

    获取 Git 仓库:

    两个方法:

    1,把本地的文件导入到git库中; 用 git init ,就OK了。 这时,会出现一下.git的目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件。

    2. 从服务器克隆出一个现有的git库; 命令为:

    git clone url 
    或 git clone url 目录名   //用于自定义本地的目录名字,如果省略的话,就会用服务器上的目录名;

    git支持的传输协议:https:// 协议, git:// 协议,还可以用使用 SSH 传输协议,比如 user@server:path/to/repo.git

    qeq

     

    查看文件状态:

    git status 命令的输出十分详细,但其用语有些繁琐。如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格式输出。

    说明:对于-s的命令,新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。

    忽略文件:

    很多时候我们不需要一些文件(比如日志文件,或者编译过程中创建的临时文件等)纳入git的管理,这时,我们可以忽略它。方法为:创建一个名为 .gitignore 的文件,列出要忽略的文件模式。       文件 .gitignore 的格式规范如下:

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

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

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

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

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

    所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/za/b/c/z

    提交至仓库过程:

    现在的暂存区域已经准备妥当可以提交了。在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。

    1. 作用命令 git add 跟踪一个文件。 git add 文件名或目录。 跟踪以后相当于把文件放置了暂存区中;

    2. 用 git commit 提交更新 。

      git commit 文件名, 表示提交某一个文件, git commit 提交所有的文件; 这时会弹出一个对话框,写入一些提交的备注就OK了。。也可以用 –m 加备注信息;

      当我们要跳过 add 直接提交时,那么加 –a 参数;

    文件的删除与改名:

    1. 从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。删除文件时,不要直接从目录下面把文件删除掉。

    2. 当从Git 中移除某个文件,并且你想让文件保留在磁盘时,我们用:--cached选项,即 git rm –cached

    3. 当移动与重命名文件时,我们用 git mv 命令,这个命令其实相当于运行了三个命令:

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

    4. 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:即:git commit –amend 命令。

    5. 如果我们想从到 暂存区里把已经 add的文件删除的话,我们用 git reset 命令哦;

    6. 假如我们已经在我们的工作目录里修改并保存了一个文件,现在我们不想修改了,想恢复它,怎么办??我们可以用 git checkout -- 文件名 来恢复它。注意:

    你需要知道 git checkout — [file] 是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。 除非你确实清楚不想要那个文件了,否则不要使用这个命令。

    7. 最后,要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff,若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令,具体看help.

    8. 查看提交历史,用git log ,它有很多选项的,用到的话,自己查看一下子啦。

    远程仓库使用

    1. it remote 命令查看远程服务器的简写,记住:origin 是 git 仓库服务器的默认名字。

    git remote –v ,会显示需要读写的远程仓库的简写与URL.

    2. git remote add <short name> <url> 添加一个新的远程git 仓库。

    3. git fetch 命令 可以访问远程库,从中拉取所有你没有的数据。注意:git fetch 命令会将数据拉取到你的本地仓库,它并不会自动合并或修改你当前的工作。

    使用 git pull 可以自动抓取然后合并远程分支到当前分支。

    4. git push <remote-name> <branch-name> ,把东西推送到上游。

    5. 使用git remote show [remote-name]名字 查看一个远程仓库的更多信息。

    6. git remote rename <原名字> <现名字> 可以去修改一个远程仓库的名字,注意:这样也同样也会修改远程分支的名字。

    7. git remote rm 可以移除一个远程仓库。

  • 相关阅读:
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
    UVA 11100 The Trip, 2007 (贪心)
    JXNU暑期选拔赛
    计蒜客---N的-2进制表示
    计蒜客---线段的总长
    计蒜客---最大质因数
    JustOj 2009: P1016 (dp)
  • 原文地址:https://www.cnblogs.com/yinheyi/p/6285035.html
Copyright © 2011-2022 走看看