以前已经把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 可以移除一个远程仓库。

GIt的基本知识的更多相关文章

  1. 程序员必知必会Git的小知识

    单人开发 1.初始化一个仓库 git init //cd到你工作的文件夹,初始化git仓库,默认会生成.git隐藏目录 2.配置自己的信息(Git 不喜欢不愿透漏姓名的人) git config -- ...

  2. git github简单知识

    Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息.标记等内容 git remo ...

  3. Git入门——基础知识问答

    问题一:为什么要选择Git作为Android开发的版本控制工具?     答:1)git是android项目和社区的统一语言.            2)高通版本发布频繁,需要与平台及时同步,快速re ...

  4. Git的一些知识

    Git Git的特点: Git存储的是文件快照, 即整个文件内容, 并保存指向快照的索引 分布式 原理 这个之前面试实习的时候被问到过, 搞懂基本原理还是很重要的 Git的目录结构在执行git ini ...

  5. Git的相关知识

    什么是git        Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Lin ...

  6. git 的相关知识

    参考文章 git checkout HEAD <file> :  master/HEAD -> index -> work directory index 暂存区有两行信息.分 ...

  7. [工具] Git版本管理(知识总结)

    对以下文档进行了简要总结,方面复习: [工具] Git版本管理(一)(基本操作) [工具] Git版本管理(二)(分支) [工具] Git版本管理(三)(工作流) [工具] Git版本管理(四)(贡献 ...

  8. git的基础知识

    git 分布式版本控制工具 具备的功能 协同开发 多人并行不悖修改服务器端的同一个文件 数据备份 不仅保持目录和文件当前状态,还能保存每一个提交的历史版本 版本管理 保存每一个版本的文件信息的时候做到 ...

  9. 认识Git并了解Git的基本知识

    目录 认识Git 版本控制 版本控制的发展史 安装Git Git的核心概念 Git的使用原理 Git的工作流程 Git的基本流程 Git与SVN的区别 Git的基本使用 初始化Git 创建一个Git仓 ...

随机推荐

  1. Asp.net 用户控件和自定义控件注册

    在ASPX页中注册用户控件的方法 <%@ Register Src="ListPicker.ascx" TagName="ListPicker"  Tag ...

  2. 关于spring xml文件中的xmlns,xsi:schemaLocation(转)

    使用spring也有一段时间了,配置文件也见了不少了,但是发现配置文件的beans里面有很多链接,一开始也很迷惑,所以抽了一点时间整里了一下. 首先我们看到的一个spring的配置文件大概如下面这个样 ...

  3. 进程间通信(java)--队列

    前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便 ...

  4. Android手机WiFi调试

    一.判断手机是否能被电脑所识别: 二.输入adb tcpip 8888 设置连接的端口为8888(可以设置为任意数字,默认为5555, 后面连接的时候若不想输入端口可将端口设置为5555.)如下图所示 ...

  5. alsa project

    http://www.alsa-project.org/main/index.php/Main_Page

  6. 每日英语:March Remembers King's Dream

    President Barack Obama on Wednesday said the entire world drew strength from the March on Washington ...

  7. 随笔记:如何使用Python连接(/操作)Oracle数据库(Windows平台下)

    遇到需求,我们需要用Python对Oracle数据库进行操作. 这次我们使用cx_Oracle Oracle Client 在安装cx_Oracle之前,先安装Oracle客户端. cx_Oracle ...

  8. 【NOI】9272 偶数个三

    题目 链接:bajdcc/ACM 描述 在所有的N位数中,有多少个数中有偶数个数字3?结果模12345.(1<=N<=10000) 样例输入 2 样例输出 73 方法一:穷举 评价:最简单 ...

  9. js字母大小写字母转换

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  10. SharePoint自动化系列——通过PowerShell创建SharePoint Web

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...