Git常用指令摘选

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013564470/article/details/88401169


git clone

作用:命令将存储库克隆到新目录中。

$ git clone <版本库的网址>

该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

$ git clone <版本库的网址> <本地目录名>

将存储库克隆到新创建的目录中,为克隆的存储库中的每个分支创建远程跟踪分支(使用git branch -r可见),并从克隆检出的存储库作为当前活动分支的初始分支。

git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。

http[s]://example.com/path/to/repo.git
$ git clone http://git.oschina.net/yiibai/sample.git
$ git clone ssh://example.com/path/to/repo.git
$ git clone git://example.com/path/to/repo.git
$ git clone /opt/git/project.git 
$ git clone file:///opt/git/project.git
$ git clone ftp[s]://example.com/path/to/repo.git
$ git clone rsync://example.com/path/to/repo.git

参数

	-v, --verbose         be more verbose
    -q, --quiet           be more quiet
    --progress            force progress reporting
    -n, --no-checkout     don't create a checkout
    --bare                create a bare repository
    --mirror              create a mirror repository (implies bare)
    -l, --local           to clone from a local repository
    --no-hardlinks        don't use local hardlinks, always copy
    -s, --shared          setup as shared repository
    --recurse-submodules[=<pathspec>]
                          initialize submodules in the clone
    -j, --jobs <n>        number of submodules cloned in parallel
    --template <template-directory>
                          directory from which templates will be used
    --reference <repo>    reference repository
    --reference-if-able <repo>
                          reference repository
    --dissociate          use --reference only while cloning
    -o, --origin <name>   use <name> instead of 'origin' to track upstream
    -b, --branch <branch>
                          checkout <branch> instead of the remote's HEAD
    -u, --upload-pack <path>
                          path to git-upload-pack on the remote
    --depth <depth>       create a shallow clone of that depth
    --shallow-since <time>
                          create a shallow clone since a specific time
    --shallow-exclude <revision>
                          deepen history of shallow clone, excluding rev
    --single-branch       clone only one branch, HEAD or --branch
    --no-tags             don't clone any tags, and make later fetches not to follow them
    --shallow-submodules  any cloned submodules will be shallow
    --separate-git-dir <gitdir>
                          separate git dir from working tree
    -c, --config <key=value>
                          set config inside the new repository
    -4, --ipv4            use IPv4 addresses only
    -6, --ipv6            use IPv6 addresses only
    --filter <args>       object filtering

例子

$ git clone https://github.com/YangJiawei/YJWTest.git

git fetch

作用:命令用于从另一个存储库下载对象和引用

git fetch [<options>] [<repository> [<refspec>]]
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)]
git fetch --all [<options>]

将远程存储库中的更改合并到当前分支中。在默认模式下,git pullgit fetch后跟git merge FETCH_HEAD的缩写。更准确地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。 使用--rebase,它运行git rebase而不是git merge

例子

要更新所有分支,命令可以简写为:

$ git fetch

上面命令将某个远程主机的更新,全部取回本地。默认情况下,git fetch取回所有分支的更新。


git merge

作用:命令用于将两个或两个以上的开发历史加入(合并)一起。

