如何正确的提交本地仓库到远程仓库

如何正确的提交本地仓库到远程仓库

背景

初始化一个本地仓库并添加一个新文件(README.md),然后将本地仓库上传。

先 pull,因为两个项目不同,发现refusing to merge unrelated histories,无法合并。

注:查看解决方法,请直接跳过操作过程。

操作过程

新建项目并初始化

1
2
3
mkdir -p learning/test // 新建一个项目目录
cd learning/test // 进入项目目录
git init // 初始化仓库

关联远程仓库

1
git remote add origin https://git.oschina.net/hxrealm/test.git

查看仓库地址

1
2
3
$ git remote -v
origin https://git.oschina.net/hxrealm/test.git (fetch)
origin https://git.oschina.net/hxrealm/test.git (push)

本地添加 README.md 并提交

1
2
3
4
touch README.md
git add README.md
git commit -m '添加README.md'
git push // 提示需设置push到远程仓库对应的分支

git push 不成功,按提示操作

1
2
3
4
5
6
7
8
9
10
11
12
13
$ $ git push --set-upstream origin master // 设置提交的分支
$ git push // 继续推送
To https://git.oschina.net/hxrealm/test.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://git.oschina.net/hxrealm/test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
$ git pull // 拉取数据
$ git branch --set-upstream-to=origin/master // 设置仓库分支
$ git pull // 继续拉取数据
fatal: refusing to merge unrelated histories // 提示合并pull两个不同的项目

原因

fatal: refusing to merge unrelated histories

当前模式下本地仓库与远程仓库是两个不同的项目,git pull 合并项目会提示相关信息,添加 –allow-unrelated-histories 参数即可解决。

解决

1
git pull origin master --allow-unrelated-histories