git语法高亮

This commit is contained in:
fofolee
2019-05-07 10:40:55 +08:00
parent 6ae6134047
commit 409f6fc5c1
160 changed files with 605 additions and 605 deletions

View File

@@ -1,32 +1,32 @@
<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2><strong>名称</strong></h2></div></div><div class="doc-postil"><div class="c-markdown"><p>gittutorial  -  Git 的教程介绍</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">git *</pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>本教程介绍了如何将新项目导入 Git对其进行更改以及与其他开发人员共享更改。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果您主要对使用 Git 获取项目感兴趣,例如,要测试最新版本,您可能更愿意从 “Git用户手册” 的前两章开始。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>首先,请注意,您可以获取命令的文档,例如<code>git log --graph</code></p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ man git-log</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>或者:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ git help log</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>使用后者,您可以使用您选择的手动查看器; 请参阅 git-help [1] 了解更多信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在进行任何操作之前,向 Git 介绍自己的姓名和公共电子邮件地址是一个好主意。最简单的方法是:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ git config --global user.name "Your Name Comes Here"$ git config --global user.email you@yourdomain.example.com</pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>导入新项目</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>假设你的初始工作有一个 tarball project.tar.gz 。您可以按如下方式将它放在 Git 修订控件下。</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ tar xzf project.tar.gz
<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2><strong>名称</strong></h2></div></div><div class="doc-postil"><div class="c-markdown"><p>gittutorial  -  Git 的教程介绍</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">git *</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>本教程介绍了如何将新项目导入 Git对其进行更改以及与其他开发人员共享更改。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果您主要对使用 Git 获取项目感兴趣,例如,要测试最新版本,您可能更愿意从 “Git用户手册” 的前两章开始。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>首先,请注意,您可以获取命令的文档,例如<code>git log --graph</code></p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ man git-log</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>或者:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git help log</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>使用后者,您可以使用您选择的手动查看器; 请参阅 git-help [1] 了解更多信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在进行任何操作之前,向 Git 介绍自己的姓名和公共电子邮件地址是一个好主意。最简单的方法是:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git config --global user.name "Your Name Comes Here"$ git config --global user.email you@yourdomain.example.com</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>导入新项目</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>假设你的初始工作有一个 tarball project.tar.gz 。您可以按如下方式将它放在 Git 修订控件下。</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ tar xzf project.tar.gz
$ cd project
$ cd project
$ git init</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>Git 回复</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">Initialized empty Git repository in .git/</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>您现在已初始化工作目录 - 您可能会注意到创建了一个名为 “.git” 的新目录。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>接下来,告诉 Git 为当前目录下的所有文件的内容创建一个快照(注意<code>.</code><code>git add</code></p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git add .</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>此快照现在存储在 Git 称为“索引”的临时区域中。您可以使用<code>git commit</code>命令将索引的内容永久存储在存储库中:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git commit</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这会提示你输入提交信息。您现在已经将您的项目的第一个版本存储在 Git 中。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>进行更改</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>修改一些文件,然后将其更新的内容添加到索引中:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git add file1 file2 file3</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>您现在已准备好提交。您可以使用<code>git diff</code>--cached 选项查看要提交的内容:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git diff --cached</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>(不使用 - 缓存,<code>git diff</code>会显示您已做出但未添加到索引的任何更改。)您还可以通过以<code>git status</code>方式获得情况的简要摘要:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git status
On branch master
Changes to be committed:Your branch is up-to-date with 'origin/master'.  (use "git reset HEAD &lt;file&gt;..." to unstage)
        modified:   file1
        modified:   file2
