美文网首页
git问题汇总

git问题汇总

作者: 琢磨先生lf | 来源:发表于2017-06-20 12:03 被阅读38次

    git merge会出现的问题

    git revert
    Git会抱怨:
    is a merge but no -m option was given
    这是因为你revert的那个commit是一个merge commit,它有两个parent, Git不知道base是选哪个parent,就没法diff,所以就抱怨了,所以你要显示告诉Git用哪一个parent。
    git revert sidsad8 -m 1
    这样就选parent 1,那么parent 1又是哪一个呢?
    参数 -m 就是指定要撤销的那个提交,从左往右,从1开始数

    撤销修改的几个场景

    *. 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
    *. 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
    *. 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

    工作区、暂存区、本地仓库

    关于工作区、暂存区、本地仓库的说明,可查看使用原理视角看 Git

    撤销修改的几个场景

    *. 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
    *. 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
    *. 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

    添加远程仓库

    1. 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
    2. 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
      把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
      由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    3. 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
    4. 远程分支克隆:git clone

    remote origin already exists.

    将本地仓库关联到远程仓库上
    git remote add origin https://github.com/LeventZheng/angular2_practice.git
    如果出现错误提示:fatal: remote origin already exists.
    git remote rm origin
    然后再执行命令,就不会报错了

    解决冲突

    <<<<<<< HEAD
    Creating a new branch is quick & simple.
    =======
    Creating a new branch is quick AND simple.
    >>>>>>> feature1
    

    前面的是工作区的代码,后面是仓库代码

    分支策略

    *. master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
    *. dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
    *. 你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
    所以,团队合作的分支看起来就像这样:

    image.png

    不是每个分支都要推送到远程分支

    1. bug分支只用于在本地修复bug,就没必要推到远程了;
    2. feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    多人协作的工作模式

    1. 首先,可以试图用git push origin branch-name推送自己的修改;
    2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    3. 如果合并有冲突,则解决冲突,并在本地提交;
    4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
      如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

    还可以通过-s用私钥签名一个标签,

    git tag -s v0.2 -m "signed version 0.2 released" fec145a
    

    签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错,如果报错,请参考GnuPG帮助文档配置Key。

    相关文章

      网友评论

          本文标题:git问题汇总

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