美文网首页
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问题汇总

    git merge会出现的问题 git revertGit会抱怨:is a merge but no -m op...

  • Git问题汇总

    在Mac上使用SourceTree从码云拉取公司的quick-cocos项目,爆出以下错误: 问题warning:...

  • git 问题汇总

    删除.DS_STORE

  • git/svn 技巧以及常见问题整理

    Git 实用技巧 Git乱码问题解决方案汇总 常用快捷键 常见问题 遇到多个commit回滚的情况,采用方案如下 ...

  • Git和Github问题汇总

    1、"refusing to merge unrelated histories" 执行 时遇到错误"refusi...

  • Git常见问题汇总

    12 git 常见错误解决方法 —————————————————————————————— 命令:git pul...

  • Git 常见问题汇总

    执行git push出现"Everything up-to-date" 原因:1)没有git add .2)没有g...

  • git问题汇总--持续更新

    fatal: refusing to merge unrelated histories

  • git 命令汇总

    git 命令汇总 常用总结 1.$ git help 查看git所有命令的帮助 2.$ git config --...

  • git版本管理

    GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信...

网友评论

      本文标题:git问题汇总

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