Changes to be committed:Your branch is up-to-date with 'origin/master'.  (use "git reset HEAD &lt;file&gt;..." to unstage)
        modified:   file1
        modified:   file2
        modified:   file3</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>如果您需要进一步调整,请立即执行此操作,然后将任何新修改的内容添加到索引中。最后,通过以下方式进行修改:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git commit</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这将再次提示您输入描述更改的消息,然后记录该项目的新版本。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>或者,不要事先运行<code>git add</code>,您可以使用</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git commit -a</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>它会自动注意到任何已修改(但不是新增)的文件,将它们添加到索引中,然后全部一步完成。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>关于提交消息的注释虽然不是必需的但最好先用一个简短少于50个字符的行开始提交消息然后再总结一个空行然后进行更全面的描述。直到提交消息中的第一个空行的文本被视为提交标题并且该标题在整个 Git 中使用。例如, git-format-patch [1] 将提交转换为电子邮件,并使用主题行上的标题和正文中的其余提交。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>Git 跟踪内容而不是文件</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>许多修订控制系统提供一个<code>add</code>命令告诉系统开始跟踪对新文件的更改。Git 的<code>add</code>命令做了一些更简单,更强大的功能:<code>git add</code>既可用于新文件又可用于新修改的文件,在这两种情况下,它都会获取给定文件的快照并为索引中的内容创建阶段,以供下一次提交使用。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>查看项目历史</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>在任何时候,您都可以使用查看更改的历史记录</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git log</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>如果您还想在每个步骤中看到完整的差异,请使用</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git log -p</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>通常情况下,变更的概述对于了解每一步是很有用的</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git log --stat --summary</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>管理分支</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>一个 Git 仓库可以维护多个分支的开发。要创建名为 “experimental” 的新分支,请使用</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git branch experimental</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>如果你现在运行</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git branch</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>你会得到所有现有分支的列表:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">  experimental* master</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>"experimental" 分支是您刚刚创建的分支,“主分支”分支是自动为您创建的默认分支。星号标记你当前所在的分支类型;</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git checkout experimental</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>切换到实验分支。现在编辑一个文件,提交更改并切换回主分支:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">(edit file)$ git commit -a
