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工作的流程如下:
在工作目录中修改文件。
暂存文件,将文件的快照放入暂存区域。
提交更新,找到暂存区域的文件,将快照永久性存储到 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/z
或 a/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的基本知识的更多相关文章
- 程序员必知必会Git的小知识
单人开发 1.初始化一个仓库 git init //cd到你工作的文件夹,初始化git仓库,默认会生成.git隐藏目录 2.配置自己的信息(Git 不喜欢不愿透漏姓名的人) git config -- ...
- git github简单知识
Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息.标记等内容 git remo ...
- Git入门——基础知识问答
问题一:为什么要选择Git作为Android开发的版本控制工具? 答:1)git是android项目和社区的统一语言. 2)高通版本发布频繁,需要与平台及时同步,快速re ...
- Git的一些知识
Git Git的特点: Git存储的是文件快照, 即整个文件内容, 并保存指向快照的索引 分布式 原理 这个之前面试实习的时候被问到过, 搞懂基本原理还是很重要的 Git的目录结构在执行git ini ...
- Git的相关知识
什么是git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Lin ...
- git 的相关知识
参考文章 git checkout HEAD <file> : master/HEAD -> index -> work directory index 暂存区有两行信息.分 ...
- [工具] Git版本管理(知识总结)
对以下文档进行了简要总结,方面复习: [工具] Git版本管理(一)(基本操作) [工具] Git版本管理(二)(分支) [工具] Git版本管理(三)(工作流) [工具] Git版本管理(四)(贡献 ...
- git的基础知识
git 分布式版本控制工具 具备的功能 协同开发 多人并行不悖修改服务器端的同一个文件 数据备份 不仅保持目录和文件当前状态,还能保存每一个提交的历史版本 版本管理 保存每一个版本的文件信息的时候做到 ...
- 认识Git并了解Git的基本知识
目录 认识Git 版本控制 版本控制的发展史 安装Git Git的核心概念 Git的使用原理 Git的工作流程 Git的基本流程 Git与SVN的区别 Git的基本使用 初始化Git 创建一个Git仓 ...
随机推荐
- Asp.net 用户控件和自定义控件注册
在ASPX页中注册用户控件的方法 <%@ Register Src="ListPicker.ascx" TagName="ListPicker" Tag ...
- 关于spring xml文件中的xmlns,xsi:schemaLocation(转)
使用spring也有一段时间了,配置文件也见了不少了,但是发现配置文件的beans里面有很多链接,一开始也很迷惑,所以抽了一点时间整里了一下. 首先我们看到的一个spring的配置文件大概如下面这个样 ...
- 进程间通信(java)--队列
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便 ...
- Android手机WiFi调试
一.判断手机是否能被电脑所识别: 二.输入adb tcpip 8888 设置连接的端口为8888(可以设置为任意数字,默认为5555, 后面连接的时候若不想输入端口可将端口设置为5555.)如下图所示 ...
- alsa project
http://www.alsa-project.org/main/index.php/Main_Page
- 每日英语:March Remembers King's Dream
President Barack Obama on Wednesday said the entire world drew strength from the March on Washington ...
- 随笔记:如何使用Python连接(/操作)Oracle数据库(Windows平台下)
遇到需求,我们需要用Python对Oracle数据库进行操作. 这次我们使用cx_Oracle Oracle Client 在安装cx_Oracle之前,先安装Oracle客户端. cx_Oracle ...
- 【NOI】9272 偶数个三
题目 链接:bajdcc/ACM 描述 在所有的N位数中,有多少个数中有偶数个数字3?结果模12345.(1<=N<=10000) 样例输入 2 样例输出 73 方法一:穷举 评价:最简单 ...
- js字母大小写字母转换
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- SharePoint自动化系列——通过PowerShell创建SharePoint Web
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...