我是GitHub的新手.今天我在尝试将代码推送到GitHub时遇到了一些问题.
Pushing to git@github.com:519ebayproject/519ebayproject.git
To git@github.com:519ebayproject/519ebayproject.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)
我还没有在存储库中推送任何东西,为什么我需要拉东西呢?
Nic*_*ndo 753
这可能导致远程存储库丢失提交; 小心使用它.
如果您不希望将远程分支合并到本地分支(请参阅与git diff的差异),并且想要强制推送,请使用带有-f的push命令
git push -f origin <branch>
Run Code Online (Sandbox Code Playgroud)
origin
你的远程仓库的名称在哪里.
通常,该命令拒绝更新远程ref,该远程ref不是用于覆盖它的本地ref的祖先.此标志禁用检查.这可能导致远程存储库丢失提交; 小心使用它.
Jak*_*ene 238
正如消息告诉你的那样,
合并远程更改(例如'git pull')
使用git pull
拉从远程资源库的最新变化,以本地资源库.在这种情况下,拉动更改将需要合并,因为您已对本地存储库进行了更改.
我将提供一个示例和图片来解释.让我们假设您从origin/branch的最后一次拉动是在Commit B.您已完成并提交了一些工作(Commit C).与此同时,其他人已经完成了他们的工作,并将其推送到原点/分支(提交D).这两个分支之间需要合并.
Run Code Online (Sandbox Code Playgroud)local branch: --- Commit C / / / origin/branch: Commit A ------ Commit B ---- Commit D
因为你是想要推送的人,Git会强制你执行合并.为此,您必须首先从origin/branch中提取更改.
Run Code Online (Sandbox Code Playgroud)local branch: --- Commit C -- Commit E / / / / / / origin/branch: Commit A ------ Commit B ---- Commit D
完成合并后,您现在可以通过推送更改将原点/分支快进到提交E.
Git要求您自己处理合并,因为合并可能会导致冲突.
AYK*_*AYK 198
你在推送之前更新了代码吗?
git pull origin master
在推动任何东西之前使用.
我假设您使用的origin
是遥控器的名称.
您需要在推送之前拉动,以便在推送内容之前使本地存储库保持最新(以防万一其他人已经更新了代码github.com
).这有助于在本地解决冲突.
pra*_*upd 122
这通常发生在您git commit
尝试在该分支上进行git push
更改之前,其他人已经进行了更改.git pulling
x
正常流量如下,
第1git stash
步:您在该分支上的本地未提交更改.
第2步:git pull origin branch_name -v
到pull and merge
到对分支机构本地提交的更改(给这个合并一些消息,如果任何解决冲突.)
STEP 3:git stash pop
在stash
编的变化(然后,你可以,如果你想做出弹出的文件提交或已经推动提交的修改(STEP4)首先做出新的承诺文件后.)
第4步:git push origin branch_name -v
合并的更改.
替换branch_name
为master
(用于master
分支).
Smi*_*tel 50
首先是简单的解决方案
git push -f origin master
.推荐解决方案
.git
从文件夹中删除目录.然后执行以下命令:
git pull --allow-unrelated-histories //this might give you error but nothing to worry, next cmd will fix it
git add *
git commit -m "commit message"
git push
Run Code Online (Sandbox Code Playgroud)要么
git init
git add .
git commit -m "First Commit"
git remote add origin [url]
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
只有git push -f origin master
在-u
不适合你的情况下使用.
这将解决推送文件时发生的几乎任何类型的错误.
小智 47
有时我们忘了拉动并在当地环境中做了很多工作.
如果有人想要不拉,
git push --force
Run Code Online (Sandbox Code Playgroud)
工作中.与其他人合作时不建议这样做,但当您的工作很简单或个人玩具项目时,这将是一个快速的解决方案.
xia*_*ica 35
有些人可能会收到此错误,因为Git不知道您要推送哪个分支.
如果您的错误消息也包括
error: failed to push some refs to 'git@github.com:jkubicek/my_proj.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.
Run Code Online (Sandbox Code Playgroud)
那么你可能想要遵循Jim Kubicek的方便提示,将Git配置为仅推送当前分支,将默认分支设置为当前.
git config --global push.default current
Run Code Online (Sandbox Code Playgroud)
小智 31
git pull origin branch_name --rebase
Run Code Online (Sandbox Code Playgroud)
这对我git pull origin branch_name --rebase
有用- 命令将首先从远程branch_name拉取更改,然后rebase
在其顶部拉出当前分支.
Bha*_*hur 19
除了上面的答案,以下内容对我有用: -
场景 -
方案 -
1. git checkout **my_branch**
2. git add, commit your changes.
3. git pull origin **my_branch** (not origin, master, or develop)
4. git push origin **my_branch**
Run Code Online (Sandbox Code Playgroud)
小智 19
我遇到了同样的问题,我做的是我首先用力推动它
git push --force
Run Code Online (Sandbox Code Playgroud)
在我提交文件之后我做了这个,并且你得到了一个错误.它确实提交了所有文件并推送它们.然后下次我推到github.我按照它的要求做了,然后就没事了.希望这也适合你:)
Tho*_*7vt 12
我在我的教程,如何使用GitHub:初学者教程中提到了这一点.
当您在GitHub上创建新存储库时,GitHub可能会要求您创建自述文件.如果您直接在GitHub上创建自述文件,那么您需要先在"推送"请求成功之前发出"拉"请求.这些命令将"拉"远程存储库,将其与当前文件合并,然后将所有文件"推送"回GitHub:
git pull https://github.com/thomas07vt/MyFirstRepo.git master
git push https://github.com/thomas07vt/MyFirstRepo.git master
Run Code Online (Sandbox Code Playgroud)
小智 6
当我尝试推送当前分支时,我收到上述错误消息foobar
:
git checkout foobar
git push origin foo
Run Code Online (Sandbox Code Playgroud)
事实证明我有两个本地分支跟踪同一个远程分支:
foo -> origin/foo (some old branch)
foobar -> origin/foo (my current working branch)
Run Code Online (Sandbox Code Playgroud)
通过使用以下方法,我可以推送当前的分支:
git push origin foobar:foo
Run Code Online (Sandbox Code Playgroud)
...并清理 git branch -d
我遇到了同样的问题,结果我在一个与我想象的不同的(本地)分支上,并且正确的本地分支在远程提交中落后了。
我的解决方案:签出正确的分支,从另一个本地分支、git pull 和 git push 中挑选提交
我有一个类似的问题,结果是我保持分支最新的工作流程有问题。我正在做以下事情:
在我当地的“主人”
git fetch upstream
git merge upstream/master --ff-only
Run Code Online (Sandbox Code Playgroud)
然后回到我当地的分支机构
git rebase master
Run Code Online (Sandbox Code Playgroud)
这适用于以前的 git 流程,但不适用于 github。的git rebase
是这里的问题导致与同步问题(我承认这件事情我已经没有完全理解接受),不幸的是把我在的位置git push -f
很可能成为最简单的选择。不好。
我的新流程是直接使用git merge
如下更新分支:
在我当地的分支机构
git fetch upstream
git merge upstream/master
Run Code Online (Sandbox Code Playgroud)
没有快进,因为我当然会在本地分支中进行更改。
正如您可能会说的,我不是 git 专家,但我被可靠地告知,此工作流程可能会避免我遇到的特定问题。
如果您不想进入当前项目(并且可能面临合并冲突,您无需解决)并且您不想创建另一个分支(管理另一个分支将会很繁琐),并且您不想我想做任何有风险和永久性的git force
命令(即使在阅读了他们所做的事情之后,我也经常对这样做的含义感到惊讶).
解决方法:你可以简单地说,拖动文件夹的内容到另一个文件夹,拉项目进入你现在空文件夹,拖动拉内容的垃圾桶,然后将您的正确的项目回的文件夹.您应该能够正确推动并获得所需的结果.这实际上花了我不到10秒的时间.
对于那些在没有引用任何后果的情况下告诉我这是不恰当的人,或者人们告诉我使用导致我未来烦恼的命令的人,我说:"这种方法花了我不到10秒." 如果我遇到一个执行时间不到10秒且具有完全相同效果的git命令,我将采用它.在那之前,我正在使用这种方法.
此方法的一个缺点是,如果在分支中实际合并而未记录合并,则提交历史记录将显示为线性.在处理组时,这可能不是最好的方法.在那些案件中分支机构工作!
归档时间: |
|
查看次数: |
787496 次 |
最近记录: |