git命令行命令(1)
admin
2023-01-31 09:06:36
0

我们知道git是分布式的版本库,也就是本地仓库里面包含了开发的所用内容,每个人都是本地版本库的主人,包括历史记录、文件内容。即使没有和远程代码库交换依旧可以提交内容到本地仓库,然后git push到远程仓库。
可以使用git $commit --help查看每个命令的html帮助文档,例如git init --help

一. 创建本地仓库

git init可以在本地创建一个空的本地仓库。其常用命令行如下,
git init [-q | --quiet] [--bare] [directory]

  • -q| --quiet :创建过程中只输出警告或者错误级别的信息
  • --bare是表示创建的版本库是裸版本库,也就是不包含工作空间,只有.git目录下面内容的仓库,一般用作服务器上的远程仓库。
  • directory为本地仓库的目录

二.配置本地仓库

当我们有了本地仓库以后,需要对这个仓库配置,需要配置用户名和用户的email和其他的配置。
git config命令提供了三种级别的配置。分别是:

  • --global:用户级别。其修改的配置文件的内容在~/.gitconfig文件中,如果是windows系统就在C:\Users\$用户名 的目录下
  • --system:适用于所用的用户,其修改的配置文件在etc/gitconfig文件中,如果是windows系统,一般修改在git的安装目录下,例如$GIT_INSTALL_DIR\mingw64\etc\gitconfig
  • --local:适用范围为本版本库,其修改的配置文件在本地仓库的.git/config文件中,也是git config修改的默认范围。
    在使用git命令配置的时候,其配置文件的优先级为local>global>system,可以使用git config --list --show-origin查看每个配置项所在的文件

    1.设置配置

git config [--add] name value                ---添加或者修改配置项,默认的使用范围为本地仓库,可以使用--global、--system来指定范围,
                                                                        例如 git config user.name fenglxh、git config user.email fenglxh@126.com
git config --unset name                           --取消该配置项,同样可以使用--global、--system来指定范围,

2.显示配置

使用git config [-l|--list]显示配置

3.配置命令别名

git存在大量命令,可以对我们经常使用命令,而且命令比较长的命令设置一个别名,也就是一个简写。
别名的配置也需要使用config命令,比如给 git status 设置别名 st:

git config alias.st status                -----以alias.开头
git config --global alias.lg "log --color --graph --oneline --abbrev-commit"

这样我们以后使用的时候,直接用 git st 就可以做 git status 的事了。

三.修改本地仓库

使用版本管理最常用的操作就是提交代码,不过对git来说,如果我们修改了文件内容提交的话必须先使用git add命令,然后才能使用git commit命令提交到本地仓库。

1. git add

git add命令是把修改提交到暂存区中。

git add -A                   -----------懒人模式,把工作目录下所有的更改提交到,包括删除、添加、修改文件
git add gameoflife-acceptance-tests/\*.java -----------------------------把某个目录下的所有java后缀的文件提交
git add *.java                              ------------------------------提交所有的java后缀的文件

2.git rm

git rm命令是把暂存区中的添加删除,命令基本和git add相反,都是修改的暂存区

