git关联本地和远端仓库的图文笔记


前言
  • 场景:当已有本地仓库和远端仓库的情况下,如何进行git管理。

  • 方式有两种

    • 1.最简单的方式是使用git clone将远端代码克隆到本地目录,并将已有工程代码直接拷贝到此目录下让git管理。

    • 2.手动关联本地仓库和远端仓库。(本着折腾的原则,本文记录一下手动关联的步骤)

  • 开始之前,安利一个git版本控制的gui客户端工具:sourceTree,下文会以图文的方式介绍关联步骤。

准备工作
  • 本地安装git。

  • gitlab中新建远端仓库。

  • 开始时,本地仓库(master)和远端仓库(origin/master origin/dev)并没有任何关联。

步骤
  • 1)先将本地的工程初始化为git仓库

    • 进入工程目录使用git init命令初始化。

  
  
  
  1. $ git init

  2. Initialized empty Git repository in G:/test.work/data-alarm-server/.git/

  • 2)为本地添加一个远端仓库

  • 地址即是我们将要合并的远端的地址

  
  
  
  1. $ git remote add origin http://xxx/xxx/dataalarmserver.git

  • 3)追踪远端分支

    • 开发时,经常会在远端建立一个开发dev分支,同样的,我们也可以在本地建立一个开发分支与远端对应,本地默认分支名为master。

    • 如下,我们就直接把本地的master分支和远端dev分支关联上。

    • 命令作用在于追踪远端分支,但如下图所示,版本仍未同步。

  
  
  
  1. $ git branch --set-upstream-to=origin/dev

  2. Branch 'master' set up to track remote branch 'dev' from 'origin'.        

4)查看远端分支

  • 括号中指明了地址是用于拉取还是推送,如果没有权限,则不会显示。

  
  
  
  1. git remote -v

  2. origin  http://xxxxxx/dataalarmserver.git (fetch)

  3. origin  http://xxxxx/dataalarmserver.git (push)

5)使用git pull拉取代码

  • 直接pull代码会报错,单纯使用pull命令无法拉取更新,因为两个仓库可能都有内容,所以我们必须加上参数将不相关的两个仓库强行合并,报错如下:

  
  
  
  1. Username for 'http://xxxx': username

  2. fatal: refusing to merge unrelated histories

6)合并不相关的两个仓库

  • --allow-unrelated-histories参数的作用在于允许关联不相关的历史信息。

  • 合并之后发现本地已经超前远端2个版本了。

  
  
  
  1. git pull --allow-unrelated-histories

7)解决合并时的冲突

  • 初始化远端仓库时,有可能ReadMe.md及.gitignore文件内容会冲突,需要解决冲突。

8)推送

  • 由于我们只追踪了远端的dev分支,直接push会报错。解释如下:

    • 其中git push不带参数,默认情况下,是将本地的master分支推送到远端origin。

    • 正如下提示所说,我们需要指定将本地仓库内容推送至远端仓库的dev分支。

    • 使用的命令是:git push origin HEAD:dev

  
  
  
  1. $ git push

  2. fatal: The upstream branch of your current branch does not match

  3. the name of your current branch.  To push to the upstream branch

  4. on the remote, use git push origin HEAD:dev

9)推送成功,检查状态

  • 如下status说明当前我们的分支已经和远端的dev分支保持同步了

  
  
  
  1. $ git status

  2. On branch master

  3. Your branch is up to date with 'origin/dev'

  4. nothing to commit, working tree clean

总结
  • 如果不知道该使用什么命令时,多多使用git status命令 和git --help来查询手册。

  • 图形化工具能提高我们的开发效率,但是多使用命令更能加深我们对技术的理解。

本文分享自微信公众号 - 侠梦的开发笔记(xmdevnote)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章