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

原文链接: https://www.cnblogs.com/yinheyi/p/6285035.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    GIt的基本知识

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/395426

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月4日 上午9:50
下一篇 2023年4月4日 上午9:50

相关推荐