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

记录每次更新到仓库

工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。

在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。所以使用 Git 时的文件状态变化周期如图 2-1 所示。

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

检查文件状态:git status

跟踪新文件 暂存已修改文件 提交更新 :git add <filename>

忽略某些文件:可创建一个名为.gitignore的文件,然后列出要忽略的文件模式。如:

*.[oa]

此时忽略以.o 或者 .a结尾的文件.

文件 .gitignore 的格式规范如下:

  • 所有空行或者以注释符号  开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
# 此为注释 – 将被 Git 忽略

# 忽略所有 .a 结尾的文件

*.a

# 但 lib.a 除外 !lib.a

# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

/TODO

# 忽略 build/ 目录下的所有文件

build/

# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

doc/*.txt

# ignore all .txt files in the doc/ directory

doc/**/*.txt

 

查看以修改文件内容

git status会列出文件的状态。

查看文件具体修改了一些什么内容用:git diff(显示还没暂存起来的改动)

看已经暂存起来的文件和上次提交时的快照之间的差异:git di ff --cached 

改动后提交更新也用:首先用git status 查看各个文件的状态,在用git add 将改动后或者没有暂存的文件暂存 再使用git commit提交.

git commit 会启动文本编辑器(刚开始配置git时,

git config --global core.editor emacs

所指定的软件,一般是vim 或者emacs)以便输入本次提交说明,注意:提交说明是必须的。

跳过使用暂存区域:git commit -a Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤

移除文件

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

 “Changes not staged for commit” 部分(也就是未暂存清单)。

想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆 .a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:

$ git rm --cached readme.txt

$ git rm log/\*.log==>删除所有 log/ 目录下扩展名为 .log 的文件

$ git rm \*~==>会递归删除当前目录及其子目录中所有 ~ 结尾的文件

移动文件

git mv <filename> <filepath>

 

你可能感兴趣的:(git)