美文网首页
Git常用指令

Git常用指令

作者: lkzy | 来源:发表于2020-04-01 11:22 被阅读0次

    新建项目

    设置全局配置

    git config --global user.name "用户名" 
    
    git config --global user.email "用户邮箱"
    

    新建一个新仓库

    git clone git@仓库域名:账号/项目名.git 
    cd 项目名 
    touch README.md 
    git add README.md 
    git commit -m "add README" 
    git push -u origin master 
    

    已存在文件夹或者git仓库

    cd cpp_study
    git init
    git add README.md
    git commit -m "first commit"
    git branch -M main
    git remote add origin git@github.com:CHLK/cpp_study.git
    git push -u origin main
    

    拷贝一个 Git 仓库到本地

    git clone

    实例
    1、拷贝一个 Git 仓库到本地,本地目录名称与Git 仓库同名
    git clone <版本库的网址>
    2、拷贝一个 Git 仓库到本地,重新定义本地目录名称
    git clone <版本库的网址> <本地目录名>
    3、 拷贝一个指定分支到本地,本地目录名称与分支同名
    git clone -b <分支名> <版本库的网址>

    新建分支

    1、先切换到已有的分支,这里以master分支为例子
    git checkout master
    2、创建并切换到新分支,这里的新分支是develop
    git checkout -b develop
    3、更新分支代码并提交

    git add *
    git commit -m "init develop"
    git push origin develop
    

    删除已上传到git的文件或文件夹

    首先把文件或文件夹从git删除

    //删除文件夹
    git rm --cached -r logs
    //删除文件
    git rm --cached logs/xx.log
    

    然后更新 .gitignore 忽略掉目标文件或文件夹
    最后提交更改

     git commit -m "delete directory logs from git"
    

    计算代码量

    git log --author="name" --since='2020-05-21' --until='2020-06-17' --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "增加的行数:%s 删除的行数:%s 总行数: %s\n",add,subs,loc }'
    

    检测仓库地址是否可以连通

    git ls-remote -h [Git仓库地址] HEAD
    

    Git回滚代码到某个commit

    回退命令:

    #本地回退
    # 1.回退到上个版本
    git reset --hard HEAD^
    # 2.回退到前3次提交之前,以此类推,回退到n次提交之前
    git reset --hard HEAD~3 
    # 3.退到/进到 指定commit的sha码
    git reset --hard commit_id 
    
    #本地回退之后强制推送到远程分支
    git push origin HEAD --force
    

    Other

    1. git config

          在刚刚安装好git后需要做一下配置
      
          git config --global user.name <your name>
      
          git config --global user.email <your email>
      
          除了--global,还有--local和--system,前者只针对当前仓库,后者针对整个系统的所有用户,这两者不常用。
      
          使用--list可以查看配置信息。
      

      git仓库本地操作命令介绍
    2. 2

      git init:

        初始化本地仓库,会在当前目录下生成一个.git目录,该目录中记录了git仓库的相关信息。
      

      git仓库本地操作命令介绍

      git仓库本地操作命令介绍
    3. 3

      git add:

       向git仓库中添加本地文件,此时添加信息存放在暂存区。git有一个暂存区用来保存用户添加但是还没有提交的信息。一旦提交,就将暂存区的内容合并到仓库中。
      
    4. 4

      git status:

        查看当前分支的操作状态。如果只修改没有添加,使用此命令可能看到红色的提示信息,如果使用了add命令,可能会看到绿色的提示信息,具体颜色可能与系统或终端的不同而不同。
      

      git仓库本地操作命令介绍
    5. 5

        如果此时没有提交,又修改了文件的内容,则两次修改的信息都可以通过status命令查看到
      

      git仓库本地操作命令介绍
    6. 6

      git diff:

         查看当前修改和暂存区的不同
      

      git diff --cached :

         查看暂存区与当前分支的不同
      
        对于此二者的不同,我们需要知道在git中有三个区域保存下面三种状态的文件:
      
             修改未添加
      
             修改已添加
      
             提交
      
        git diff是前两个的比较,git diff --cached是后两者的比较。下图通过一个实验进一步证实:
      
        我们分别作了两次修改,第一次修改增加了一条printf(“world\n”);语句并且进行了add操作,第二次修改增加了一条printf(“git\n”);语句,没有进行add操作。
      

      git仓库本地操作命令介绍
    7. 7

      git commit -m '<对此次提交的描述信息>':

          提交修改,-m参数表示后边要添加说明信息,此时修改就合并到了当前分支中。
      

      git仓库本地操作命令介绍
    8. 8

      git log:

          查看提交信息,提交信息中会显示提交的唯一id、提交的作者和日期以及提交时附加的描述信息。
      

      git仓库本地操作命令介绍
    9. 9

      git reset <HEAD^ or hashID>:

          撤销上一次操作或将HEAD指向指定的hashID值记录处。HEAD^表示回退一步。这种方式HEAD指针真实的向后移动了。
      
          另外如果使用--hard参数,则HEAD指针反而前进了一步,这种方式可以理解为将制定的记录完全复制到了新的下一个节点处。
      

      git仓库本地操作命令介绍

      git仓库本地操作命令介绍
    10. 10

    git show <hashID>:
    
            显示指定hashID提交的详细信息
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/4814d1f6491e360e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=11) 
    
    1. 11
    git branch :
    
            显示已有的分支
    
    git  branch <branchname>:
    
            创建新分支
    
    git  branch –D  <branchname>:
    
            删除分支,此时必须位于其他分支
    
    git  branch –a :
    
            显示本地与远程的所有分支
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/a59e9da9dbeaa0ed.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=12) 
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/1ee561feae560e4c.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=13) 
    
    1. 12
    git checkout <分支名>:
    
            切换分支   
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/88af214ce764d5c3.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=14) 
    
    1. 13
    git merge:
    
            合并分支,在当前分支上创建新节点,快照两个分支的内容并合并。
    
            下面举例说明:
    
             merge前在master分支新建了max.c文件,在b1分支新建了min.c文件,在b2分支新建了isequal.c文件。
    
           首先将在master上merge b1,之后merge b2,最后分别在三个分支继续进行开发,分支示意图如下所示。
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/1f4dff01d0ed7051.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=15) 
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/28b6b1138e4beebf.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=16) 
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/2897befcb59b88bf.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=17) 
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/961b8caf91ced5e1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=18) 
    
    1. 14
    git reflog:
    
           管理reflog信息,显示所有改变HEAD指针的操作记录及其hashID。记录了所有在本仓库的操作记录。
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/1fe9fb36d93348e1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=19) 
    
    1. 15
    git rebase <指定的分支>:
    
            将当前分支变基到指定的分支。
    
            举例如下所示:
    
             在master分支新建文件ahrs.c ,在b1新建ahrs_1.c,在b2新建ahrs_2.c。分别在b1分支和b2分支做基于master的rebase操作。
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/1d78d50b0ec0bd64.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=20) 
    
    [![git仓库本地操作命令介绍](https://img.haomeiwen.com/i15081029/f6ee37aee001b64f.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/414eccf657fa866b431f0a8f.html?picindex=21) 
    
    1. 16
    git stash = git stash save:
    
          将当前分支的修改暂存,当前仓库恢复到最近一次提交状态。
    
    git stash pop:
    
          将上一次stash save的内容恢复。
    
    1. 17
    git format-patch -n <id>
    
            将<id>及之前n次的提交打patch,当n=1时就是当前id的提交;
    
    git apply --stat xxx.patch
    
            查看patch
    
    git apply --check xxx.patch
    
            检查patch
    
    git am --signoff < xxx.patch
    
            应用patch,即打patch到当前工程
    

    TroubleShooting

    IDEA Can't Update No tracked branch configured for branch master or the branch doesn't exist

    当新建立一个分支之后,在新建分支下更新,报错如下:
    IDEA Can't Update No tracked branch configured for branch master or the branch doesn't exist.To make your branch track a remote branch call, for example,git branch --set-upstream-to=origin/master ster (show balloon)

    再Git Bash中该项目的新建分支下,输入 下列命令关联远程和本地分支

    git branch --set-upstream-to origin
    

    相关文章

      网友评论

          本文标题:Git常用指令

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