为什么我能';设置遥控器后,是否不在GitHub Repository上推送代码?

为什么我能';设置遥控器后,是否不在GitHub Repository上推送代码?,git,github,Git,Github,我不太喜欢GIT,我有以下问题:我在GitHub上创建了一个新的存储库。然后,在我的项目文件夹中,我执行了以下命令: 1) 我将init存储库设置到我的项目文件夹中: git init 2) 我设置了对GitHub存储库的引用: git remote add origin https://github.com/AndreaNobili/SpringBoot-Excel-API.git 检索参考信息时,我得到以下信息: developer@developer-virtual-machine:~

我不太喜欢GIT,我有以下问题:我在GitHub上创建了一个新的存储库。然后,在我的项目文件夹中,我执行了以下命令:

1) 我将init存储库设置到我的项目文件夹中:

git init
2) 我设置了对GitHub存储库的引用:

git remote add origin https://github.com/AndreaNobili/SpringBoot-Excel-API.git
检索参考信息时,我得到以下信息:

developer@developer-virtual-machine:~/git/SOC-dashboard$ git remote -v
origin  https://github.com/AndreaNobili/SpringBoot-Excel-API.git (fetch)
origin  https://github.com/AndreaNobili/SpringBoot-Excel-API.git (push)
所以看起来不错

3) 首先,我尝试推送我的项目代码:

developer@developer-virtual-machine:~/git/SOC-dashboard$ git push origin master
Username for 'https://github.com': nobili.andrea@gmail.com
Password for 'https://my.mail@gmail.com@github.com': 
To https://github.com/AndreaNobili/SpringBoot-Excel-API.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/AndreaNobili/SpringBoot-Excel-API.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.
我插入了凭据,但收到了上一条错误消息。到底是什么意思

4) 我的想法是,在将代码推入GitHub存储库之前,我必须对远程存储库执行拉取操作(我看到有.gitignore文件)

所以我试着做:

developer@developer-virtual-machine:~/git/SOC-dashboard$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> master
那么,出了什么问题?我遗漏了什么?我如何才能尝试修复它并正确地推送我的代码?

tl;dr当您在Github上进行回购时,它已经有一个提交要添加。gitignore。
git init
+
git remote add
没有获取此提交或任何提交,您有一个空白的本地存储库。您的本地提交是不是建立在远程提交之上的,它们并没有共同的祖先,它们是“不相关的”。Git不会合并不相关的分支

要修复它,
git fetch origin
确保您拥有远程的最新快照,以及
git rebase origin/master
在源的主分支上重写本地提交。然后您可以推送

$ git pull

origin
A - B - C - F - G
         \       \
          D - E - M [master]

local
A - B - C - F - G [origin/master]
         \       \
          D - E - M [master]
将来,使用
git clone
下载一个新的存储库


所有信息都在那里,但有点神秘。重要的是:

 ! [rejected]        master -> master (non-fast-forward)
“快速前进”是指更新分支时不需要合并

例如,您克隆了一个具有三个提交(a、B和C)的存储库。此时您将获得该存储库的完整副本

$ git clone <some repo>

origin
A - B - C [master]

local
A - B - C [master]
          [origin/master]
你推。这个推可以发生,因为Git只需要将D和E叠加在E的上面。这是一个“快速前进”


当您的历史记录发生分歧时,就会出现问题。在您进行更改后,当其他人提交到远程存储库时,就会出现这种情况

让我们回到一个新的克隆

$ git clone <some repo>

origin
A - B - C [master]

local
A - B - C [master]
其他人推送了一些提交

origin
A - B - C - F - G [master]

local
A - B - C [origin/master]
         \
          D - E [master]
$ git init
$ git remote add origin https://github.com/AndreaNobili/SpringBoot-Excel-API.git

origin
A [master]

local
B - C [master]
如果您尝试推送,您将获得
![rejected]master->master(非快进)
。您的历史记录已发生分歧,需要合并。
git push
不会这样做,您必须
git pull
并处理任何冲突

$ git pull

origin
A - B - C - F - G [master]

local
A - B - C - F - G [origin/master]
         \       \
          D - E - M [master]
现在你可以推了

$ git pull

origin
A - B - C - F - G
         \       \
          D - E - M [master]

local
A - B - C - F - G [origin/master]
         \       \
          D - E - M [master]

那么,是谁做出了这种不同的改变呢?是你。当你在Github上创建存储库时,它做出了改变