$ git checkout master</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>检查您所做的更改是否不再可见,因为它是在实验分支上创建的,而您又回到了主分支上。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>您可以在主分支上进行不同的更改:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">(edit file)$ git commit -a</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>在这一点上,两个分支已经发生了分歧,每个分支都有不同的变化。要将实验中所做的更改合并到
master 中,请运行</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git merge experimental</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>如果更改不冲突,则表示完成。如果有冲突,标记将留在显示冲突的有问题的文件中;</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git diff</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>会显示这一点。一旦你编辑了文件来解决冲突,</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git commit -a</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>将承诺合并的结果。最后,</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ gitk</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>将显示最终的历史记录的一个很好的图形表示。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在这一点上,你可以删除实验分支</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git branch -d experimental</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>命令确保实验分支中的更改已经在当前分支中。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果你在一个分支的思路发展,然后后悔了,你可以随时删除分支</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ git branch -D crazy-idea</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>分支机构既便宜又容易,所以这是尝试一些东西的好方法。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>使用git进行协作</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>假设 Alice 已经在 / home / alice / project 中使用
Git 存储库启动了一个新项目,并且在同一台机器上有一个主目录的 Bob 想要贡献。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Bob 从以下开始:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">bob$ git clone /home/alice/project myrepo</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这会创建一个包含 Alice 存储库克隆的新目录 “myrepo” 。克隆与原始项目保持平等,拥有原始项目历史的副本。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Bob 然后做出一些改变并提交它们:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">(edit files)bob$ git commit -a(repeat as necessary)</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>当他准备好时,他告诉 Alice 从 / home / bob / myrepo 的存储库中提取更改。她这样做:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">alice$ cd /home/alice/project
alice$ git pull /home/bob/myrepo master</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这将 Bob 的 “master” 分支的更改合并到 Alice 的当前分支中。如果 Alice 在此期间做出了自己的更改,那么她可能需要手动修复任何冲突。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>因此“pull” 命令执行两个操作:它从远程分支获取更改,然后将它们合并到当前分支。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意一般来说Alice 会希望在启动此“拉”之前执行其本地更改。如果 Bob 的工作与爱丽丝自历史分手以来所做的工作相冲突Alice 将使用她的工作树和索引来解决冲突而现有的本地更改将干扰冲突解决过程Git 仍将执行提取操作,但会拒绝合并 -  - Alice 将不得不以某种方式摆脱她的本地变化并在发生这种情况时再次pull</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Alice 可以通过使用“获取”命令来查看 Bob 没有合并的情况,这允许 Alice 使用特殊符号 “FETCH_HEAD” 来检查 Bob 做了什么,以确定他是否有值得拉的东西,如下所示:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">alice$ git fetch /home/bob/myrepo master
alice$ git pull /home/bob/myrepo master</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这将 Bob 的 “master” 分支的更改合并到 Alice 的当前分支中。如果 Alice 在此期间做出了自己的更改,那么她可能需要手动修复任何冲突。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>因此“pull” 命令执行两个操作:它从远程分支获取更改,然后将它们合并到当前分支。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意一般来说Alice 会希望在启动此“拉”之前执行其本地更改。如果 Bob 的工作与爱丽丝自历史分手以来所做的工作相冲突Alice 将使用她的工作树和索引来解决冲突而现有的本地更改将干扰冲突解决过程Git 仍将执行提取操作,但会拒绝合并 -  - Alice 将不得不以某种方式摆脱她的本地变化并在发生这种情况时再次pull</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Alice 可以通过使用“获取”命令来查看 Bob 没有合并的情况,这允许 Alice 使用特殊符号 “FETCH_HEAD” 来检查 Bob 做了什么,以确定他是否有值得拉的东西,如下所示:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">alice$ git fetch /home/bob/myrepo master
alice$ git log -p HEAD..FETCH_HEAD</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>即使 Alice 未提交本地更改,此操作也是安全的。范围表示法 “HEAD..FETCH_HEAD” 表示 “显示可从FETCH_HEAD 获得的所有内容,但排除可从 HEAD 获得的任何内容”。Alice 已经知道导致她当前状态的所有信息HEAD并且回顾 Bob 在他的状态FETCH_HEAD中她没有看到过这个命令。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果 Alice 想要查看自从他们的历史分支后 Bob 做了什么,她可以发出以下命令:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ gitk HEAD..FETCH_HEAD</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>使用<code>git log</code>,我们看到前面的相同的两点范围表示法。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Alice 可能想看看自从他们分手以来他们都做了什么。她可以使用三点形式而不是双点形式:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ gitk HEAD...FETCH_HEAD</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这意味着“显示任何一个都可以访问的东西,但排除任何可以从两者中获得的东西”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意,这些范围表示法可以与 gitk 和 “git log” 一起使用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在检查 Bob 做了什么之后如果没有任何紧急事件Alice可能会决定继续工作而不从 Bob 那里 pull 。如果 Bob的历史确实需要 Alice 立即需要的东西,艾丽斯可能会选择先搁置她正在进行的工作,做一次 “pull”然后最终在最终的历史之外取消正在进行的工作。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>当你在一个紧密团结的小团队中工作时,一次又一次地与同一个存储库进行交互并不少见。通过定义<code>remote</code>存储库速记,可以使其更容易:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">alice$ git remote add bob /home/bob/myrepo</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>有了这个Alice 可以使用<code>git fetch</code>命令单独执行 “pull” 操作的第一部分,而不用将它们与自己的分支合并,使用:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">alice$ git fetch bob</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>与 longhand 形式不同的是,当 Alice 使用远程仓库快速设置从 Bob 获取时<code>git remote</code>,在这种情况下,获取的内容存储在远程跟踪分支中<code>bob/master</code>。所以在这之后:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">alice$ git log -p master..bob/master</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>显示了 Bob 从 Alice 的主分支中分支后所做的所有更改的列表。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在检查这些更改后Alice 可以将更改合并到她的主分支中:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">alice$ git merge bob/master</pre></div></div><div class="doc-postil"><div class="c-markdown"><p><code>merge</code>也可以通过<code>pulling from her own remote-tracking branch</code>如下方式完成:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">alice$ git pull . remotes/bob/master</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>注意 git pull 总是合并到当前分支中,而不管命令行上给出的是什么。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>之后Bob可以使用Alice的最新更改更新其回购</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">bob$ git pull</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意,他不需要为 Alice 的存储库提供路径; 当
alice$ git log -p HEAD..FETCH_HEAD</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>即使 Alice 未提交本地更改,此操作也是安全的。范围表示法 “HEAD..FETCH_HEAD” 表示 “显示可从FETCH_HEAD 获得的所有内容,但排除可从 HEAD 获得的任何内容”。Alice 已经知道导致她当前状态的所有信息HEAD并且回顾 Bob 在他的状态FETCH_HEAD中她没有看到过这个命令。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果 Alice 想要查看自从他们的历史分支后 Bob 做了什么,她可以发出以下命令:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ gitk HEAD..FETCH_HEAD</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>使用<code>git log</code>,我们看到前面的相同的两点范围表示法。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Alice 可能想看看自从他们分手以来他们都做了什么。她可以使用三点形式而不是双点形式:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">$ gitk HEAD...FETCH_HEAD</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这意味着“显示任何一个都可以访问的东西,但排除任何可以从两者中获得的东西”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意,这些范围表示法可以与 gitk 和 “git log” 一起使用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在检查 Bob 做了什么之后如果没有任何紧急事件Alice可能会决定继续工作而不从 Bob 那里 pull 。如果 Bob的历史确实需要 Alice 立即需要的东西,艾丽斯可能会选择先搁置她正在进行的工作,做一次 “pull”然后最终在最终的历史之外取消正在进行的工作。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>当你在一个紧密团结的小团队中工作时,一次又一次地与同一个存储库进行交互并不少见。通过定义<code>remote</code>存储库速记,可以使其更容易:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">alice$ git remote add bob /home/bob/myrepo</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>有了这个Alice 可以使用<code>git fetch</code>命令单独执行 “pull” 操作的第一部分,而不用将它们与自己的分支合并,使用:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">alice$ git fetch bob</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>与 longhand 形式不同的是,当 Alice 使用远程仓库快速设置从 Bob 获取时<code>git remote</code>,在这种情况下,获取的内容存储在远程跟踪分支中<code>bob/master</code>。所以在这之后:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">alice$ git log -p master..bob/master</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>显示了 Bob 从 Alice 的主分支中分支后所做的所有更改的列表。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在检查这些更改后Alice 可以将更改合并到她的主分支中:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">alice$ git merge bob/master</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p><code>merge</code>也可以通过<code>pulling from her own remote-tracking branch</code>如下方式完成:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">alice$ git pull . remotes/bob/master</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>注意 git pull 总是合并到当前分支中,而不管命令行上给出的是什么。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>之后Bob可以使用Alice的最新更改更新其回购</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">bob$ git pull</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意,他不需要为 Alice 的存储库提供路径; 当
Bob 克隆 Alice 的存储库时Git 将其存储库的位置存储在存储库配置中,并且位置用于提取:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">bob$ git config --get remote.origin.url/home/alice/project</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>(创建的完整配置<code>git clone</code>使用可见<code>git config -l</code>,而 git-config [1] 手册页解释每个选项的含义。)</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Git 还以 “origin / master” 的名称保存了 Alice 主分支的原始副本:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">bob$ git branch -r
Bob 克隆 Alice 的存储库时Git 将其存储库的位置存储在存储库配置中,并且位置用于提取:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">bob$ git config --get remote.origin.url/home/alice/project</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>(创建的完整配置<code>git clone</code>使用可见<code>git config -l</code>,而 git-config [1] 手册页解释每个选项的含义。)</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Git 还以 “origin / master” 的名称保存了 Alice 主分支的原始副本:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">bob$ git branch -r
  origin/master</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>如果Bob后来决定从另一个主机上工作他仍然可以使用 ssh 协议执行 clone 和 pull 操作:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">bob$ git clone alice.org:/home/alice/project myrepo</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>另外Git 有一个本地协议,或者可以使用 http ; 有关详细信息,请参阅 git-pull [1]。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Git 也可以用于类似 CVS 的模式,带有各种用户推送更改的中央存储库; 请参阅 git-push [1] 和
  origin/master</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>如果Bob后来决定从另一个主机上工作他仍然可以使用 ssh 协议执行 clone 和 pull 操作:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">bob$ git clone alice.org:/home/alice/project myrepo</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>另外Git 有一个本地协议,或者可以使用 http ; 有关详细信息,请参阅 git-pull [1]。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Git 也可以用于类似 CVS 的模式,带有各种用户推送更改的中央存储库; 请参阅 git-push [1] 和