• Git复习(十)之常见报错和疑问


    报错

    情况一:git pull报错

    There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
    git pull <remote> <branch>
    
    If you wish to set tracking information for this branch you can do so with:
    
    git branch --set-upstream-to=origin/<branch> release

    其实,输出的提示信息说的还是比较明白的。

    使用git在本地新建一个分支后,需要做远程分支关联。如果没有关联,git会在下面的操作中提示你显示的添加关联。

    关联目的是在执行git pull, git push操作时就不需要指定对应的远程分支,你只要没有显示指定,git pull的时候,就会提示你。

    解决方法:

    就是按照提示添加一下呗:

    git branch --set-upstream-to=origin/remote_branch  your_branch

    其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。

    或者使用

    git push origin xxx

    情况二:git push报错

    To github.com:michaelliao/learngit.git
     ! [rejected]        dev -> dev (non-fast-forward)
    error: failed to push some refs to 'git@github.com:michaelliao/learngit.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.

    这是因为远程分支比你的本地更新,有人先于我们提交代码到远程

    解决方法:

    拉取最新代码,然后在push

    git pull

    情况三:git add报错

    案例一:

    Changes not staged for commit

    可是我们明明有修改啊!

    解决方法:

    目录层级不对,找到正确的再次执行命令

    案例二:

    The following paths are ignored by one of your .gitignore files:
    App.class
    Use -f if you really want to add them.

    因为这个文件被我们忽略了

    解决方法:

    强制提交

    git add -f xxx 

    疑问

    情况一:别人在远程库中已经新建好了一个分支,我们想要在本地创建该分支

    git checkout dev/master

    git pull

    git branch -r

    git checkout origin/xxx -b xxx

    git push origin xxx

    情况二:开发新的项目时,我们肯定要新建分支,如果我们/别人已经在远程库中新建了一个分支,如果我们也要在该分支上开发,那么可以在本地直接从该远程库中创建分

    支(实际上同上)

    git checkout origin/item-1.9-1125(远程分支名) -b item-1.9-1125(本地分支名,无所谓叫什么) : 切远程分支到本地,这样远程分支和本地分支就关联起来了,push的话只会push到该远程分支

    情况三:当我们改完代码,而且是第一次push,发现push不上去时

    git push origin 分支名 -> push到远程

    情况四:如果我们两个人同时完成一个项目,并且在各自的分支开发,上预发环境或者上线的时候我们需要将两人的代码merge到一个分支,此时我们需要新建一个分支,

    将两人的代码merge到该分支,用这个分支上预发和上线

    假定现在两人都开发完,准备合代码的分支叫item-merge

    a: 从当前的分支新建分支item-merge

        git checkout -b item-merge (已经新建了item-merge分支,该分支包含a的代码)

    b: 已经将自己的代码push到item-merge

    a: git fetch (拉下新分支)

        git pull origin item-merge (该分支为想要拉取代码的分支,这样我们就将别人的代码拉到了我们的这个分支)

    ⚠️在情况四的基础上,如果第一个人先push到后端并部署了,第二个人在push时会提醒先pull,pull之后发现会有冲突,那么我们在后端库中找到对应的文件解决冲突

    “Accept CurrentChange”接受当前更改,之后在push

    情况六:如果我们在本地修改了两个文件a、b,没有add也没有commit,此时我们想要丢弃对a文件的修改,但保留对b文件的修改

    git checkout a(想要丢弃的文件名)

    情况七:现有a、b两个文件,且内容相同,我们修改了a文件,如果想要b文件中也有a文件中的修改

    git checkout b

    git merge a

    这样我们就将a文件的内容合并到了b文件

    情况八:发现pull不下来

    可能不是在当前分支修改的,要checkout到修改的分支,然后pull,然后checkout回自己的分支,merge一下,之后add、commit、push

    情况九:错误merge怎么办

    Git错误merge怎么办?  

    Git怎样撤销一次分支的合并Merge

    git merge了错误分支,如何优雅的回退到merge前的状态?

    版本回退

    情况九:我只想让一个文件回退到之前的版本

    git checkout commitid xxx(文件名)

  • 相关阅读:
    NSSM 将jar 安装成windows服务
    Spark Streaming
    记录一次oracle的坑 ORA08103
    POJ 3669 Meteor Shower
    LeetCode题目1~3
    POJ 3723 Conscription 并查集 + Kruskal
    LeetCode题目4:Sort List
    C++实现的快速排序
    C++实现的一段希尔排序代码
    2014大众点评Hackathon参赛感想
  • 原文地址:https://www.cnblogs.com/kunmomo/p/11364695.html
Copyright © 2020-2023  润新知