|
| 命令 |
|
|
| $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
| 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改: |
|
| $ git config --list | 查看配置 |
|
| $ git help <verb> $ git <verb> --help $ man git-<verb> | 使用 Git 时需要获取帮助
|
|
| $ git init | 项目git 初始化 |
|
| $ git add *.c $ git add LICENSE $ git commit -m 'initial project version' | 添加到下一次提交
|
|
| $ git clone https://github.com/libgit2/libgit2 $ git clone https://github.com/libgit2/libgit2 mylibgit | 克隆现有的仓库 |
|
| $ git status $ git status -s 命令或 git status --short 命令 | 检查当前文件状态 |
|
| git diff git diff —-cached git diff -—staged | 查看已暂存和未暂存的修改
|
|
| $ git commit | 提交更新 |
|
| $ rm PROJECTS.md $ git status $ git rm PROJECTS.md | 彻底移除 |
|
| $ git rm --cached README $ git rm log/\*.log $ git rm \*~ | 从add后的暂存中提交总移除 |
|
| $ git mv file_from file_to | 移动文件和修改文件名 |
|
| $ git log $ git log -p -2 $ git log --pretty=oneline $ git log --pretty=format:"%h - %an, %ar : %s" | 历史 一个常用的选项是 -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交: |
|
| $ git log --oneline —decorate | 你可以简单地使用 git log 命令查看各个分支当前所指的对象。 提供这一功能的参数是 --decorate。 |
|
| $ git commit --amend | 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交: 这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变,而你所修改的只是提交信息。 |
|
| $ git reset HEAD CONTRIBUTING.md | 取消暂存的文件 |
|
| $ git checkout -- CONTRIBUTING.md | 撤消对文件的修改 你需要知道 git checkout -- [file] 是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。 除非你确实清楚不想要那个文件了,否则不要使用这个命令。
|
|
| $ git remote -v $ git remote $ git remote add pb https://github.com/paulboone/ticgit $ git fetch pb | 查看远程仓库:
现在你可以在命令行中使用字符串 pb 来代替整个URL。 例如,如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb: |
|
| $ git fetch [remote-name] $ git fetch [remote-name] —-all | 从远程仓库中抓取与拉取 |
|
| $ git pull | 自动的抓取然后合并远程分支到当前分支 |
|
| $ git push origin master
| 推送到远程仓库 |
|
| $ git remote show origin | 查看远程仓库 |
|
| $ git remote rename pb paul $ git remote rm paul | 远程仓库的移除与重命名
|
|
| $ git tag
| 列出标签 |
|
| $ git tag -a v1.4 -m 'my version 1.4' | 在 Git 中创建一个附注标签是很简单的。 最简单的方式是当你在运行 tag 命令时指定 -a 选项: -m 选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会运行编辑器要求你输入信息。 |
|
| $ git show v1.4 | 通过使用 git show 命令可以看到标签信息与对应的提交信息: |
|
| $ git tag v1.4-lw | 另一种给提交打标签的方式是使用轻量标签。 轻量标签本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息。 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字 |
|
| $ git tag -a v1.2 9fceb02 | 后期打标签 你也可以对过去的提交打标签。 假设提交历史是这样的: $ git log --pretty=oneline 166ae0c4d3f420721acbb115cc33848dfcc2121a started write support 9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile 964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo 现在,假设在 v1.2 时你忘记给项目打标签,也就是在 “updated rakefile” 提交。 你可以在之后补上标签。 要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和): $ git tag -a v1.2 9fceb02 可以看到你已经在那次提交上打上标签了:
|
|
| $ git push origin v1.5 | 共享标签 默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样 - 你可以运行 git push origin [tagname]。 |
|
| $ git checkout -b version2 v2.0.0 | 检出标签 在 Git 中你并不能真的检出一个标签,因为它们并不能像分支一样来回移动。 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname] 在特定的标签上创建一个新分支
|
|
| $ git branch testing | 分支创建 |
|
| $ git log --oneline —decorate | 你可以简单地使用 git log 命令查看各个分支当前所指的对象。 提供这一功能的参数是 --decorate。 |
|
| $ git checkout testing | 分支切换 这样 HEAD 就指向 testing 分支了。 |
|
| $ git log --oneline --decorate --graph --all | 项目分叉历史 |
|
| $ git branch -v | 查看每一个分支的最后一次提交,可以运行 git branch -v 命令: |
|
| $ git branch —merged $ git branch --no-merged
| --merged 与 --no-merged 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。如果要查看哪些分支已经合并到当前分支,可以运行 git branch --merged: |
|
| git ls-remote (remote) git remote show (remote) | 通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 |
|
| git clone -o booyah, | 远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样。 同时“master” 是当你运行 git init 时默认的起始分支名字,原因仅仅是它的广泛使用,“origin” 是当你运行 git clone 时默认的远程仓库名字。 如果你运行 git clone -o booyah,那么你默认的远程分支名字将会是 booyah/master。 |
|
| git fetch origin git fetch —all 是将所有的都同步下来 | 从服务器同步下来 |
|
| git push (remote) (branch): | 推送到服务器
|
|
|
|
|
|
|
|
|
|
| HEAD | 上一次提交的快照,下一次提交的父结点(运行git commit 以后的) |
|
| Index | 预期的下一次提交的快照(运行git add 以后的) |
|
| Working Directory | 沙盒(工作文档位置) |
|
|
|
|
|
| $ cat .gitignore *.[oa] *~
| 第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。 此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。 要养成一开始就设置好 .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 文件的例子: # no .a files *.a
# but do track lib.a, even though you're ignoring .a files above !lib.a
# only ignore the TODO file in the current directory, not subdir/TODO /TODO
# ignore all files in the build/ directory build/
# ignore doc/notes.txt, but not doc/server/arch.txt doc/*.txt
# ignore all .pdf files in the doc/ directory doc/**/*.pdf
https://git-scm.com/book/zh/v2/Git-基础-记录每次更新到仓库
|
|
| log | 17: 历史 git log git log 有许多选项可以帮助你搜寻你所要找的提交, 接下来我们介绍些最常用的。 一个常用的选项是 -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交: $ git log -p -2 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile 该选项除了显示基本信息之外,还附带了每次commit 的变化。 当进行代码审查,或者快速浏览某个搭档提交的 commit 所带来的变化的时候,这个参数就非常有用了。 你也可以为 git log 附带一系列的总结性选项。 比如说,如果你想看到每次提交的简略的统计信息,你可以使用 --stat 选项: 另外一个常用的选项是 --pretty。 这个选项可以指定使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。 比如用 oneline 将每个提交放在一行显示,查看的提交数很大时非常有用。 另外还有 short,full 和 fuller 可以用,展示的信息或多或少有些不同,请自己动手实践一下看看效果如何。 $ git log --pretty=oneline ca82a6dff817ec66f44342007202690a93763949 changed the version number 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test a11bef06a3f659402fe7563abf99ad00de2209e6 first commit 但最有意思的是 format,可以定制要显示的记录格式。 这样的输出对后期提取分析格外有用 — 因为你知道输出的格式不会随着 Git 的更新而发生改变: $ git log --pretty=format:"%h - %an, %ar : %s" ca82a6d - Scott Chacon, 6 years ago : changed the version number 085bb3b - Scott Chacon, 6 years ago : removed unnecessary test a11bef0 - Scott Chacon, 6 years ago : first commit git log --pretty=format 常用的选项 列出了常用的格式占位符写法及其代表的意义。 Table 1. git log --pretty=format 常用的选项 选项 说明 %H 提交对象(commit)的完整哈希字串 %h 提交对象的简短哈希字串 %T 树对象(tree)的完整哈希字串 %t 树对象的简短哈希字串 %P 父对象(parent)的完整哈希字串 %p 父对象的简短哈希字串 %an 作者(author)的名字 %ae 作者的电子邮件地址 %ad 作者修订日期(可以用 --date= 选项定制格式) %ar 作者修订日期,按多久以前的方式显示 %cn 提交者(committer)的名字 %ce 提交者的电子邮件地址 %cd 提交日期 %cr 提交日期,按多久以前的方式显示 %s 提交说明
以上只是简单介绍了一些 git log 命令支持的选项。 git log 的常用选项 列出了我们目前涉及到的和没涉及到的选项,以及它们是如何影响 log 命令的输出的: Table 2. git log 的常用选项 选项 说明 -p 按补丁格式显示每个更新之间的差异。 --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 还有许多非常实用的限制输出长度的选项,也就是只输出部分提交信息。 之前你已经看到过 -2 了,它只显示最近的两条提交, 实际上,这是 -<n> 选项的写法,其中的 n 可以是任何整数,表示仅显示最近的若干条提交。 不过实践中我们是不太用这个选项的,Git 在输出所有提交时会自动调用分页程序,所以你一次只会看到一页的内容。 另外还有按照时间作限制的选项,比如 --since 和 --until 也很有用。 例如,下面的命令列出所有最近两周内的提交: $ git log --since=2.weeks 这个命令可以在多种格式下工作,比如说具体的某一天 "2008-01-15",或者是相对地多久以前 "2 years 1 day 3 minutes ago"。 还可以给出若干搜索条件,列出符合的提交。 用 --author 选项显示指定作者的提交,用 --grep 选项搜索提交说明中的关键字。 (请注意,如果要得到同时满足这两个选项搜索条件的提交,就必须用 --all-match 选项。否则,满足任意一个条件的提交都会被匹配出来) 另一个非常有用的筛选选项是 -S,可以列出那些添加或移除了某些字符串的提交。 比如说,你想找出添加或移除了某一个特定函数的引用的提交,你可以这样使用: $ git log -Sfunction_name 最后一个很实用的 git log 选项是路径(path),如果只关心某些文件或者目录的历史提交,可以在git log 选项的最后指定它们的路径。 因为是放在最后位置上的选项,所以用两个短划线(--)隔开之前的选项和后面限定的路径名。 在 限制 git log 输出的选项 中列出了常用的选项 Table 3. 限制 git log 输出的选项 选项 说明 -(n) 仅显示最近的 n 条提交 --since, --after 仅显示指定时间之后的提交。 --until, --before 仅显示指定时间之前的提交。 --author 仅显示指定作者相关的提交。 --committer 仅显示指定提交者相关的提交。 --grep 仅显示含指定关键字的提交 -S 仅显示添加或移除了某个关键字的提交 来看一个实际的例子,如果要查看 Git 仓库中,2008 年 10 月期间,Junio Hamano 提交的但未合并的测试文件,可以用下面的查询命令: $ git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \ --before="2008-11-01" --no-merges -- t/
|
git 命令行大全(更新中)
最新推荐文章于 2025-11-05 10:29:26 发布
本文详细介绍了Git的各种命令行操作,包括初始化仓库、添加文件、提交更改、分支管理、合并与解决冲突、回退版本等核心功能,旨在帮助开发者全面掌握Git版本控制系统。
466

被折叠的 条评论
为什么被折叠?



