美文网首页
girpro之四连接远端

girpro之四连接远端

作者: ManjackGo | 来源:发表于2018-01-09 15:01 被阅读10次

git remote

  • git remote列出所有已经添加的远端
  • git remote -v顺便列出他们的url
  • git remote add <name> <url>添加一个新远端
  • git remote rm <name>移除远端
  • git remote rename <old-name> <new-name> 重命名

git clone会在本地自动创建一个叫做origin的远端。

git fetch

git中每个人都是一个完整的库,所以也就不存在svn那种从中央库拿文件的概念。中央库没啥了不起,只不过大家都以这个库的文件作为基准来进行开发。所谓的fetch,其实是把当前库的git状态更新到中央库的状态,下载所有快照之类的。

  • git fetch <remote> 从远端获取所有的分支
  • git fetch <remote> <branch> 从远端获取某个分支

文中多次提到的detached HEAD state,其实是指当前的状态脱离了最新的head。最新的head已经被储存下来了,而现在ref被指向其它的某个版本,可以通过git checkout HEAD来接触这种状态

  • git branch -r 可以看到远端所有的branch

git pull

相当于fetch+merge。可以视为:

git pull origin
git merge origin/master
  • git pull --rebase <remote> 不使用merge,使用rebase

粗略理解merge和rebase的区别。
merge把别人分支上的东西作为一个merge commit提交到本地的分支上;
rebase维持一个线性的log,把当前的分支的开头(基)怼到最新的公共分支上。

  • git config --global branch.autosetuprebase always可以设置把fetch里的操作全部变成rebase

git push

  • git push 最普通的用法,安全。在你merge或rebase了线上那条分支之前,push会报错。
  • git push --force 不管有没有merge,强行push。会把远端强行变得跟本地一样,非常危险。
  • git push <remote> --all push所有分支
  • git push <remote> --tags push本地所有tag

在push之前一定要pull merge一次。正像你的svn gui,其实每次commit之前都会帮你做一次update操作,以更新本地的数据到最新状态。

坠吼是只push到bare库,不要随便push到到别人库。

相关文章

网友评论

      本文标题:girpro之四连接远端

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