Git 学习笔记(一)基础命令

 

git config --global user.email "user@example.com"

cd [project_path]

git init


git add

——(--all 或 -a,添加所有)(--interactive 可以开启交互模式,选取具体的修改加入待提交的队列)

—— 将指定的修改加入暂存区(staging area,索引 index)

—— 通过 git reset HEAD filename 可以将已加入暂存区的文件移出暂存区(如果文件在被 git add 之后有新的修改,则新的修改将被丢弃

—— 在项目的根目录下创建 .gitignore 文件,其中列举不需要提交的文件(具体文件、包含在某个目录里的文件、具有特定模式的文件、例外文件等),那么在文件加入暂存区的时候就会忽略指定的文件。如果只在子目录里创建 .gitignore 文件,则只影响相应目录下的结果。如果要忽略一个已经被加入到版本里的文件,那么可以用 update-index 命令的 --assume-unchanged。

—— 每一次 add 操作只将已经发生的更改添加到暂存区,add 操作之后发生的修改需要再次执行 add 才会被加入暂存区。

git stash

—— 将工作区和暂存区中的修改保存在储藏栈(stash stack,缓存区)

—— 通过 git stash list 可以查看位于储藏栈的修改

—— 通过 git stash pop 恢复位于栈顶的修改

—— 通过 git stash pop stash@{1} 恢复指定的修改

git rm

—— 不在追踪某个文件的变化

git commit

—— 选择性提交有利于某些修改之间的隔离。将不同的修改分多次提交可以使得被提交的历史记录更清晰,而且更方便后期定位和获取(git checkout)某个单一的修改。


git status

—— 可查看当前工作区中已经发生的所有修改(包含增删文件),以及已经加入暂存区的修改。使用 --short 选项可以让输出显示更紧凑。

—— 已加入暂存区可以提交的修改:changes to be committed

—— 未加入暂存区的修改:changed but not updated

—— 未被跟踪的文件(新增文件):untracked files

git diff <a> <b> <c>

——(a、b 可以是不同的分支、标签、散列值、HEAD等;其中 “版本标识^!” 表示比较当前提交与上一次提交;c 可以用于指定是哪个目录或文件的比较)

——(git diff --stat <a> <b> 可以统计每个文件中的修改的数量)

——(git diff --staged 可以查看 HEAD 与暂存区,即已经加入待提交队列的文件的区别)

——(git diff 可以查看工作区与暂存区之间的差别)

git log

——(-n 显示最近几次的提交)

——(--oneline 单行显示每一次提交,--format 格式化输出)

——(--stat 只显示被修改的文件,--dirstat 显示那些包含被修改文件的目录,--shortstat 显示项目中有多少文件被修改、新增或删除)

——(--graph 图形化显示各提交之间的关系)


git clone

git pull(= git fetch + git merge)

git push


git checkout <版本标签或散列值>   ——    恢复/回滚到某个版本

git fsck    ——    验证版本库的完整性


版本库:

项目版本库(blessed repository)

子项目的版本库(子模块,submodule)

裸版本库(bare repository)


git 的文件存储机制

—— git hash-object -w filename 可以得到一个文件对象的 hash 值

—— git cat-file -p hash值 可以 cat 该 hash 值对应的文件的内容

—— git 通过维护文件对象的 hash 值来管理文件的存储

posted @ 2018-08-07 16:04  RickyShilx  阅读(208)  评论(0编辑  收藏  举报