如果你克隆了存储库,你会很好,就像上面所说的。但是你初始化并添加了一个远程存储库

$ git init
$ git remote add origin https://github.com/AndreaNobili/SpringBoot-Excel-API.git

origin
A [master]

local
origin有一个提交,但您的本地存储库没有。Git不会在没有您明确告知的情况下与远程设备通信。此时您必须
Git pull
。或者改为
Git clone

现在您添加了更多提交

origin
A - B - C - F - G [master]

local
A - B - C [origin/master]
         \
          D - E [master]
$ git init
$ git remote add origin https://github.com/AndreaNobili/SpringBoot-Excel-API.git

origin
A [master]

local
B - C [master]
请注意,您在源站上的提交与本地提交之间没有关系。它们没有共同的提交。它们是“不相关的”

您尝试推送并获取
![rejected]master->master(非快进)
,因为历史已经偏离

您试图拉取并获取
致命:拒绝合并不相关的历史记录
,因为您的本地提交和源上的提交是不相关的。Git不知道如何合并它们


要解决此问题,请首先从源获取最新的更改

$ git fetch origin

origin
A [master]

local
B - C [master]

A [origin/master]   # the unrelated commit fetched from origin
然后,
rebase
将您的更改置于它们之上。
rebase
基本上将您的更改复制到一个不相关的提交上

$ git rebase origin/master

origin
A [master]

local
A [origin/master]
 \
  B1 - C1 [master]
现在你可以推了

$ git pull

origin
A - B - C - F - G
         \       \
          D - E - M [master]

local
A - B - C - F - G [origin/master]
         \       \
          D - E - M [master]
(您也可以一步完成fetch+rebase:
git pull--rebase origin master
。git pull是fetch+A merge,或者使用--rebase A rebase。)

将来,下载一个带有
git clone

tl;dr的新存储库,当您在Github上进行repo时,它已经有一个提交要添加。gitignore。
git init
+
git remote add
没有获取此提交或任何提交,您有一个空白的本地存储库。您的本地提交不是建立在远程提交,它们没有共同的祖先,它们是“不相关的”。Git不会合并不相关的分支

要修复它,
git fetch origin
确保您拥有远程的最新快照,以及
git rebase origin/master
在源的主分支上重写本地提交。然后您可以推送

$ git pull

origin
A - B - C - F - G
         \       \
          D - E - M [master]

local
A - B - C - F - G [origin/master]
         \       \
          D - E - M [master]
将来,使用
git clone
下载一个新的存储库


所有信息都在那里,但有点神秘。重要的是:

 ! [rejected]        master -> master (non-fast-forward)
“快速前进”是指更新分支时不需要合并

例如,您克隆了一个具有三个提交(a、B和C)的存储库。此时您将获得该存储库的完整副本

$ git clone <some repo>

origin
A - B - C [master]

local
A - B - C [master]
          [origin/master]
你推。这个推可以发生,因为Git只需要将D和E叠加在E的上面。这是一个“快速前进”


当您的历史记录发生分歧时,就会出现问题。在您进行更改后,当其他人提交到远程存储库时,就会出现这种情况

让我们回到一个新的克隆

$ git clone <some repo>

origin
A - B - C [master]

local
A - B - C [master]
其他人推送了一些提交

origin
A - B - C - F - G [master]

local
A - B - C [origin/master]
         \
          D - E [master]
$ git init
$ git remote add origin https://github.com/AndreaNobili/SpringBoot-Excel-API.git

origin
A [master]

local
B - C [master]
如果您尝试推送,您将获得
![rejected]master->master(非快进)
。您的历史记录已发生分歧,需要合并。
git push
不会这样做,您必须
git pull
并处理任何冲突

$ git pull

origin
A - B - C - F - G [master]

local
A - B - C - F - G [origin/master]
         \       \
          D - E - M [master]
现在你可以推了

$ git pull

origin
A - B - C - F - G
         \       \
          D - E - M [master]

local
A - B - C - F - G [origin/master]
         \       \
          D - E - M [master]

那么,是谁做出了这种不同的改变呢?是你。当你在Github上创建存储库时,它做出了改变

如果你克隆了存储库,你会很好,就像上面所说的。但是你初始化并添加了一个远程存储库

$ git init
$ git remote add origin https://github.com/AndreaNobili/SpringBoot-Excel-API.git

origin
A [master]

local
origin有提交,但您的本地存储库没有提交。