giteveryday 手册页面
名称giteveryday - 日常 Git 的实用最低命令集剧情简介每天用大约20条命令的Git。描述为了方便git用户大致可以分为四类 这里描述一小部分日常 Git 的实用命令。个人开发者独立命令是必不可少的 无论是提交者哪怕是单独行动的人。如果你和其他人一起工作你需要以下列出的指令 个人开发者参与者部分也是如此。扮演整合者角色的人需要学习一些 除了上述指令外还有更多指令。仓库管理命令用于系统 负责护理和供养的管理者 Git仓库。个人开发者独立独立的个人开发者不会与 其他人并且单独在一个仓库中工作使用 服从命令。git-init1 以创建新的仓库。git-log1 来查看发生了什么。git-switch1 和 git-branch1 切换 树枝。git-add1 来管理索引文件。git-diff1 和 git-status1 以查看 你正处于行动中。git-commit1 以推进当前分支。git-restore1 用于撤销更改。git-merge1 用于在本地分支之间合并。git-rebase1 用于维护主题分支。git-tag1 来标记已知点。示例用tarball作为新仓库的起点。$ tar zxf frotz.tar.gz $ cd frotz $ git init $ git add . **(1)** $ git commit -m import of frotz source tree. $ git tag v2.43 **(2)**把当前目录下的所有内容都添加进去。做一个轻量级、无注释的标签。创建一个主题分支并进行发展。$ git switch -c alsa-audio **(1)** $ edit/compile/test $ git restore curses/ux_audio_oss.c **(2)** $ git add curses/ux_audio_alsa.c **(3)** $ edit/compile/test $ git diff HEAD **(4)** $ git commit -a -s **(5)** $ edit/compile/test $ git diff HEAD^ **(6)** $ git commit -a --amend **(7)** $ git switch master **(8)** $ git merge alsa-audio **(9)** $ git log --since3 days ago **(10)** $ git log v2.43.. curses/ **(11)**创建一个新的主题分支。还原你在 .curses/ux_audio_oss.c如果你添加了新文件需要告诉 Git;移除和 如果你以后做了修改会被发现。gitcommit-a看看你正在做出哪些改变。按照你测试过的在签字时提交所有内容。检查你所有的更改包括之前的提交。修改之前的提交添加所有新更改 使用你最初的信息。切换到主分支。将主题分支合并到你的主分支中。审核提交日志;其他限制输出的形式包括 合并并包含显示最多10个提交等等。-10--until2005-12-10只查看涉及目录内容的更改自标签起。curses/v2.43个人开发者参与者作为团队项目参与者的开发者需要 学习如何与他人沟通并使用这些指令 除了独立开发者需要的额外内容之外。git-clone1从上游导入本地 仓库。来自“origin”的git-pull1和git-fetch1 以便及时了解上游的最新动态。git-push1 到共享仓库如果你采用 CVS 风格共享仓库工作流程。git-format-patch1 用于准备电子邮件提交如果 你采用Linux内核风格的公共论坛工作流程。git-send-email1 用于发送电子邮件提交无需 是你的MUA腐化。git-request-pull1 用于创建变更摘要 等上游拉。示例克隆上游并改进它。将变更信息传递到上游。$ git clone git://git.kernel.org/pub/scm/.../torvalds/linux-2.6 my2.6 $ cd my2.6 $ git switch -c mine master **(1)** $ edit/compile/test; git commit -a -s **(2)** $ git format-patch master **(3)** $ git send-email --toperson emailexample.com 00*.patch **(4)** $ git switch master **(5)** $ git pull **(6)** $ git log -p ORIG_HEAD.. arch/i386 include/asm-i386 **(7)** $ git ls-remote --heads http://git.kernel.org/.../jgarzik/libata-dev.git **(8)** $ git pull git://git.kernel.org/pub/.../jgarzik/libata-dev.git ALL **(9)** $ git reset --hard ORIG_HEAD **(10)** $ git gc **(11)**看看Master的新分支。mine必要时重复。从你的分支中提取补丁相对于主控并给他们发邮件。返回准备看看新动态mastergitpull默认从 取回并合并为 现任分部。origin拉完后立刻查看上游的改动 自从上次我们检查过只有在 我们感兴趣的领域。检查外部仓库中的分支名称如果不知道。从特定分支从特定仓库获取 并合并它。ALL恢复拉力。回收还原拉取剩余物品。推入另一个仓库。satellite$ git clone mothership:frotz frotz **(1)** satellite$ cd frotz satellite$ git config --get-regexp ^(remote|branch)\. **(2)** remote.origin.url mothership:frotz remote.origin.fetch refs/heads/*:refs/remotes/origin/* branch.master.remote origin branch.master.merge refs/heads/master satellite$ git config remote.origin.push \ refs/heads/*:refs/remotes/satellite/* **(3)** satellite$ edit/compile/test/commit satellite$ git push origin **(4)** mothership$ cd frotz mothership$ git switch master mothership$ git merge satellite/master **(5)**母舰机器在你家里有一个FROTZ仓库 目录;从它克隆在卫星上建立一个仓库 机器。克隆系统默认设置这些配置变量。 它负责收集并存储母舰的分支 机器到本地远程跟踪分支。gitpullremotes/origin/*安排推动所有地方分支机构 他们对应的母舰机器分支。gitpushPush会把我们所有的工作藏在母舰机器上的远程追踪分支上。你可以用这个 作为备份方法。同样你也可以假装那艘母舰 “从你那里取回”当访问是单方面时非常有用。remotes/satellite/*在母舰机上合并卫星上的工作 机器进入主分支。从某个特定标签分支出来。$ git switch -c private2.6.14 v2.6.14 **(1)** $ edit/compile/test; git commit -a $ git checkout master $ git cherry-pick v2.6.14..private2.6.14 **(2)**基于一个知名但稍显落后的私人分支 捉人。转发端口 分支间的所有变更 无需正式“合并”。或者手写 |private2.6.14mastergitformat-patch-k-m--stdoutv2.6.14..private2.6.14gitam-3-k另一种参与者提交机制是使用 or 拉取请求机制例如 在 上所使用 GitHubwww.github.com通知你的上游 贡献。gitrequest-pull积分器一个相当核心的人物作为团队中的整合者 项目接收他人的修改进行审核和整合 并发布结果供他人使用使用这些 除了参与者需要的指令外还需要这些指令。本部分也可供响应或在GitHubwww.github.com上进行拉取请求的人使用 将他人的作品融入他们的历史中。一个子区域 仓库中尉既是参与者也要参与 作为一个整合者。gitrequest-pullgit-am1 用于应用从你的邮箱发送的补丁 贡献者。git-pull1 以合并你信任的副手。git-format-patch1 用于准备并发送建议 贡献者的替代。git-revert1 用于撤销失败的提交。git-push1 以发布 The Bleeding Edge。示例典型的集成商Git日。$ git status **(1)** $ git branch --no-merged master **(2)** $ mailx **(3)** s 2 3 4 5 ./to-apply s 7 8 ./hold-linus q $ git switch -c topic/one master $ git am -3 -i -s ./to-apply **(4)** $ compile/test $ git switch -c hold/linus git am -3 -i -s ./hold-linus **(5)** $ git switch topic/one git rebase master **(6)** $ git switch -C seen next **(7)** $ git merge topic/one topic/two git merge hold/linus **(8)** $ git switch maint $ git cherry-pick master~4 **(9)** $ compile/test $ git tag -s -m GIT 0.99.9x v0.99.9x **(10)** $ git fetch ko for branch in master maint next seen **(11)** do git show-branch ko/$branch $branch **(12)** done $ git push --follow-tags ko **(13)**看看你当时正在做什么如果有的话。看看哪些分支还没合并进去。 其他积分分支如 、 和 亦同理。mastermaintnextseen阅读邮件保存适用的邮件保存其他邮件 还没准备好还有其他邮件阅读器可用。在签字时互动应用这些内容。根据需要创建主题分支并应用同样带有签字。未合并的内部主题分支重新基准 主控或暴露为稳定分支的一部分。每次都从下一次重新开始。seen以及仍在制作中的主题分支捆绑。回溯移植是关键修复。创建一个签名标签。确保Master没有被意外倒带超过那个时间 已经被挤出去了。在输出中应有 一切都已经发生也应该如此 所有东西都有等等。gitshow-branchmasterko/masternextko/next推开最前沿同时配备新的标签 进入被推送的历史。在这个例子中简写指向 Git 维护者的 仓库位于 kernel.org看起来如下ko(in .git/config) [remote ko] url kernel.org:/pub/scm/git/git.git fetch refs/heads/*:refs/remotes/ko/* push refs/heads/master push refs/heads/next push refs/heads/seen push refs/heads/maint存储库管理仓库管理员使用以下工具来设置 并保持开发者对仓库的访问权限。git-daemon1 以允许从以下 仓库。git-shell1 可以作为共享中央仓库用户的受限登录壳。git-http-backend1 提供服务器端实现 Git-over-HTTP“智能 http”支持获取和推送服务。gitweb1 为 Git 仓库提供网页前端 该程序可通过git-instaweb1脚本进行设置。更新钩子Howto有个不错的 管理共享中央仓库的示例。此外还有许多其他广泛部署的托管和浏览服务 并审查以下解决方案Gitolite、Gerrit 代码审查、CGIT及其他。示例我们在 /etc/services 中假设以下情况$ grep 9418 /etc/services git 9418/tcp # Git Version Control System运行git-daemon来从inetd中提供/pub/scm。$ grep git /etc/inetd.conf git stream tcp nowait nobody \ /usr/bin/git-daemon git-daemon --inetd --export-all /pub/scm实际的配置线应该在同一条线上。运行git-daemon来从xinetd提供/pub/scm。$ cat /etc/xinetd.d/git-daemon # default: off # description: The Git server offers access to Git repositories service git { disable no type UNLISTED port 9418 socket_type stream wait no user nobody server /usr/bin/git-daemon server_args --inetd --export-all --base-path/pub/scm log_on_failure USERID }检查一下你的xinetd8文档和设置这是Fedora系统用的。 其他人可能不一样。给使用 git-over-ssh 的开发者只提供推拉权限。例如使用以下内容的$gitpush/pullssh://host.xz/pub/scm/project$ grep git /etc/passwd **(1)** alice:x:1000:1000::/home/alice:/usr/bin/git-shell bob:x:1001:1001::/home/bob:/usr/bin/git-shell cindy:x:1002:1002::/home/cindy:/usr/bin/git-shell david:x:1003:1003::/home/david:/usr/bin/git-shell $ grep git /etc/shells **(2)** /usr/bin/git-shell登录壳设置为 /usr/bin/git-shell但该 允许除 和 以外的任何 。用户需要 对机器的SSH访问。gitpushgitpull在许多发行版中/etc/shells 需要列出所使用的配置 作为登录壳。类似CVS风格的共享仓库。$ grep git /etc/group **(1)** git:x:9418:alice,bob,cindy,david $ cd /home/devo.git $ ls -l **(2)** lrwxrwxrwx 1 david git 17 Dec 4 22:40 HEAD - refs/heads/master drwxrwsr-x 2 david git 4096 Dec 4 22:40 branches -rw-rw-r-- 1 david git 84 Dec 4 22:40 config -rw-rw-r-- 1 david git 58 Dec 4 22:40 description drwxrwsr-x 2 david git 4096 Dec 4 22:40 hooks -rw-rw-r-- 1 david git 37504 Dec 4 22:40 index drwxrwsr-x 2 david git 4096 Dec 4 22:40 info drwxrwsr-x 4 david git 4096 Dec 4 22:40 objects drwxrwsr-x 4 david git 4096 Nov 7 14:58 refs drwxrwsr-x 2 david git 4096 Dec 4 22:40 remotes $ ls -l hooks/update **(3)** -r-xr-xr-x 1 david git 3536 Dec 4 22:40 update $ cat info/allowed-users **(4)** refs/heads/master alice\|cindy refs/heads/doc-update bob refs/tags/v[0-9]* david把开发者放进同一个 git 组。并使共享仓库可由团队编写。使用Carl在Documentation/howto/中的update-hook示例。 用于分支政策控制。爱丽丝和辛迪可以推入主版只有鲍勃能推入文档更新。 David 是发布经理也是唯一能做到的人 创建并推送版本标签。GITPart of the git(1) suiteLast updated 2025-11-17 18:25:15 UTC

相关新闻