2.1获取Git仓库-2.2记录每次更新到仓库

时间:2021-10-16 20:50:54

2.1 获取 Git 仓库

获取 Git 仓库通常有两种方式

  1. 将尚未进行版本控制的本地目录转换为 Git 仓库;
  2. 从其它服务器 克隆 一个已存在的 Git 仓库。
在已存在目录中初始化仓库

首先进入该项目目录,之后执行

$ git init

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。

如果此项目中已有文件,应该开始追踪这些文件并进行初始提交。通过 git add 命令来指定所需的文件来进行追踪,然后执行 git commit :

$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
克隆现有的仓库

想获得一份已经存在了的 Git 仓库的拷贝就要用到克隆仓库的命令是 git clone <url>命令。当执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。

$ git clone https://github.com/TedXiongfeng/reading-notes.git

这会在当前目录下创建一个名为 “reading-notes” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。

如果想要自定义本地仓库名字,使用额外参数指定目录名

$ git clone https://github.com/TedXiongfeng/reading-notes.git qwer

目标目录名被指定为 qwer

2.2 记录每次更新到仓库

文件状态变化周期如图

2.1获取Git仓库-2.2记录每次更新到仓库

检查文件状态

git status 检查项目里,文件的状态,当提交后且没有新修改的时候如下

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

创建了一个 1.txt 后,Git 告诉你有一个未跟踪的文件,但是不会自动跟踪它

$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
1.txt nothing added to commit but untracked files present (use "git add" to track)
跟踪新文件

git add 跟踪新文件或文件夹

$ git add  1.txt

再查看文件状态,看到 1.txt 已被跟踪,并处于暂存状态

$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: 1.txt

Changes to be committed 这行下面的文件都是处于 staged 状态下

暂存已修改的文件

修改了本文件后,再运行 git status

$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: 2 Git 基础.md no changes added to commit (use "git add" and/or "git commit -a")

说明追踪文件内容已经变化,但还没有 staged ,运行 git add ,并查看文件状态

$ git add 2\ Git\ 基础.md
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: 2 Git 基础.md

但是如果这个时候又修改了文件内容

$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: 2 Git 基础.md Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: 2 Git 基础.md

文件同时出现在暂存区和非暂存区。 这怎么可能呢? 好吧,实际上 Git 只不过暂存了你运行 git add 命令时的版本。 如果你现在提交,文件的版本是你最后一次运行 git add 命令时的那个版本,而不是你运行 git commit 时,在工作目录中的当前版本。 所以,运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来

忽略文件

有些文件无需纳入 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 等。

    最简单的情况下,一个仓库可能只根目录下有一个 .gitignore 文件,它递归地应用到整个仓库中。 然而,子目录下也可以有额外的 .gitignore 文件。子目录中的 .gitignore 文件中的规则只作用于它所在的目录中。
查看已暂存和未暂存的修改

想要知道具体修改了什么地方,可以用 git diff 命令,此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --staged ( --staged 和 --cached 同义) 命令。 这条命令将比对已暂存文件与最后一次提交的文件差异

提交更新

git commit 会启动选择的文本编辑器来输入提交说明 ( 一般是 vim 或 emacs )

也可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行

跳过使用暂存区域

只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交

$ git commit -a -m 'message'
移除文件

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

$ git rm 1.txt
rm 'Pro Git/2 Git 基础/1.txt'
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: 1.txt

如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分看到:

Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: 1.txt

修改进入 staged 后,下一次提交时,该文件就不再纳入版本管理了。 如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f

想把文件从暂存区和仓库中删除,而不影响工作目录应该使用

 git rm --cached <file>

2.1获取Git仓库-2.2记录每次更新到仓库的更多相关文章

  1. Git(6)-- 记录每次更新到仓库(git clone、status、add、diff、commit、rm、mv命令详解)

    @ 目录 1.克隆现有仓库:git clone 2.检查当前文件状态 :git status 3.跟踪新文件:git add 4.暂存已修改的文件:git add 5.状态简览: git status ...

  2. git学习——记录每次更新到仓库

    记录每次更新到仓库 工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪.已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或 ...

  3. git杂记-记录每次更新到仓库

    git status 和 git diff的运用 git status 记录的是关于仓库文件是否有变更,例如是否被修改,是否被添加到暂村区.至于文件更改了什么内容该命令并不关心: git status ...

  4. Git 系列教程(5)- 记录每次更新到仓库

    文件状态 你工作目录下的每一个文件只有两种状态:tracked 或 untracked tracked 已跟踪 tracked 的文件是指那些被纳入了版本控制的文件 在上一次快照中有它们的记录,在工作 ...

  5. git更新到仓库

    记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝.接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库. 请记住,工作 ...

  6. Git的常用命令记录

    Git的常用命令记录 1.与远程仓库建立连接,即关联一个远程库 git remote add origin git@server-name:path/repo-name.git; 2.查看当前分支  ...

  7. git 学习笔记 —— 获取远端分支并修改后提交至远端仓库

    笔者最近进行开发过程中,所有参与者的代码需要通过 git 上传到远端仓库中,不同的模块对应不同的 git 分支,不同模块的数据需要从远端仓库中获取.这里记录下笔者从远端仓库中获取分支数据,进行修改,最 ...

  8. 记录--git命令行上传项目到github仓库

    由于公司一直使用的是的SVN,基本上都是内网,原来的git命令都快忘记了,当然也是自己太懒,平时都是直接拖到github上.今天打开idea后突然看到了原来自己写好的一个项目,就想将它上传到githu ...

  9. Git基础知识 —— 获取Git仓库

    前言 官方提供了两种获取Git仓库的方法,第一种是在本地现有项目目录下导入所有文件到Git中,第二种就是从Git仓库中clone项目到本地 这里就不说Git的安装了哈,有需要的小伙伴可以查看该博文:h ...

随机推荐

  1. http数据返回值

    HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 ...

  2. shell编程学习

    1.项目中用到Linux的crontrab Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cr ...

  3. zeromq 学习和python实战

    参考文档: 官网 http://zeromq.org/ http://www.cnblogs.com/rainbowzc/p/3357594.html   原理解读 zeromq只是一层针对socke ...

  4. (转)IOS UITableView学习

    转自:http://www.cnblogs.com/smileEvday/archive/2012/06/28/tableView.html          作者:一片枫叶 看TableView的资 ...

  5. &lbrack;转&rsqb; AOP面向切面编程

    AOP面向切面编程 AOP(Aspect-Oriented Programming,面向切面的编程),它是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. ...

  6. LINUX中的虚拟文件系统结构

    我的博客:www.while0.com 以下以2.6.32版本的内核源码为例: 虚拟文件系统与具体文件系统之间是几组操作函数的对应,包括file_operations,dentry_operation ...

  7. 关于 jsp&colon;include 传参的用法

    引用模版页面的代码,如下: <jsp:include page="/WEB-INF/template/nav_template.jsp">     <jsp:pa ...

  8. Maven项目结合POI导出Excl表格Demo-亲测可用

    Maven项目结合POI导出Excl表格 一.POM文件添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&gt ...

  9. IIS6服务器的请求流程&lpar;图文&amp&semi;源码&rpar;

    1.IIS 7开发与管理完全参考手册  http://book.51cto.com/art/200908/146040.htm 2.Web服务IIS 6   https://technet.micro ...

  10. nginx 安装echo模块

    学习资源: https://www.cnblogs.com/xwupiaomiao/p/7997938.html https://blog.csdn.net/hb1707/article/detail ...