• git常用命令以及常见错误处理


    git常用命令以及常见错误处理

    git常用命令

    初始化

    git init ,会在本地目录下生成一个.git文件夹,表明此项目已被git管理。

    克隆远程仓库或者与远程仓库建立链接

    git clone :克隆远程仓库或者与远程仓库建立链接

    git clone 远程仓库地址
    
    • 1

    git remote add:连接远程仓库

    git remote add origin 远程仓库地址
    
    • 1

    查看本地仓库的状态

    git status : 查看本地仓库的状态

    查看仓库有哪些分支

    git branch : 查看仓库有哪些分支

    切换或新建分支

    git checkout : 切换或新建分支

    #创建dev分支并切换到该分支下
    git checkout -b dev
    #切换到master分支
    git checkout master
    
    • 1
    • 2
    • 3
    • 4

    新建分支后要想远程仓库也生成该分支,
    可立即用如下命令关联远程分支,关联后远程仓库就会生成这个分支。

    git push --set-upstream origin dev
    
    • 1

    添加

    git add : 添加改动

    #添加指定改动文件
    git add 文件名
    #添加所有改动文件
    git add .
    
    • 1
    • 2
    • 3
    • 4

    提交

    git commit : 将add的文件提交到本地仓库

    git commit -m "注释"
    #如果commit注释写错了,只是想改一下注释,只需要:
    git commit --amend -m "新注释"
    
    • 1
    • 2
    • 3

    推送

    git push : 将本地仓库推送到远程仓库

    git push origin 分支名
    
    • 1

    合并分支

    以将dev分支合并到marter分支为例:

    1. 首先切换到master分支上
    git checkout master
    
    • 1
    1. 确保master代码是最新的代码
    git pull origin master
    
    • 1
    1. 然后我们把dev分支的代码合并到master上
    git merge dev
    
    • 1
    1. 然后查看状态及执行提交命令
    git status
    
    • 1

    //显示你有1个commit,需要push到远程master上

    $ git status
    On branch master
    Your branch is ahead of ‘origin/master’ by 1 commits.
    (use “git push” to publish your local commits)
    nothing to commit, working tree clean
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 提交到master
    git push origin master
    
    • 1

    回退

    我们在使用git命令的时候,有时候误输入命令,导致需要回退到之前的状态。现在针对这种情况做一个汇总:

    1. git add 回退
    git status 先看一下add中的文件,确定已经添加的文件。
    git reset HEAD 如果后面什么都不跟的话,就是add已添加的全部撤销。
    git reset HEAD xxx.cpp 只撤销所列出的文件。
    
    • 1
    • 2
    • 3
    2. git commit 回退
    git reset HEAD~1
    
    • 1

    注意:仅仅是撤回commit操作和撤回git add . 操作,您写的代码仍然保留

    HEAD~1 表示的是最顶上的一个版本,或者也可以写成 HEAD^  
    如果你进行了2次commit,想都撤回,可以使用 HEAD~2 或者 HEAD^~1
    
    • 1
    • 2
    # --mixed 默认参数,不删除工作空间改动代码,撤销commit并且撤销git add . 
    git reset --mixed HEAD^ 
    或者 
    git reset HEAD^ 
    
    # --soft  不删除工作空间改动代码,撤销commit,不撤销git add .
    git reset --soft HEAD^ 
    
    # --hard 删除工作空间改动代码,撤销commit,撤销git add .
    git reset --hard HEAD^ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    3. Git review回退
    git checkout [分支名] 切换到需要回退的分支
    git log 查看提交记录
    git reset --hard 代码回退
    git reset --hard [commit id] 复制最近提交的上一条提交记录的commit id
    git review 重新提交修改
    
    • 1
    • 2
    • 3
    • 4
    • 5
    4. Git rebase回退
    git reflog 先查看本地提交操作编号。
    找到提交前的项目编号,执行:git reset --hard 项目编号
    
    • 1
    • 2
    5. Git cherry-pick回退
    git cherry-pick --abort.
    
    • 1

    git常见错误处理

    error: File: XXX XXX MB, exceeds 100.00 MB.

    1. 提交的文件中有超过100MB导致出错
    remote: Powered by GITEE.COM [GNK-6.4]
    remote: error: File: 51237645d622455060faa0fbcd1b6074f192d673 116.58 MB, exceeds 100.00 MB.
    remote: Use command below to see the filename:
    remote: git rev-list --objects --all | grep 51237645d622455060faa0fbcd1b6074f192d673
    remote: Please remove the file from history and try again. (https://gitee.com/help/articles/4232)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 解决办法

    按照提示找到那个超大的文件

    git rev-list --objects --all | grep 51237645d622455060faa0fbcd1b6074f192d673
    
    • 1
    1. 执行命令忽略掉超大的文件
    git rm --cached 文件名
    #如果是文件夹
    git rm -r --cached 文件夹名
    
    • 1
    • 2
    • 3
    1. 将要忽略的文件名添加到.gitignore中

    2. 然后执行add 和 commit

    git add .
    #这里的命令是用原来的信息再重新提交一次
    git commit --amend -CHEAD
    
    • 1
    • 2
    • 3
    1. 在commit的提交历史里面去除这个超大文件
    git filter-branch --tree-filter 'rm -f 文件名' HEAD
    
    • 1

    全部操作如下:
    在这里插入图片描述
    7. 最后再执行push

    git push origin master
    
    • 1

    这时候会出现如下错误,解决办法见下一条:
    在这里插入图片描述

    ! [rejected] master -> master (non-fast-forward)

    1. 出现 master -> master (non-fast-forward)这个错误,表明:你的本地仓库是新的代码,而你的远程仓库还是之前版本的代码
    To gitee.com:liang_baikai/test.git
     ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'gitee.com:liang_baikai/test.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 强制覆盖
      ** 进行此操作时一定要检查清楚再操作 **
    git push --force 仓库地址
    #或者
    git push --force origin master
    #或者
    git push origin master -f
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. pull
    git pull
    
    • 1
  • 相关阅读:
    OceanBase v4.2 特性解析:新增三种临时表功能,更多的Oracle语句兼容
    Hibernate 一对多关系映射
    shell快速启动tomcat集群
    Facebook账号运营技巧
    一些 typescript 问答
    报表工具怎么选?JAVA开源工具那么好用,为什么大家还花钱买商用
    提取多个txt数据并合成excel——例子:与中国建交的国家
    可观测性不止于监控,让运维不开盲盒!
    极狐GitLab专家团队支招解决 CVE-2023-4998 漏洞问题
    Day17_10 JavaWeb基础之IDEA、JavaWeb项目部署
  • 原文地址:https://blog.csdn.net/liang_baikai/article/details/128017501