美文网首页
常用的git命令整理

常用的git命令整理

作者: ForCLovC | 来源:发表于2020-06-25 23:43 被阅读0次

    git init   

           初始化一个 Git 仓库(repository),即把当前所在目录变成 Git 可以管理的仓库。

    git add

        文件            把文件添加到 暂存区(stage),可被 track 追踪纪录下来。可多次使用来添加多个文件。

        *                  添加所有修改到暂存区,效果同 git add all,待验证。

        .                   暂存新增加的和修改的文件,不包括已删除的文件。即当前目录下所有文件。

        -p                 暂存文件的一部分,会逐部分询问是否添加

    git commit

        -m                   一次性把暂存区所有文件修改提交到仓库的当前分支。

        -am                 使用该命令,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交。相当于add+commit

        --amend          重新提交,覆盖上一次的提交。尤其适用于提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了的情况。

        -p                     commit 文件的一部分,会逐部分询问是否提交

    git status 

          显示当前仓库的最新状态。

                提交之后,工作区就是“干净的”,即没有新的修改;

                有未提交文件时,分三个部分:

                    1.在 stage 的,修改了的文件,即将被 commit

                    2.没有 stage 的,修改了的文件,但被git track过的文件。

                    3.新的还没有被git track过的文件。

    git diff   

           查看工作区中的修改。

    --staged                                          查看 暂存区中的修改。

    <commit id1> <commit id2>         比较两次 commit 之间的差异。

    <branch1> <branch2>                   在两个 branch 之间比较。

    文件                                                 查看指定文件具体修改了哪些内容。

    HEAD -- 文件                                   查看版本库最新版本和工作区之间的区别。就是查看自己pull以来修改了什么

    git show   

           查看最后一个 commit 的修改。

    git log 

           显示从最近到最远的提交日志

        -p                                 除显示基本信息之外,显示每次提交的内容差异

        -2                                 仅显示最近两次提交。

        -pretty=oneline           简化日志信息,将每个提交放在一行显示

    git checkout -- 文件  丢弃工作区的修改,让该文件回到最近一次 git commit 或 git add 之后的状态。

        丢弃的范围包括

              1. 修改后还没有放到stage

              2. 添加到stage后又作了修改

    git reset

        HEAD 文件                      把stage的修改撤销(unstage),回退到工作区。

        --hard                               重置所有文件到未修改的状态。

        --hard HEAD                    回退到某个版本版本(回退上个版本为:HEAD^, 上上个版本为HEAD^ ^,上100个版本为:HEAD-100)   

        <commit SHA>                重置到某个 commit。

        HEAD~1                            将当前 branch 重置为倒数第二个 commit (即丢弃最后一个 commit)。

    git revert 

            revert实质是产生一个新的 commit,内容和要还原的 commit 完全相反。 比如,A commit 在 main.c 中增加了三行,revert A 产生的 commit 就会删除这三行。

        <commit id>  还原某个 commit。

        HEAD          还原到上次 commit。

    git rm

        文件                            把文件从版本库和工作区中删除,不会再追踪到。

        -f 文件                         强制删除版本库和工作区中有修改的文件。

        --cached 文件             把文件从版本库中删除,但让文件保留在工作区且不被 Git 继续追踪(track)

    git remote 

             查看已经配置的远程仓库服务器

        -v                                               显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。

        ls-remote <remote-name>       显示获得远程引用的完整列表。一般查看HEAD是哪个版本

        show <remote-name>              可以得到远程分支更为详细的信息以及 pull 和 push 相关提示信息。

        add <shortname> <url>           添加并关联一个远程库。其中,shortname用来代替整个 url。

    git push   

             推送本地修改到 origin。

        -u origin master                                            关联后,使用该命令第一次推送 master 分支的所有内容

        origin 远程分支(通常是 master)               推送最新修改。

        rename old_name new_name                     重命名一个远程仓库的简写名。

        rm <remote-name>                                       移除一个远程仓库。

        origin --delete <remote branch name>       删除一个远程分支。

        origin --delete <branch name>                    在本地和远程同步删除分支。

    git clone

        git@github.com:username/<repo name>.git      从远程库(origin)克隆一份到本地,仓库名同远程仓库名。

        https://github.com/username/repo name.git       作用同上。但不建议使用 https 协议

        <repo url> <folder name>                                      克隆一个仓库到指定文件夹。

        <repo url>                                                                克隆一个仓库到当前文件夹(应该是空的)。

    git branch 

            列出本地当前所有分支,方便查看。当前分支前面会标有一个 * 号。

        -r                       查看远程分支列表。

        -a                      显示所有分支,包括本地和远程。

        -v                      查看每一次分支的最后一次提交。

        -vv                    查看设置的所有跟踪分支。将所有的本地分支列出来并且包含更多的信息

        --merged          查看所有已经被 merge 的 branch。

        --no-merged     查看所有还没被 merge 的 branch。

    git checkout <branch name> 

           切换到该branch

        -b <branch name>     创建并切换到新的branch,相当于下面两条命令:git branch 分支 + git checkout 分支。

        -                                  切换到上一个 branch。

    git merge <branch name> 

           合并指定branch到当前所在的分支。

        --no-ff -m "提交说明信息" <branch name>    用普通模式合并

                    参数 –no-ff 表示 禁用Fast forward快进模式, 快进模式看不出来曾经做过合并,而普通模式可以

        -d <branch name>                                          普通删除分支。一般情况下,先合并完分支,然后再删除,否则会删除失败

        -D <branch name>                                          强行删除分支

    git rebase <target branch name>(通常是 master)   

           在本地 master 上进行变基操作。

              注意:merge 与 rebase 都是整合来自不同分支的修改。

                  merge 会把两个分支的最新快照以及二者最近的共同祖先进行三方合并,合并的结果是生成一个新的快照(并提交)。

                  rebase 会把提交到某一分支(当前分支)上的所有修改都转移至另一分支(目标分支)上,就好像“重新播放”一样。

              变基是将一系列提交按照原有次序依次应用到另一分支上,而合并是把最终结果合在一起。

             简言之:这两种整合方法的最终结果没有任何区别,但是变基使得提交历史更加整洁。

        –ongo 目标分支 第一分支 第二分支:选中在第二分支里但不在第一分支里的修改,将它们在目标分支(通常是 master)上重演。

    git stash 

    把当前分支的工作现场储存起来,等以后恢复现场后继续工作。一般适用于还没有 commit 的分支代码。

        list            查看储存的工作现场纪录列表。

        apply        恢复最近 stash 过的工作现场

        drop         删除储存的工作现场

        pop          相当于上面两条命令,恢复回到工作现场的同时把 stash 内容也删除了

        clear        清空所有暂存区的 stash 纪录

    git push origin <branch name>                                 

           把该分支上的所有本地提交推送到远程库对应的远程分支上。

    git checkout <branch name> origin/<branch name> 

           如果远程有某一个分支而本地没有,把远程的这个分支迁到本地。

    git checkout -b <branch name> origin/<branch name>            

           把远程分支迁到本地顺便切换到该分支。

    git pull                                                       

            抓取远程库最新提交,拉取并合并。

    git fetch                                                    

             没有 merge 的 pull。

    git branch --set-upstream <branch name> origin/<branch name>  

            建立本地分支和远程分支的关联。

    git submodule update --recursive                               

            第三方依赖与远程同步,还可以在最后添加 -f 参数。

    相关文章

      网友评论

          本文标题:常用的git命令整理

          本文链接:https://www.haomeiwen.com/subject/znoefktx.html