git rm --cached hello-word/README                   ---------------把 hello-word/README从暂存区移除
git rm -f hello-word/README                              ---------------把hello-word/README从暂存区移除,同时删除工作目录下的该文件
git rm --cached Documentation/*.txt                   ---------------把Documentation下的所有的txt文件从暂存区移除

3.git commit

git commit命令是提交暂存区中的修改。

git commit -m "commit message"          --------------带有提交注释的提交
git commit --allow-empty -m "This is a empty commit"             ----------当暂存区没有变化的时候,是提交失败的,可以加上 --allow-empty运行空提交,此时这两个提交的tree对象指向同一个。

4.git stash

当我们修改了工作区的内容,但是还不能提交,此时需要更新代码的时候,可以把本地的修改存储,使用git stash命令。这样就会把工作区的修改(不包括新增)保存,并把工作区的内容切换到HEAD指向的提交中,这样又是一个干净的工作区了。

git stash ---------------存储
git stash pop -------------弹出存储
git stash list  --------显示所有的存储

实现原理:
当我们使用git stash命令的时候,会生成.git/refs/stash文件,其内容为stash的 sha1信息。可以通过git cat-file查看这个SHA1的信息,会发现这个sha1是以当前的SHA1和工作区提交(创建的一个提交对象)为父提交。
git命令行命令(1)
注:SHA-Stash为.git/refs/stash文件中保存的sha1。sha-temp为工作区的提交

当我们多次运行git stash的时候,.git/refs/stash文件中的sha永远执行最近执行的stash对应的sha。在.git\logs\refs/stash文件中按顺序保存所有的stash命令对应的sha

四.查看仓库

1.git status

显示工作目录下的状态。

当我们不存在工作目录修改的时候执行输出如下信息:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
随便对其中的某个文件修改,但是不提交暂存区:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   pom.xml

no changes added to commit (use "git add" and/or "git commit -a")
此时我们把修改提交到缓存区,再查看状态,会发现暂存区发生了变化。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD ..." to unstage)

        modified:   pom.xml
此时我们再修改该文件,但是不执行git add命令。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD ..." to unstage)

        modified:   pom.xml

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   pom.xml
会发现提示pom.xml文件修改了出现两个地方,一个是暂存区的修改,一个是工作目录的修改。而且其提示颜色并不相同

我们可以使用git status -s命令查看统计的信息(工作区的修改使用红色字体,绿×××字体是暂存区的修改)。
git命令行命令(1)

2.git diff

git diff命令显示工作区、提交、暂存区的差异

$ git diff                                         ------显示工作空间和暂存区的差异
diff --git a/pom.xml b/pom.xml
index 0ec4374..3f64500 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@                                     ----文件的第十行开始的起航
     
         SNAPSHOT
         UTF-8
-        1.4
+        1.5
         2.6
         
         1.7
@@ -178,6 +178,12 @@
                 ${easyb.version}
                 test
             
+                        
+                dom4j
+                dom4j
+                1.6.2
+                test
+            
         
     
     

$git add pom.xml  ------------------------提交到暂存区
$git diff --cached      ----------------------比较暂存区和提交的差异

3.git log

git log命令可以查看提交的信息。

git log -1              ----------------可以查看最近的一次提交,-N表示最近的N次提交
git log --oneline -N     --------------提交以一行信息显示,等于--pretty=oneline
git log --graph               -----------以图形的方式展示提交树
git log --stat                  -----------------展示提交的汇总信息

git log的精细化输出,--pretty选项。使用--pretty选项可以精细化输出commit的所有信息。

git log --oneline         --------------等价于git log --pretty=oneline输出内容为 
git log --pretty=short            ------------输出内容为<sha1>
                                                                            <author>
                                                                            <title line>
git log --pretty=medium/full/fuller/email
git log --pretty=raw        暂时提交的树、父提交等比较全的信息</code></pre>
<p>git --pretty=format:<string> 其中string是可以格式化的,支持占位符。常用的占位符如下:</p>
<ul>
<li>%H: commit hash        -----提交的SHA</li>
<li>%h: abbreviated commit hash         ----提交的SHA简写形式</li>
<li>%P: parent hashes                   ----------父提交的SHA</li>
<li>%p: abbreviated parent hashes     ----------父提交的SHA简写形式</li>
<li>%an: author name           -----作者名字</li>
<li>%ae: author email</li>
<li>%ar: author date, relative</li>
<li>%n: newline</li>
<li>%%: a raw %-----%自身</li>
<li>%s: subject   ---提交注释<br/>例如:
<pre><code class="language-bash">git log --pretty=format:"The author of %h was %an, %ar%nThe title was >>%s<<%n" -------输出大概如下:
The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<</code></pre>
<h4>4.git grep</h4>
<p>git grep命令可以根据模式按行查找内容。支持的pattern类型如下:--basic-regexp, --extended-regexp, --fixed-strings, or --perl-regexp。默认为basic-regexp</p>
<pre><code class="language-bash">git grep 'time_t' -- '*.[ch]'
git grep -E 'public (class|interface) \w+[0-9]+' --------查找所有的java的类名包含数字的类
git grep -F 'fixed string'</code></pre>
<h4>5.git blame</h4>
<p>git blame可以查找文件每一行的提交信息,追溯文件的内容。<br/>git blame xxx.txt</p></li>
</ul>                <!--end::Text-->
            </div>
            <!--end::Description-->
            <div class="mt-5">
                <!--关键词搜索-->
                            </div>
            <div class="mt-5">
                <p class="fc-show-prev-next">
                    <strong>上一篇:</strong><a href="/kaifa/show-92214.html">时序女神守护Horae之恒久价值</a><br>
                </p>
                <p class="fc-show-prev-next">
                    <strong>下一篇:</strong><a href="/kaifa/show-92221.html">求$a、$b、$c中的最大值和最小值</a>                </p>
            </div>
            <!--begin::Block-->
            <div class="d-flex flex-stack mb-2 mt-10">
                <!--begin::Title-->
                <h3 class="text-dark fs-5 fw-bold text-gray-800">相关内容</h3>
                <!--end::Title-->
            </div>
            <div class="separator separator-dashed mb-9"></div>
            <!--end::Block-->
            <div class="row g-10">
                

            </div>


        </div>
        <!--end::Table widget 14-->
    </div>
    <!--end::Col-->

    <!--begin::Col-->
    <div class="col-xl-4 mt-0">
        <!--begin::Chart Widget 35-->
        <div class="card card-flush h-md-100">
            <!--begin::Header-->
            <div class="card-header pt-5 ">
                <!--begin::Title-->
                <h3 class="card-title align-items-start flex-column">
                    <!--begin::Statistics-->
                    <div class="d-flex align-items-center mb-2">
                        <!--begin::Currency-->
                        <span class="fs-5 fw-bold text-gray-800 ">热门资讯</span>
                        <!--end::Currency-->
                    </div>
                    <!--end::Statistics-->
                </h3>
                <!--end::Title-->
            </div>
            <!--end::Header-->
            <!--begin::Body-->
            <div class="card-body pt-3">

                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/kaifa/show-14461630.html" class="text-dark fw-bold text-hover-primary fs-6">终于明白“亲友游戏.到底有挂吗...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">您好:亲友游戏这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/uploadfile/202512/59273ffdd496f9c.jpg')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/news/show-14461629.html" class="text-dark fw-bold text-hover-primary fs-6">“月薪6万,不被裁员”,香港年...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">考公的风,还是吹到了香港。2025-2026年度香港特区公务员联合招聘中,最受关注的政务主任(AO)...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/news/show-14461628.html" class="text-dark fw-bold text-hover-primary fs-6">最新引进“新天道联盟.到底有挂...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">家人们!今天小编来为大家解答新天道联盟透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/jishu/show-14461627.html" class="text-dark fw-bold text-hover-primary fs-6">【第一财经】“微信小程序掼蛋....</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">家人们!今天小编来为大家解答微信小程序掼蛋透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/weixiu/show-14461626.html" class="text-dark fw-bold text-hover-primary fs-6">【今日要闻】“新蛮王牛牛.是不...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">家人们!今天小编来为大家解答新蛮王牛牛透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/news/show-14461625.html" class="text-dark fw-bold text-hover-primary fs-6">移动流量卡真的划算吗?三大运营...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">办卡:微 信 公 众 号 搜【 可可 找卡】,每天更新运营商官方高性价比套餐!帮你精准匹配适配流量方...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/kaifa/show-14461624.html" class="text-dark fw-bold text-hover-primary fs-6">终于了解“大庆划水麻将.是不是...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">有               亲,根据资深记者爆料大庆划水麻将是可以开挂的,确实有挂(咨询软件无需...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/kaifa/show-14461623.html" class="text-dark fw-bold text-hover-primary fs-6">【今日要闻】“新蛮王牛牛.真的...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">网上科普关于“新蛮王牛牛有没有挂”话题很是火热,小编也是针对新蛮王牛牛作*弊开挂的方法以及开挂对应的...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/kaifa/show-14461622.html" class="text-dark fw-bold text-hover-primary fs-6">今日重大消息“乐暴延边麻将.可...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">网上科普关于“乐暴延边麻将有没有挂”话题很是火热,小编也是针对乐暴延边麻将作*弊开挂的方法以及开挂对...</span>
                    </div>
                    <!--end::Title-->
                </div>
                                <!--begin::Item-->
                <div class="d-flex flex-stack mb-7">
                    <!--begin::Symbol-->
                    <div class="symbol symbol-60px symbol-2by3 me-4">
                        <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div>
                    </div>
                    <!--end::Symbol-->
                    <!--begin::Title-->
                    <div class="m-0">
                        <a href="/jishu/show-14461621.html" class="text-dark fw-bold text-hover-primary fs-6">重磅消息“白金岛游戏.开挂神器...</a>
                        <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">家人们!今天小编来为大家解答白金岛游戏透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...</span>
                    </div>
                    <!--end::Title-->
                </div>
                
            </div>
            <!--end::Body-->
        </div>
        <!--end::Chart Widget 35-->
    </div>
    <!--end::Col-->
</div>



</div>
<!--end::Content container-->
</div>
<!--end::Content-->
</div>
<!--end::Content wrapper-->
<!--begin::Footer-->
<div id="kt_app_footer" class="app-footer">
    <!--begin::Footer container-->
    <div class="app-container container-xxl d-flex flex-column flex-md-row flex-center flex-md-stack py-3">
        <!--begin::Copyright-->
        <div class="text-dark order-2 order-md-1">
            <span class="text-muted fw-semibold me-1">2025 ©</span>
            太卓网<a href="http://www.yexian114.com/">叶县生活网</a> <a href="https://www.wxx86.cn/">编程知识网</a>  <a href="http://www.kcwzh.com/">开创游戏网</a> <a href="https://www.caiding5.net">菜丁网</a><a href="http://cn.office369.com">奥飞商务网</a>  <a href="http://www.zlnznjj.com/">众乐知识网</a><a href="http://www.lhjia.com/">乐活家</a><a href="http://www.nengyuan100.com/">能源100网</a> <a href="http://it.tdroid.net/">泰达科技</a><a href="http://cn.tdroid.net/">太卓开发网</a><a href="http://cn.yuansudz.com/">元素科技网</a><a href="http://www.80hlw.com/">八零商务网</a>        </div>
        <!--end::Copyright-->
        <!--begin::Menu-->
        <ul class="menu menu-gray-600 menu-hover-primary fw-semibold order-1">
                        <li class="menu-item">
                <a href="/news" target="_blank" class="menu-link px-2">科技资讯</a>
            </li>
                        <li class="menu-item">
                <a href="/jishu" target="_blank" class="menu-link px-2">技术分享</a>
            </li>
                        <li class="menu-item">
                <a href="/kaifa" target="_blank" class="menu-link px-2">程序开发</a>
            </li>
                        <li class="menu-item">
                <a href="/weixiu" target="_blank" class="menu-link px-2">设备维修</a>
            </li>
                    </ul>
        <!--end::Menu-->
    </div>
    <!--end::Footer container-->
</div>
<!--end::Footer-->
</div>
<!--end:::Main-->
</div>
<!--end::Wrapper-->
</div>
<!--end::Page-->
</div>
<!--end::App-->
<div id="kt_scrolltop" class="scrolltop" data-kt-scrolltop="true">
    <!--begin::Svg Icon | path: icons/duotune/arrows/arr066.svg-->
    <span class="svg-icon">
        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
            <rect opacity="0.5" x="13" y="6" width="13" height="2" rx="1" transform="rotate(90 13 6)" fill="currentColor"></rect>
            <path d="M12.5657 8.56569L16.75 12.75C17.1642 13.1642 17.8358 13.1642 18.25 12.75C18.6642 12.3358 18.6642 11.6642 18.25 11.25L12.7071 5.70711C12.3166 5.31658 11.6834 5.31658 11.2929 5.70711L5.75 11.25C5.33579 11.6642 5.33579 12.3358 5.75 12.75C6.16421 13.1642 6.83579 13.1642 7.25 12.75L11.4343 8.56569C11.7467 8.25327 12.2533 8.25327 12.5657 8.56569Z" fill="currentColor"></path>
        </svg>
    </span>
    <!--end::Svg Icon-->
</div>
<!--begin::Javascript-->
<script>var hostUrl = "/static/default/pc/";</script>
<!--begin::Global Javascript Bundle(mandatory for all pages)-->
<script src="/static/default/pc/plugins/global/plugins.bundle.js"></script>
<script src="/static/default/pc/js/scripts.bundle.js"></script>
<!--end::Global Javascript Bundle-->

<!--end::Javascript-->
</body>
<!--end::Body-->
</html>