git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
    [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
    [--[no-]allow-unrelated-histories]
    [--[no-]rerere-autoupdate] [-m <msg>] [<commit>…​]
git merge --abort
git merge --continue

例子

合并分支fixes和enhancements在当前分支的顶部,使它们合并:

$ git merge fixes enhancements

合并obsolete分支到当前分支,使用ours合并策略:

$ git merge -s ours obsolete

将分支maint合并到当前分支中,但不要自动进行新的提交:

$ git merge --no-commit maint

当您想要对合并进行进一步更改时,可以使用此选项,或者想要自己编写合并提交消息。应该不要滥用这个选项来潜入到合并提交中。小修补程序,如版本名称将是可以接受的。
将分支dev合并到当前分支中,自动进行新的提交:

$ git merge dev

git pull

作用:命令用于从另一个存储库或本地分支获取并集成(整合)。。

$ git pull [options] [<repository> [<refspec>]]

将远程存储库中的更改合并到当前分支中。在默认模式下,git pullgit fetch后跟git merge FETCH_HEAD的缩写。更准确地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。 使用--rebase,它运行git rebase而不是git merge


例子

精简常用

$ git pull

注意: git命令列表及其描述已从官方git手册页中删除。主要命令
git-add (将文件内容添加到索引中。)
git-am (从邮箱中应用一系列补丁。)
git-archive (从命名树创建文件存档。)
git-bisect (通过二进制搜索查找引入错误的更改。)
git-branch (列出,创建或删除分支。)
git-bundle (通过归档移动对象和引用。)
git-checkout (签出一个分支或工作树的路径。)
git-cherry-pick (应用某些现有提交引入的更改。)
git-citool (git-commit的图形替代。)
git-clean (从工作树中删除未跟踪的文件。)
git-clone (将存储库克隆到新目录中。)
git-commit (记录对存储库的更改。)
git-describe (显示可从提交中访问的最新标记。)
git-diff (显示提交,提交和工作树之间的更改等)
git-fetch (从另一个存储库下载对象和引用。)
git-format-patch (准备电子邮件提交补丁。)
git-gc (清理不必要的文件并优化本地存储库。)
git-grep (打印与模式匹配的行。)
git-gui (Git的便携式图形界面。)
git-init (创建一个空的git存储库或重新初始化现有存储库。)
git-log (显示提交日志。)
git-merge (将两个或多个开发历史记录连接在一起。)
git-mv (移动或重命名文件,目录或符号链接。)
git-notes (添加或检查对象注释。)
git-pull (从另一个存储库或本地分支获取并合并。)
git-push (更新远程引用以及相关对象。)
git-rebase (转发端口本地提交到更新的上游头。)
git-reset (将当前HEAD重置为指定状态。)
git-revert (还原一些现有的提交。)
git-rm (从工作树和索引中删除文件。)
git-shortlog (汇总git log输出。)
git-show (显示各种类型的对象。)
git-stash (将脏的工作目录中的更改存储起来。)
git-status (显示工作树状态。)
git-submodule (初始化,更新或检查子模块。)
git-tag (创建,列出,删除或验证使用GPG签名的标记对象。)
gitk (git存储库浏览器。)
辅助命令
1.Manipulators

git-config (获取并设置存储库或全局选项。)
git-fast-export (Git数据导出器。)
git-fast-import (快速Git数据导入器的后端。)
git-filter-branch (重写分支。)
git-lost-found ((已弃用)恢复丢失的refs,幸运的是还没有被修剪过。)
git-mergetool (运行合并冲突解决工具来解决合并冲突。)
git-pack-refs (用于高效存储库访问的包头和标签。)
git-prune (修剪对象数据库中所有无法访问的对象。)
git-reflog (管理reflog信息。)
git-relink (本地存储库中的硬链接公共对象。)
git-remote (管理一组跟踪的存储库。)
git-repack (在存储库中打包解压缩的对象。)
git-replace (创建,列出,删除引用来替换对象。)
git-repo-config ((不建议使用)获取并设置存储库或全局选项。)
2.Interrogators

git-annotate (使用提交信息注释文件行。)
git-blame (显示修改版本和作者最后一次修改文件的每一行。)
git-cherry (查找提交未合并到上游。)
git-count-objects (计算解压缩的对象数及其磁盘消耗量。)
git-difftool (使用常见的diff工具显示更改。)
git-fsck (验证数据库中对象的连通性和有效性。)
git-get-tar-commit-id (从使用git-archive创建的存档中提取提交ID。)
git-help (显示有关git的帮助信息。)
git-instaweb (立即在gitweb中浏览您的工作存储库。)
git-merge-tree (显示三向合并而不触及索引。)
git-rerere (重用已记录的冲突合并解决方案。)
git-rev-parse (选择和按摩参数。)
git-show-branch (显示分支及其提交。)
git-verify-tag (检查标签的GPG签名。)
git-whatchanged (显示每个提交引入差异的日志。)
与他人互动
这些命令通过电子邮件补丁与外部SCM和其他人进行交互。

git-archimport (将Arch存储库导入git。)
git-cvsexportcommit (将单个提交导出到CVS签出。)
git-cvsimport (从另一个SCM中抢救你的数据的人喜欢讨厌。)
git-cvsserver (git的CVS服务器模拟器。)
git-imap-send (从stdin发送补丁集合到IMAP文件夹。)
git-quiltimport (将一个quilt补丁集应用到当前分支上。)
git-request-pull (生成挂起更改的摘要。)
git-send-email (以电子邮件形式发送补丁集合。)
git-svn (Subversion存储库和git之间的双向操作。)
低级命令(管道)
尽管git包含自己的瓷层,但它的低级命令足以支持替代瓷器的开发。这些瓷器的开发者可能首先阅读git-update-index和git-read-tree。

这些低级命令的接口(输入,输出,选项集和语义)比Porcelain级别命令更稳定,因为这些命令主要用于脚本使用。另一方面,Porcelain命令的界面可能会发生变化,以改善最终用户体验。

以下描述将低级命令划分为操作对象(在存储库,索引和工作树中)的命令,询问和比较对象的命令,以及在存储库之间移动对象和引用的命令。

操纵命令
git-apply (将补丁应用于文件和/或索引。)
git-checkout-index (将文件从索引复制到工作树。)
git-commit-tree (创建一个新的提交对象。)
git-hash-object (计算对象ID,并可选择从文件创建blob。)
git-index-pack (现有打包存档的构建包索引文件。)
git-merge-file (运行三向文件合并。)
git-merge-index (为需要合并的文件运行合并。)
git-mktag (创建标记对象。)
git-mktree (从ls-tree格式的文本构建树对象。)
git-pack-objects (创建一个打包的对象存档。)
git-prune-packed (删除包文件中已有的额外对象。)
git-read-tree (将树信息读入索引。)
git-symbolic-ref (读取和修改符号引用。)
git-unpack-objects (从打包存档中解压缩对象。)
git-update-index (将工作树中的文件内容注册到索引。)
git-update-ref (安全地更新存储在ref中的对象名。)
git-write-tree (从当前索引创建一个树对象。)
询问命令
git-cat-file (提供存储库对象的内容或类型和大小信息。)
git-diff-files (比较工作树和索引中的文件。)
git-diff-index (比较索引和存储库之间blob的内容和模式。)
git-diff-tree (比较通过两个树对象找到的blob的内容和模式。)
git-for-each-ref (每个参考的输出信息)
git-ls-files (显示有关索引和工作树中文件的信息。)
git-ls-remote (在远程存储库中列出引用。)
git-ls-tree (列出树对象的内容。)
git-merge-base (尽可能找到合并的共同祖先。)
git-name-rev (查找给定转速的符号名称。)
git-pack-redundant (查找冗余包文件。)
git-rev-list (以反向时间顺序列出提交对象。)
git-show-index (显示打包的归档索引。)
git-show-ref (列出本地存储库中的引用。)
git-tar-tree ((不建议使用)在命名树对象中创建文件的tar存档。)
git-unpack-file (创建一个带有blob内容的临时文件。)
git-var (显示一个git逻辑变量。)
git-verify-pack (验证打包的git存档文件。)
通常,询问命令不会触及工作树中的文件。

同步存储库
git-daemon (一个非常简单的git存储库服务器。)
git-fetch-pack (从另一个存储库接收丢失的对象。)
git-http-backend (Git over HTTP的服务器端实现。)
git-send-pack (通过git协议将对象推送到另一个存储库。)
git-update-server-info (更新辅助信息文件以帮助哑服务器。)
以下是上面使用的帮助程序命令; 最终用户通常不直接使用它们。

git-http-fetch (通过HTTP从远程git存储库下载。)
git-http-push (通过HTTP / DAV将对象推送到另一个存储库。)
git-parse-remote (帮助解析远程存储库访问参数的例程。)
git-receive-pack (接收被推入存储库的内容。)
git-shell (仅限Git-SSH SSH访问的受限登录shell。)
git-upload-archive (将归档文件发送回git-archive。)
git-upload-pack (将对象打包回git-fetch-pack。)
内部帮助器命令
这些是其他命令使用的内部帮助程序命令; 最终用户通常不直接使用它们。

git-check-attr (显示gitattributes信息。)
git-check-ref-format (确保引用名称格式正确。)
git-fmt-merge-msg (生成合并提交消息。)
git-mailinfo (从单个电子邮件中提取补丁和作者身份。)
git-mailsplit (简单的UNIX mbox拆分程序。)
git-merge-one-file (与git-merge-index一起使用的标准帮助程序。)
git-patch-id (补丁的唯一ID计算。)
git-peek-remote ((不建议使用)列出远程存储库中的引用。)
git-sh-setup (常见的git shell脚本设置代码。)
git-stripspace (过滤掉空行。)


更多详细内容请参考:
https://git-scm.com/book/zh/v2
https://www.yiibai.com/git
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
https://stackoverflow.com/questions/25815202/git-fetch-a-single-commit

猜你喜欢

转载自blog.csdn.net/u013564470/article/details/88401169