git命令行下push代码到远程仓库出错——实例分析

通常我们提交代码都是在IDE上完成,但有时候也会通过命令方式完成,但无论哪种方式,由于开发环境以及使用者的一些原因,都有可能出现远程push问题,现在演示一种正常流程:

     git clone {git仓库url}    //把远程仓库的代码复制到本地

      ........                        //本地进行代码修改或增加删除后

     git add ./*                 // 提交代码到本地暂存区

     git commit -m '提交的消息'    //提交代码到本git地仓库

     git  push                            //提交代码到远程仓库

通常使用上述命令可以顺利完成代码的下载、更新、上传,不会有什么问题(这里暂不考虑多人操作的场景),这主要是执行这些命令其实它背后有一些默认的约定在里面,正常情况下是符合这些约定的,所以操作可以正常完成。

 


 

但是再来看下面这个场景,有可能我们是直接拷贝了别人的一份代码到自己电脑下的某个目录,再按上面的操作来进行就会不灵了。可能会报以下问题

 这个问题主要根源是COPY别人的项目,那项目下的.git目录也是别人的git版本信息,所以出问题难免的,如果在这种场景下,我们对整个git原理有清晰的了解,就不难解决:

1. 先把copy过来的项目下的.git 目录删除,当前如果没有就可省略这一步,这样当前的项目就和 git 解除了关系。

2. 在项目目录下,执行 git init   ,主要用来初始化一个空的git本地仓库。执行完上面的命令,当前目录下会自动生成.git隐藏文件夹,该隐藏文件夹就是git版本库

3. 执行命令对远程git仓库进行映射,映射前可以 git remote -v 查看下当前是否已有映射

    git remote add {别名}  {远程仓库URL}

4. 执行以下命令完成让远程仓库强制覆盖本地仓库的合并(由于是重新git init初始化了本地仓库,所以需要这个操作),否则push时可能报 fatal: refusing to merge unrelated histories 的错

git fetch --all    //拉取所有更新,不同步;
git reset --hard origin/master // 本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件),要注意origin需要替成实际的别名
git pull  // 这个命令是为了保险再执行一次拉取

5. git push --set-upstream {远程仓库分支}   // 一般可以这样  {别名} + 空格 +{远程分支名}

 

 

 

 

    

 

  

  

posted @ 2021-06-28 17:46  杭州胡欣  阅读(231)  评论(0编辑  收藏  举报