【git】push local project to github

对于创建项目,更常见的做法是在本地通过ide创建,如果想要利用github共享项目,协作开发,就需要把本地创建的项目初始化为git本地仓库,并与github远程仓库关联。

PS: 关于远程仓库与本地仓库,在github中的仓库都称为远程仓库,无论是自己创建的,从其他远程仓库fork来的,还是不属于自己的仓库,而本地仓库则是通过git clone下载到本地的仓库,本地仓库可以关联不同的远程仓库,对于自己创建的仓库或者fork的仓库能直接通过add / commit / push更新,而对于不属于自己的远程仓库则能通过pull request提交更新,等待原作者审核通过后merge。而分支branch,则是一个仓库的不同走向,默认存在master分支,目前暂时用到master分支。

Goal

在本地通过IDEA创建springboot项目,并将其与github远程仓库关联,测试基本的pull和push操作。

Environment & Tools

Intellij IDEA ULTIMATE 2018.03, jdk 1.8,

Guide

本地新建项目

IDEA > 菜单栏 File > New > Project > Spring Initializr > 填写项目信息,选择项目框架 > Finish

2019.02.13 - 02 - 01

2019.02.13 - 02 - 02

2019.02.13 - 02 - 03

2019.02.13 - 02 - 04

IDEA中删除自动创建的maven文件

2019.02.13 - 02 - 06

github新建仓库

github > New Repository > 填写仓库信息,选择”Initialize this repository with a README”,选择.gitignore > Create repository

2019.02.13 - 02 - 05

关联本地项目至github远程仓库

打开git工具,cd进入本地项目FullTextSearchService

初始化项目为git本地仓库:git init

将所有文件添加到本地仓库:git add .

2019.02.13 - 02 - 07

提交到本地仓库:git commit -m "init"

2019.02.13 - 02 - 08

关联github远程仓库,仓库标识为origin:git remote add origin https://github.com/tony-chenjy/FullTextSearchService.git

本地仓库内容push到origin远程仓库master分支:git push -u origin master

2019.02.13 - 02 - 09

遇到问题:Updates were rejected because the remote contains work that you do

问题原因:由于初始化时生成了.gitignore和README文件,push之前没有pull最新版本导致报错。所以要先pull。(其实这个时候本地仓库已经关联上github远程仓库了,但是要先解决文件冲突)

解决办法:

查看本地仓库关联的所有远程仓库:git remote -v

从远程仓库更新本地仓库:

git fetch

git pull

2019.02.13 - 02 - 10

2019.02.13 - 02 - 11

遇到问题:fatal: refusing to merge unrelated histories

问题原因:“其实这个问题是因为两个根本不相干的 git 库,一个是本地库,一个是远端库,然后本地要去推送到远端,远端觉得这个本地库跟自己不相干,所以告知无法合并”

解决办法:不相关仓库强制合并:git pull origin master --allow-unrelated-histories

2019.02.13 - 02 - 12

参考:git 出现 fatal: refusing to merge unrelated histories 错误

遇到问题:CONFLICT (add/add): Merge conflict in .gitignore

问题原因:.gitignore文件冲突

解决办法:

打开IDEA,修改冲突文件

在git中标记冲突解决:git stash clear

参考:git 冲突解决

重新提交

1
2
3
git add .
git commit -m "conflict clear"
git push origin master

2019.02.13 - 02 - 13

本地仓库与github仓库同步完毕。

PS:其实如果在github创建空的仓库,关联的时候应该就不会出现冲突,但是通过合并两个.gitignore的文件就能同时使用github和IDEA排除提交的规则。

Reference

如何把本地项目上传到Github