Pro Git学习笔记(二)

Git基本命令

    git init

        执行这个命令后,会在当前目录下建立一个.git的隐藏文件。这个文件下包含了初始化Git仓库的所有文件。具体内容有:

        (暂时不知道这些文件的具体含义,留白待更)

           执行了这个init命令仅仅是做了一些初始化操作,并没有跟踪任何文件。

    git clone

        命令格式是:git clone [url],例如:git clone https://github.com/libgit2/libgit2。这个命令的执行是获取url所指向的一份仓库副本,几乎包含此仓库的所有数据(为什么是几乎?),默认是此Git仓库的每一个文件的每一个版本的所有数据。git clone使用的协议有https://、git://或着SSH协议。

    git status

    查看文件的状态。这里需要了解文件有哪些状态,下图能够给予直观的解释:

    重点解释未跟踪文件的定义(Untracked files),这类文件是Git快照未包括的文件,我的理解是这类文件未与Git建立联系。

    git status --s或git status --short命令可以等到更加紧凑的输出。

    git add

    跟踪文件,将未跟踪文件纳入到Git中管理。参数是文件名或目录的路径,如果参数是目录则会递归地跟踪该目录下的所有文件。这个命令的含义是"添加内容到下一次提交中",add的意思是"将......添加到暂存区域,等待提交"。

    注意,如果在git add后又修改了文件,则git status会出现文件同时存在暂存区和非暂存区的情况,这是因为Git暂存的是add命令后的版本,不是工作目录的当前版本。

    cat .gitignore

    建立.gitignore这个文件,定义一些文件模式,则Git会忽略这些文件,不进行管理。文件格式规范如下:

  • 所以空行或以#开头的文件
  • 标准glob模式匹配的文件
  • 匹配模式以/开头防止递归
  • 匹配模式以/结尾指定目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反

    git diff

    以文件补丁的形式查看文件的具体变化,比较的是工作目录中文件与暂存区域快照的区别,也就是修改后未暂存的文件变化,注意diff比较的不是自从上次提交后的文件变化。git diff --cached或git diff --staged表示已暂存的尚未提交的文件变化。

    git commit

    将暂存区域的文件提交到仓库。git commit -v可以展示更详细的关于修改内容的提示,git commit -m添加一些提交信息。git commit -a可以跳过暂存区域,将所有已跟踪文件的修改一起送入到仓库,即省略了git add过程。

    git rm

    从暂存区域移除某个已跟踪文件。直接使用这个命令会导致工作目录的文件也被删除,git rm --cached可以解决这个问题。git rm --f强制删除之前修改过并且已经放到暂存区域的文件(没太理解清楚!)。

    git mv

    文件重命名。命令格式是:git mv file_from file_to。

    git log

    查看提交历史。直接使用这个命令会列出所有的历史信息,最近的条目在上。git log -p显示每次提交的内容差异。git log -stat显示每次提交的简略信息。--pretty选项可以以不同于默认格式的方式展示历史信息。例如git log --pretty==oneline、git log --pretty==short、git log --pretty==full或git log --pretty==fuller等。

    最灵活的是format选项,可以定制各种格式,常用选项如下:

选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

    例:git log --pretty=format:"%h - %an, %ar : %s"。

    git log的常用选项如下:

选项 说明
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和
format(后跟指定格式)。
   

    限制git log输出的选项:

选项 说明
-(n) 仅显示最近的 n 条提交,如git log -2
--since, --after  仅显示指定时间之后的提交
--until, --before  仅显示指定时间之前的提交
--author 仅显示指定作者相关的提交
--committer 仅显示指定提交者相关的提交
--grep 仅显示含指定关键字的提交
-S 仅显示添加或移除了某个关键字的提交

    git commit --amend

    这个命令可以尝试重新提交。如果自从上次提交以后还未进行修改,那么快照不会改变,只是修改了提交信息,例如在某次提交后发现落下了一个文件,则可以使用这个命令进行补充。如:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

    git reset HEAD <file>...

    这个命令用来取消暂存,也就是将文件从暂存区域取出,下次提交时不会存入仓库。

    git checkout --<file>

    这个命令用来取消修改,使文件回到上次提交时的状态。git checkout -b <new branch>新建一个分支并切换到此分支

    git remote 

    查看所有已经配置的远程仓库服务器。git remote -v显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。git remote add <shortname><url>用来添加一个新的远程服务器,并且可以为其设置一个简写名称。

    git fetch [remote-name]

    这个命令会拉取远程服务器中本地缺少的数据,但是它不会修改或合并本地工作目录,需要手动操作。

    git pull

    这个命令与git fetch的区别在于它会自动合并工作目录,也就是pull=fetch+merge。

    git push [remote-name] [branch-name]

    将[branch-name]推送到[remote-name],将本地工作目录的内容备份到服务器,但是前提要求具有[remote-name]的写入权限,并且之前无人推送过更新,否则将被拒绝执行此命令。

    git remote show [remote-name]

    查看[remote-name]的更多信息。

    git remote rename

    用于修改远程仓库的简写名字。

    git remote rm

    移除远程仓库。

    git tag

    列出所有标签。选项-l可以完成特定模式标签的展示。

    Git中有两种标签:轻量标签和附注标签。轻量标签是对特定提交的引用,更像一种不会改变的分支。附注标签则存储在Git数据库中,包含着许多信息,例如打标签者的名字、邮件地址、日期时间等,更为常用。git tag -a可以创建一个附注标签,同时使用-m选项指定存储在标签中的信息。git show [tag-name]可以展示这个标签的信息。轻量标签只需要在git tag后面加入名字即可创建。

    git push [remote-name] [tag-name]可以将标签推送到远程服务器,--tags用来推送多个标签。

    git checkout -b [branch-name] [tag-name] 在特定的标签上创建一个分支,因为标签不能像分支一样移动,这种方法可以是工作目录和仓库上的标签一致。

    git config --global alias.xx xx

    这个命令用来为特定命令设置一个别名。

                                                                                                                                                                        北京        15th

    

    

    

猜你喜欢

转载自blog.csdn.net/u011063112/article/details/81046806