Git:推送被拒绝

3
我是一名有用的助手,可以为您进行文本翻译。以下是所需翻译的内容:

我有一个团队,我们正在开展一个项目。我的一个团队成员在GitHub上创建了一个存储库,并将其他人添加为协作者。我的团队成员将我们的代码提交到了这个存储库中。我在我的部分做了更改,但当我尝试提交时,出现了错误。我该如何向我是协作者的存储库提交更改?

这是我所做的:

git remote add origin https://github.com/xxx/xxx.git (added a repository where I'm a collaborator)

`git push origin master
To https://github.com/xxx/xxx.git
! [rejected]        master -> master (fetch first)  
error: failed to push some refs to 'https://github.com/xxx/xxx.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

git pull origin master
warning: no common commits
remote: Counting objects: 145, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 145 (delta 67), reused 145 (delta 67), pack-reused 0
Receiving objects: 100% (145/145), 55.90 KiB | 0 bytes/s, done.
Resolving deltas: 100% (67/67), done.
From https://github.com/xxx/xxx
* branch            master     -> FETCH_HEAD
* [new branch]      master     -> or/master
fatal: refusing to merge unrelated histories

我只想更新我的部分并将其提交到存储库。我没有自己的存储库。
谢谢。

1
"警告:没有共同的提交" - 你们两个都是从空仓库开始的吗?确定你们有正确的远程仓库吗? - jonrsharpe
我们所有人的笔记本电脑上都有相同的代码。然后,我的团队成员创建了一个仓库,并将所有代码提交到其中。我对我的代码部分进行了一点更改,现在我无法提交它(( - AnaF
在尝试添加更改之前,您是否从该存储库中拉取了代码?如果您是从先前的代码版本开始的,则需要先克隆它,然后再添加更改。 - jonrsharpe
我做了一些更改并在此之后进行了pull。现在我该怎么办?如何以正确的方式克隆它?谢谢,我花了整整一天的时间来寻找答案。 - AnaF
  1. 将repo克隆到一个新目录中。
  2. 将您的代码复制到该目录中,可以逐个文件或子目录逐个复制。不要尝试替换整个根目录。
  3. 添加并提交这些更改,然后推送它们。在此之前或之后,请阅读Git教程的介绍。
- jonrsharpe
1个回答

4

看起来你的两个主分支已经分叉了。

# HEAD at your master
$ git checkout master

# your master on a new branch
$ git checkout -b diverged.master

# get origin's master
$ git checkout master
$ git fetch origin master
$ git reset --hard origin/master

# Create a new branch for the diverged feature
$ git checkout -b feature.branch

# Merge your diverged changes into the new feature branch
$ git merge diverged.master

# Do any conflict resolutions

# Merge feature branch to master
$ git checkout master
$ git merge feature.branch

# Push to remote
$ git push origin master

编辑

我错过了这是一个全新的代码库的部分...这使得处理变得稍微容易些。

# HEAD at your master
$ git checkout master

# your master on a new branch
$ git checkout -b diverged.master

# delete master branch
# git branch -D master

# pull master from origin
$ git pull origin master

# HEAD at origin's master
$ git checkout origin master
$ git pull # for good measure

# merge your changes
$ git merge diverged.master

# push your changes
$ git push origin master

很高兴听到这个消息!Git 可以是一个非常强大的工具,我建议在尝试在团队环境中使用它之前先阅读相关资料。如果你不确定自己在做什么,就像你看到的那样,事情会变得非常混乱...祝编码愉快 :D - Matt Clark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接