uTools-Manuals/docs/git/git replace.html
2019-04-08 23:22:26 +08:00

2 lines
7.4 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2>名称</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>git-replace  - 创建,列出,删除引用来替换对象</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 replace [-f] &lt;object&gt; &lt;replacement&gt;git replace [-f] --edit &lt;object&gt;git replace [-f] --graft &lt;commit&gt; [&lt;parent&gt;…]git replace -d &lt;object&gt;
git replace [--format=&lt;format&gt;] [-l [&lt;pattern&gt;]]</pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p><code>refs/replace/</code>命名空间中添加一个<code>replace</code>引用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>replace</code>引用的名称是被替换的对象的 SHA-1。<code>replace</code>引用的内容是替换对象的 SHA-1。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>被替换的对象和替换对象必须是相同的类型。这个限制可以绕过使用<code>-f</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>除非<code>-f</code>给出,否则<code>replace</code>参考不得存在。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>替换和替换对象没有其他限制。合并提交可以被非合并提交所取代,反之亦然。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>所有 Git 命令默认使用替换引用,除了那些进行可访问性遍历(修剪,包传输和 fsck的引用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>对于任何使用该<code>--no-replace-objects</code>选项的命令,可以禁用替换引用的使用<code>git</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>例如如果commit <code>foo</code>已经被commit<code>bar</code>代替:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ git --no-replace-objects cat-file commit foo</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>显示关于提交<code>foo</code>的信息,同时:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ git cat-file commit foo</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>显示关于提交<code>bar</code>的信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>GIT_NO_REPLACE_OBJECTS</code>环境变量可以设置为达到作为同样的效果<code>--no-replace-objects</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>-f   --force</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果存在对同一对象的现有替换引用,它将被覆盖(而不是失败)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-d   --delete</p></div></div><div class="doc-postil"><div class="c-markdown"><p>删除给定对象的现有替换参考。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--edit &lt;object&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>以交互方式编辑对象的内容。将&lt;object&gt;的现有内容打印成临时文件,在该文件上启动编辑器,解析结果以创建与&lt;object&gt;具有相同类型的新对象。然后创建一个替换ref用新创建的对象替换&lt;object&gt;。有关如何选择编辑器的详细信息请参阅git-var [1]。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--raw</p></div></div><div class="doc-postil"><div class="c-markdown"><p>编辑时,提供原始对象内容而不是漂亮的内容。目前这只影响树木,它们将以二进制形式显示。这很难处理,但可以帮助修复一个如此受损的树,无法打印。请注意,您可能需要将您的编辑器配置为干净地读取和写入二进制数据。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--graft &lt;commit&gt; &lt;parent&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>创建一个嫁接提交。一个新的提交与&lt;commit&gt;具有相同的内容,除了它的父母将是&lt;parent&gt; ...而不是&lt;commit&gt;的父母。然后创建一个替换ref用新创建的提交替换&lt;commit&gt;。有关基于此选项的示例脚本,请参阅 contrib / convert-grafts-to-replace-refs.sh该选项可以将移植替换为替换。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-l &lt;pattern&gt;   --list &lt;pattern&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>列表替换与给定模式匹配的对象的引用如果没有给出模式则全部替换。键入“git替换”不带参数也列出所有替换参考。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--format=&lt;format&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>当列出,使用指定的&lt;格式&gt;,它可以是一个<code>short</code><code>medium</code><code>long</code>。省略时,格式默认为<code>short</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"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>short</code>: &lt;replaced sha1&gt;</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>medium</code>: &lt;replaced sha1&gt;&lt;replacement sha1&gt;</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>long</code>: &lt;replaced sha1&gt; (&lt;replaced type&gt;) → &lt;replacement sha1&gt; (&lt;replacement type&gt;)</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><h2>创建替换对象</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>git-filter-branch [1]git-hash-object [1]和 git-rebase [1]等 git 命令可用于从现有对象创建替换对象。<code>--edit</code>选项也可用于<code>git replace</code>通过编辑现有对象来创建替换对象。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果你想要替换很多 blob树或提交它们是提交字符串的一部分你可能只想创建一个替换的提交字符串然后只在提交的目标提交字符串的顶端替换提交提交替换字符串的提示。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>错误</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>比较已经替换它们的斑点或树木将无法正常工作。并且使用<code>git reset --hard</code>返回到替换的提交将分支移动到替换提交而不是替换的提交。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>使用<code>git rev-list</code>与待处理对象相关时可能会有其他问题。</p></div></div></div>