Git基本操作

Git基本操作


点我下载(查看)原图 “Git基本操作.png”



Git仓库工作目录下的文件状态

已跟踪

  • Git已知的文件。工作一段时间以后,他们的状态可能是
    • 未修改
    • 已修改
    • 已放入暂存区

未跟踪

  • 除了上述文件以外的其他文件。

文件状态

  • 未跟踪 Untracked
  • 已跟踪
    • 暂存区 Staged
    • 非暂存区 Modified
    • 已提交 Unmodified


获取(新建)Git仓库

将一个本地目录转换为Git仓库(新建)

  • git init

从其他远程仓库中克隆一个仓库(获取)

  • git clone <url>
  • git clone <url> <自定义目录名>


忽略文件

在任意目录(子目录)下新建 .gitignore 文件

一个仓库可以只有一个 .gitignore 文件(一般情况都只有这一个文件),也可以在子目录下拥有额外的 .gitignore 文件

格式规范

  • 注释:所有空行或者以 # 开头的行都会被 Git 忽略。
  • 使用标准的 glob 模式匹配,(shell使用的简化版正则表达式)
    1. 星号(*)匹配零个或多个任意字符
    2. [abc] 匹配任何一个列在方括号中的字符 (这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c)
    3. 问号(?)只匹配一个任意字符
    4. 如果在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)
    5. 使用两个星号(**)表示匹配任意中间目录,比如 a/**/z 可以匹配 a/za/b/za/b/c/z
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。


记录每次更新到仓库

查看文件的状态

  • git status 输出内容:
    - changes to be committed 文件已改变,已暂存,准备提交
    - changes not staged for commit 已跟踪文件的内容发生了变化,但还没有放到暂存区。
    - untracked files 未跟踪的文件
  • git status -s(--short)简化输出

跟踪新文件(将一个文件添加到项目中)

  • git add <sth>

精准地将内容添加到下一次提交中

  • git add

git add有多重功能,主要有以下功能:

  1. 开始跟踪新的文件
  2. 把已跟踪的文件放到暂存区
  3. 合并时把有冲突的文件标记为已解决的状态


查看已暂存和未暂存的修改

查看未暂存的文件更新了哪些部分

  • git diff

查看已暂存的,将要添加到下次提交里的内容

  • git diff --staged
  • git diff --cached
    注:staged 和 cached 两个单词为近义词

使用diff插件来输出diff的分析结果

  • git difftool


提交更新

直接提交已暂存的内容

  • git commit

跳过使用暂存区域,直接将所有已经跟踪过的文件暂存起来一并提交

  • git commit -a
    小心,有时这个选项会将不需要的文件添加到提交中

直接提交已暂存内容,并使用简要提交信息

  • git commit -m "<提交信息>"

编辑提交信息

通过前两种方法(git commitgit commit -a)提交更新以后,git会调用系统中的文本编辑器(比如vim),用户需要在文本编辑器里编写提交信息,保存退出编辑器后git会正式提交信息。提交的信息不能为空!

提交过后的git返回的信息(提交后输出的内容)

  • 当前是在哪个分支提交的(master)
  • 本次提交的SHA-1校验和(bf530a8)
  • 本次提交中有多少文件修订过多少行添加或删改过


删除文件

从已跟踪的文件清单中移除(不删除文件)

  • git rm <file>
    运行上述命令,再运行git status 时,会在已暂存清单中看到该文件。
    下一次提交时,该文件就不再纳入版本管理了。

简单地从工作目录中手动删除文件

  • rm <file>
    运行上述命令,再运行git status时,会在未暂存清单中看到该文件。

删除之前已修改过,或删除已放到暂存区的文件

  • git rm -f <file> -f 即 force(强行)
    通过这种方法删除的数据不能被git恢复

把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然保留在当前工作目录中。(比如编译生成的文件或日志文件)

  • git rm --cached <file>

git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。

  • 例:git rm log/\*.log
    glob模式在上文 忽略文件 处有所介绍


移动文件

命令

  • git mv <file_from> <file_to>

Git 并不显式跟踪文件移动操作。 如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。
但是,此时如果查看状态信息(git status)实际上是能看到关于重命名操作的说明的

(输出)
renamed:    README.md -> README

实际上,运行git mv相当于运行了三条命令

mv README.md README
git rm README.md
git add README
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注