{"id":672,"date":"2023-06-03T15:32:19","date_gmt":"2023-06-03T07:32:19","guid":{"rendered":"https:\/\/niuguodong.com\/?p=672"},"modified":"2025-12-25T11:38:17","modified_gmt":"2025-12-25T03:38:17","slug":"git%e6%90%9c%e7%b4%a2","status":"publish","type":"post","link":"https:\/\/niuguodong.com\/index.php\/2023\/06\/03\/git%e6%90%9c%e7%b4%a2\/","title":{"rendered":"Git\u641c\u7d22"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">git grep<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\u547d\u4ee4<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u8bf4\u660e<\/th><th class=\"has-text-align-left\" data-align=\"left\">\u793a\u4f8b<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u6700\u57fa\u7840\u7528\u6cd5<\/strong>\uff1a\u5728\u5f53\u524d\u76ee\u5f55\u53ca\u5b50\u76ee\u5f55\u7684<strong>\u5df2\u8ddf\u8e2a\u6587\u4ef6<\/strong>\u4e2d\u641c\u7d22\u6a21\u5f0f\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep \"function myFunc\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -n &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u663e\u793a\u884c\u53f7<\/strong>\uff1a\u5728\u5339\u914d\u7684\u884c\u524d\u663e\u793a\u5176\u5728\u6587\u4ef6\u4e2d\u7684\u884c\u53f7\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -n \"TODO\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -i &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u5ffd\u7565\u5927\u5c0f\u5199<\/strong>\uff1a\u8fdb\u884c\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u7684\u641c\u7d22\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -i \"error\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -l &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u4ec5\u663e\u793a\u6587\u4ef6\u540d<\/strong>\uff1a\u53ea\u5217\u51fa\u5305\u542b\u5339\u914d\u9879\u7684\u6587\u4ef6\u540d\uff0c\u4e0d\u663e\u793a\u5177\u4f53\u5185\u5bb9\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -l \"const API_KEY\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -w &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u6574\u8bcd\u5339\u914d<\/strong>\uff1a\u786e\u4fdd\u6a21\u5f0f\u5339\u914d\u5b8c\u6574\u7684\u5355\u8bcd\uff08\u4f8b\u5982\uff0c\u641c\u7d22 \"map\" \u4e0d\u4f1a\u5339\u914d \"mapping\"\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -w \"catch\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -C &lt;num&gt; &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u663e\u793a\u4e0a\u4e0b\u6587<\/strong>\uff1a\u663e\u793a\u5339\u914d\u884c\u53ca\u5176\u524d\u540e\u5404&nbsp;<code>&lt;num&gt;<\/code>&nbsp;\u884c\u7684\u5185\u5bb9\uff08\u4f8b\u5982&nbsp;<code>-C 2<\/code>\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -C 2 \"Exception\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -e &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u4f7f\u7528\u591a\u4e2a\u6a21\u5f0f<\/strong>\uff1a\u641c\u7d22\u591a\u4e2a\u6a21\u5f0f\u4e2d\u7684\u4efb\u610f\u4e00\u4e2a\u3002\u53ef\u4ee5\u591a\u6b21\u4f7f\u7528&nbsp;<code>-e<\/code>\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -e \"import\" -e \"require\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -E &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u4f7f\u7528\u6269\u5c55\u6b63\u5219<\/strong>\uff1a\u5c06\u6a21\u5f0f\u89e3\u91ca\u4e3a<strong>\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f<\/strong>\uff08\u652f\u6301&nbsp;<code>+<\/code>, `<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>,&nbsp;<\/code>()` \u7b49\uff09\u3002<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -F &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u56fa\u5b9a\u5b57\u7b26\u4e32<\/strong>\uff1a\u5c06\u6a21\u5f0f\u89c6\u4e3a\u666e\u901a\u5b57\u7b26\u4e32\uff0c\u800c\u975e\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u641c\u7d22\u901f\u5ea6\u66f4\u5feb\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -F \"https:\/\/example.com\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -c &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u7edf\u8ba1\u5339\u914d\u6b21\u6570<\/strong>\uff1a\u4e0d\u663e\u793a\u5339\u914d\u5185\u5bb9\uff0c\u53ea\u663e\u793a\u6bcf\u4e2a\u6587\u4ef6\u4e2d\u7684\u5339\u914d\u6570\u91cf\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -c \"deprecated\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep &lt;pattern&gt; -- &lt;pathspec&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u9650\u5b9a\u8def\u5f84<\/strong>\uff1a\u53ea\u5728\u6307\u5b9a\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u4e2d\u641c\u7d22\u3002<code>--<\/code>&nbsp;\u7528\u4e8e\u5206\u9694\u6a21\u5f0f\u548c\u8def\u5f84\uff0c\u9632\u6b62\u8def\u5f84\u88ab\u8bef\u8ba4\u4e3a\u6a21\u5f0f\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep \"class User\" -- src\/models\/<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -L &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u5217\u51fa\u4e0d\u5339\u914d\u7684\u6587\u4ef6<\/strong>\uff1a\u663e\u793a<strong>\u4e0d\u5305\u542b<\/strong>\u4efb\u4f55\u5339\u914d\u9879\u7684\u6587\u4ef6\u5217\u8868\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -L \"test\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -m &lt;num&gt; &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u9650\u5236\u5339\u914d\u6570\u91cf<\/strong>\uff1a\u6bcf\u4e2a\u6587\u4ef6\u6700\u591a\u663e\u793a&nbsp;<code>&lt;num&gt;<\/code>&nbsp;\u4e2a\u5339\u914d\u9879\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -m 5 \"warning\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep --cached &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u4ec5\u641c\u7d22\u6682\u5b58\u533a<\/strong>\uff1a\u53ea\u5728<strong>\u5df2\u6dfb\u52a0\u5230\u6682\u5b58\u533a\uff08\u5df2\u8ddf\u8e2a\uff09<\/strong>&nbsp;\u7684\u6587\u4ef6\u4e2d\u641c\u7d22\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep --cached \"console.log\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep --untracked &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u641c\u7d22\u672a\u8ddf\u8e2a\u6587\u4ef6<\/strong>\uff1a\u4e5f\u5728<strong>\u672a\u88ab Git \u8ddf\u8e2a<\/strong>\u7684\u6587\u4ef6\u4e2d\u641c\u7d22\uff08\u5982\u65b0\u5efa\u7684\u6587\u4ef6\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep --untracked \"newFeature\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -p &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u663e\u793a\u51fd\u6570\u4e0a\u4e0b\u6587<\/strong>\uff1a\u5728\u663e\u793a\u5339\u914d\u884c\u7684\u540c\u65f6\uff0c\u663e\u793a\u5176\u6240\u5c5e\u7684\u51fd\u6570\u6216\u65b9\u6cd5\u540d\uff08\u5bf9\u4e8e\u4ee3\u7801\u5bfc\u822a\u5f88\u6709\u7528\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -p \"calculateTotal\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -B &lt;num&gt; &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u663e\u793a\u524d\u6587\u4e0a\u4e0b\u6587<\/strong>\uff1a\u663e\u793a\u5339\u914d\u884c\u53ca\u5176<strong>\u4e4b\u524d<\/strong>\u7684&nbsp;<code>&lt;num&gt;<\/code>&nbsp;\u884c\uff08\u4f8b\u5982&nbsp;<code>-B 3<\/code>\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -B 3 \"fatal error\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -A &lt;num&gt; &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u663e\u793a\u540e\u6587\u4e0a\u4e0b\u6587<\/strong>\uff1a\u663e\u793a\u5339\u914d\u884c\u53ca\u5176<strong>\u4e4b\u540e<\/strong>\u7684&nbsp;<code>&lt;num&gt;<\/code>&nbsp;\u884c\uff08\u4f8b\u5982&nbsp;<code>-A 3<\/code>\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -A 3 \"return false;\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -o &lt;pattern&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u4ec5\u663e\u793a\u5339\u914d\u90e8\u5206<\/strong>\uff1a\u53ea\u8f93\u51fa\u884c\u4e2d\u4e0e\u6a21\u5f0f\u5339\u914d\u7684\u90e8\u5206\uff0c\u800c\u4e0d\u662f\u6574\u884c\u5185\u5bb9\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -o \"\\\\&lt;[a-zA-Z_]\\\\w*\\\\&gt;\"<\/code>&nbsp;(\u5339\u914d\u6240\u6709\u5355\u8bcd)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep --color=always &lt;pattern&gt; | less -R<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u5e26\u989c\u8272\u5206\u9875\u67e5\u770b<\/strong>\uff1a\u5f3a\u5236\u9ad8\u4eae\u663e\u793a\u5339\u914d\u9879\uff0c\u5e76\u901a\u8fc7&nbsp;<code>less<\/code>&nbsp;\u5206\u9875\u5668\u6d4f\u89c8\uff08<code>-R<\/code>&nbsp;\u53c2\u6570\u8ba9 less \u80fd\u89e3\u6790\u989c\u8272\u4ee3\u7801\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep --color=always \"bug\" | less -R<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep -f &lt;file&gt; &lt;pathspec&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u4ece\u6587\u4ef6\u8bfb\u53d6\u6a21\u5f0f<\/strong>\uff1a\u4ece\u6587\u4ef6&nbsp;<code>&lt;file&gt;<\/code>&nbsp;\u4e2d\u6bcf\u884c\u8bfb\u53d6\u4e00\u4e2a\u6a21\u5f0f\u8fdb\u884c\u641c\u7d22\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep -f patterns.txt -- src\/<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep --and -e &lt;pat1&gt; -e &lt;pat2&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u903b\u8f91\u4e0e\uff08AND\uff09<\/strong>\uff1a\u67e5\u627e\u540c\u65f6\u5305\u542b&nbsp;<code>&lt;pat1&gt;<\/code>&nbsp;<strong>\u548c<\/strong>&nbsp;<code>&lt;pat2&gt;<\/code>&nbsp;\u7684\u884c\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep --and -e \"user\" -e \"login\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep --or -e &lt;pat1&gt; -e &lt;pat2&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u903b\u8f91\u6216\uff08OR\uff09<\/strong>\uff1a\u67e5\u627e\u5305\u542b&nbsp;<code>&lt;pat1&gt;<\/code>&nbsp;<strong>\u6216<\/strong>&nbsp;<code>&lt;pat2&gt;<\/code>&nbsp;\u7684\u884c\uff08\u540c\u591a\u4e2a&nbsp;<code>-e<\/code>\uff09\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep --or -e \"error\" -e \"exception\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep --not -e &lt;pat1&gt; &lt;pat2&gt;<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u903b\u8f91\u975e\uff08NOT\uff09<\/strong>\uff1a\u67e5\u627e\u5305\u542b&nbsp;<code>&lt;pat2&gt;<\/code>&nbsp;\u4f46<strong>\u4e0d<\/strong>\u5305\u542b&nbsp;<code>&lt;pat1&gt;<\/code>&nbsp;\u7684\u884c\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep --not -e \"test\" \"production\"<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong><code>git grep --recurse-submodules<\/code><\/strong><\/td><td class=\"has-text-align-left\" data-align=\"left\"><strong>\u641c\u7d22\u5b50\u6a21\u5757<\/strong>\uff1a\u5728\u641c\u7d22\u65f6\u540c\u65f6\u9012\u5f52\u8fdb\u5165\u6240\u6709\u5b50\u6a21\u5757\u3002<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>git grep --recurse-submodules \"API_ENDPOINT\"<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u5e38\u7528\u6a21\u5f0f<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5ffd\u7565\u5927\u5c0f\u5199\uff0c\u663e\u793a\u884c\u53f7\uff0c\u6574\u8bcd\u5339\u914d\ngit grep -inw mystring\n\n# \u6307\u5b9a\u63d0\u4ea4\/\u5206\u652f\uff0c\u6307\u5b9a\u6587\u4ef6\ngit grep -inw mystring \u63d0\u4ea4\u54c8\u5e0c\u7b80\u5199\/\u5206\u652f\u540d *.c<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">git log<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># \u67e5\u770b\u67d0\u4e2a\u4fee\u6539\u4f55\u65f6\u88ab\u5f15\u5165\ngit log -S func_xx\n\n# \u67e5\u770b\u67d0\u4e2a\u529f\u80fd\u7684\u4fee\u6539\u5386\u53f2\ngit log -L:func_xx:functions.c\n\n# \u56fe\u5f62\u5316\u67e5\u770b\u6240\u6709\u63d0\u4ea4\u5386\u53f2\uff0c\u6bcf\u4e2a\u63d0\u4ea4\u4e00\u884c\ngit log --oneline --graph --all\n\n# \u67e5\u770b\u6700\u8fd12\u6b21\u63d0\u4ea4\ngit log -2\n\n# \u67e5\u770bdev\u5206\u652f\u7684\u63d0\u4ea4\ngit log dev<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>git grep \u547d\u4ee4 \u8bf4\u660e \u793a\u4f8b git grep &lt;pattern&gt; \u6700\u57fa\u7840\u7528\u6cd5\uff1a\u5728\u5f53\u524d\u76ee\u5f55\u53ca [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,5],"tags":[],"class_list":["post-672","post","type-post","status-publish","format-standard","hentry","category-git","category-5"],"_links":{"self":[{"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/posts\/672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/comments?post=672"}],"version-history":[{"count":0,"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/posts\/672\/revisions"}],"wp:attachment":[{"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/media?parent=672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/categories?post=672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niuguodong.com\/index.php\/wp-json\/wp\/v2\/tags?post=672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}