分享Git常用7大技巧和命令
<p>Git 是一个非常强大的工具,它包含丰富的工具用以维护项目。本文介绍了一些 Git 日常使用过程中的实用技巧和命令,希望这些内容能够对大家有所帮助。</p><h2>一、Git diff比对命令</h2>
<p>通常情况下,我们会在自己的独立分支中完成需求开发,此时就会有需求将自己的分支和其他分支进行对比。这个功能可以通过</p>
<div class="jb51code">
<pre class="brush:bash;">
git diff branch1 branch</pre>
</div>
<p>命令来实现。</p>
<p>如果希望对比暂存区和当前的 HEAD,那么使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git diff --cached</pre>
</div>
<p>命令会非常方便。普通的<code>git diff</code>命令默认对比的是没有加到索引中的文件。</p>
<h2>二、Git恢复暂存区命令</h2>
<p>如果已经将一些文件添加到暂存区后又后悔了,Git 提供了多个命令来实现这个功能,具体需要根据当时情况而定。</p>
<div class="jb51code">
<pre class="brush:bash;">
git rm path/to/file --cached</pre>
</div>
<p>这个命令将文件从暂存区索引中删除,但是仍然会将文件保留在工作目录。这比直接使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git rm file -f</pre>
</div>
<p>完全删除文件会安全一点。</p>
<h2>三、Git reset恢复改动命令</h2>
<p>如果希望恢复一些已经提交的改动,我们可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git reset</pre>
</div>
<p>这个命令可以完成许多不同的行为,因此需要按照实际场景进行使用。</p>
<p>如果希望去除所有修改,包括索引中的内容和工作目录中的修改,那么可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git reset --hard</pre>
</div>
<p>如果仅仅是希望重置索引,那么可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git reset --mixed</pre>
</div>
<p>这也是<code>git reset</code>命令的默认行为。混合的重置会保留当前工作目录中的改动。最后,如果仅仅希望修改分支的 HEAD,可以通过</p>
<div class="jb51code">
<pre class="brush:bash;">
git reset --soft</pre>
</div>
<p>来实现。</p>
<p>当运行<code>git reset</code>命令的时候,我们可以指定多个目标文件作为参数传入。当然可以通过</p>
<div class="jb51code">
<pre class="brush:bash;">
git reset --hard COMMIT_ID</pre>
</div>
<p>恢复到指定的提交版本。</p>
<h2>四、Git stash</h2>
<p>大家应该对<code>git stash</code>命令并不陌生,它可以通过<code>git stash pop</code>命令方便的将之前的改动恢复回来。然而,如果工作目录中有未追踪的文件,默认情况下是不会将其存入临时储藏区的。为了能够临时保存未追踪的文件,可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git stash --include-untracked</pre>
</div>
<p>另外一个非常有用的命令是</p>
<div class="jb51code">
<pre class="brush:bash;">
git stash list</pre>
</div>
<p>它能列出临时储藏区中的内容。</p>
<h2>五、Git查看历史记录</h2>
<p>Git 自带了非常强大的工具来查看项目以及特定文件的变更情况。我个人非常喜欢用其中的一个命令:</p>
<div class="jb51code">
<pre class="brush:bash;">
git log --graph --decorate --oneline</pre>
</div>
<p>它可以用于展示经过修饰的提交历史。这个命令非常冗长,因此我建议可以为它创建一个别名(这可能是所有技巧中最有用的,因为许多命令都比较难记)。git log 命令可以显示 HEAD、所有提交的 ID 以及分支信息。有了这些信息之后,我们可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git show COMMIT_ID/HEAD/BRANCH</pre>
</div>
<p>来显示更详细的信息。</p>
<p>有的时候我们需要了解谁对一个文件做了哪些改动,这正是</p>
<div class="jb51code">
<pre class="brush:bash;">
git blame path/to/file</pre>
</div>
<p>这个命令所提供的功能。</p>
<p>之前提到过<code>git diff</code>命令,它也是一个查看历史的工具。例如,如果需要对比当前 HEAD 和前两个提交,可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git diff HEAD HEAD~2</pre>
</div>
<p>为了能够展示每个提交中更详细的更新信息,可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git log --patch</pre>
</div>
<p>如果只想要看包含关键字“apple”的提交,使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git log --grep apples --oneline</pre>
</div>
<p>要查看历史提交记录中两个点之间的提交历史,我们可以用</p>
<div class="jb51code">
<pre class="brush:bash;">
git log HEAD~5..HEAD^ --oneline</pre>
</div>
<p>对于分支可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git log branch_name..master --oneline</pre>
</div>
<h2>六、Git恢复错误提交命令</h2>
<p><strong>注意:以下一些命令会修改提交历史,使用前请确保了解后再执行</strong>。</p>
<p>当提交出错时,我们可能会希望能够修改提交历史。我不建议修改已经推送到远程仓库的提交历史(即使 git 允许这样做),但是对于本地仓库的提交历史,我个人认为还是可以修改的。通过</p>
<div class="jb51code">
<pre class="brush:bash;">
git commit --amend</pre>
</div>
<p>可以删除前一次提交,并创建一个新的提交记录以替代之前的提交。</p>
<p>另一个我很喜欢的 git 使用技巧是交互式变基 (rebase)。它可以用来编辑提交信息,或者将多个提交压缩成一个提交,这也是我最喜欢的一个功能。为了在远程仓库 origin 的 master 分支之后的所有提交上执行交互式变基,可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git rebase -i origin/master</pre>
</div>
<p>这个命令会显示提交列表和可执行操作的详细描述。例如以下操作将会把多个提交压缩成一个:</p>
<div class="jb51code">
<pre class="brush:bash;">
1 pick 80f2a48 Add feature X
2 squash 2c74ea2 Add junit tests for feature X
3 squash 4k81nm5 Bugfix for feature X</pre>
</div>
<p>最终的结果会是生成一个提交消息为“Add feature X”的提交。</p>
<p>如果需要恢复一个有问题的提交,我们可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git revert COMMIT_ID</pre>
</div>
<p>该命令会创建一个新的提交,让当前项目状态恢复到指定提交之前。</p>
<p>如果我们在修复问题时出现了误操作,例如不小心删除了不应该删除的文件。我们还是可以从版本库中恢复回来,因为 git 保存了所有修改的版本,包括被移除的提交。<code>git reflog</code>命令就是用来实现这个功能的。</p>
<h2>七、Git挑拣提交(cherry-pick)</h2>
<p>假设我们和同事在各自单独的分支上进行开发,同事有一个重要的提交我们也想应用到自己的分支上来,但是不需要对方分支的其他提交。这时我们可以使用</p>
<div class="jb51code">
<pre class="brush:bash;">
git cherry-pick COMMIT_ID</pre>
</div>
<p>以上七个命令是我们日常工作中经常用到的命令,Git还有很多方便好用的命令我们会继续分享给大家,希望对大家有所帮助,下面的链接是其它有关Git的使用方法有兴趣的可以详细阅读</p>
<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>全网最全Git命令手册</li><li>git工具常用命令及ssh操作方法</li><li>Git命令之分支详解</li><li>Git版本控制常用命令及pycharm 使用git方法</li><li>git blame命令详解</li><li>gitee命令行上传项目的步骤详解</li><li>详解git使用小结(本地分支与远程分支、git命令)</li><li>git checkout 命令使用详解</li><li>Windows 版本Git命令行的使用详解</li><li>Git命令的简单整理大全</li><li>一些你必须要熟练掌握的git命令</li><li>Git 常用命令清单(整理且详细)</li><li>Git 命令行教程及实例教程(附github注册)</li><li>Git基本常用命令</li><li>Git常用命令介绍</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]