git push不会将更改发送到远程git存储库

时间:2009-08-19 08:25:53

标签: git push

我正在更改本地git存储库中的某个文件,然后想要将更改发送到远程git存储库,通过ssh从中克隆本地。

在我本地运行“git commit -a”后,要将更改发送到远程,我运行

$ git push
Everything up-to-date

但是我检查了远程文件并且没有更改! 有什么想法吗?

谢谢和问候!

16 个答案:

答案 0 :(得分:22)

您是否尝试过以下操作?

 $ git push origin master:master

答案 1 :(得分:19)

您可能会进入非裸存储库,即附加了工作副本的存储库。你不应该忽略警告git push,如果它注意到这种情况就会给你。

无论如何,登录到远程计算机,切换到存储库并执行

git checkout <whatever branch you’re on>

你去吧。下次只推入裸存储库。 :)

答案 2 :(得分:10)

我发现问题是我没有将文件添加到更新以及消息中。我使用以下命令修复了这个问题:

git add .

然后

git commit -m "updates done by..."

然后

git push origin <repo_name>

希望这有助于某人;)

答案 3 :(得分:5)

我遇到了同样的问题,因为我已经检查了历史中的某个点(在这种情况下是标签),而不是任何分支或主人的结束(头部)。我会做出改变并提交哪些会成功,我会看到我当地历史的变化。当我运行git push时,git声明一切正常,但实际上并没有将更改提交给服务器(可以通过检查日志,或通过重新克隆repo并检查它的日志来查看)。这个错误的最佳症状是看到消息“头部从____分离”

解决方案

实际需要做的事情(如果你已完成我所做的事情)是通过创建分支并在之前切换到该分支来创建一个新的开发线>做出改变。

git branch [a new branch name]
git checkout [a new branch name]  

然后在提交更改后,如果要将更改推送到服务器,则需要将分支本身推送到服务器。

git push -u origin [local branch name]

现在,如果您克隆存储库,您应该会在日志中看到更改。但是,下次克隆存储库时,为了能够转到刚刚更改的那一点,您将需要检出该分支,因为您将默认位于主线上,该主线位于开发线的“更远”位置你分道扬。

git checkout [branch name]  

答案 4 :(得分:2)

git commit --amend

将更改commit ID并创建远程存储库&#34;思考&#34;已经做出了新的改变。

答案 5 :(得分:1)

我建议您考虑将gitosis用于hosting those git bare repositories。初始设置后,它真的很容易使用。

答案 6 :(得分:1)

在远程存储库中键入“git log”以查看它是否包含最新的提交。 如果没有,您应该检查本地存储库的配置以查看远程设置。

要查看远程存储库的不同类型的更改:

一个。如果您的远程存储库是裸的,您可以在远程存储库中找到这些文件 分支机构/ 配置 描述 头 钩/ 信息/ 对象/ 参考文献/

在推送新提交后,对象/目录中的文件将会更改。

B中。如果您的远程存储库是非裸的, 输入“git checkout master” 并在远程存储库中显示“git status”以查看文件状态。查看某个文件是否已被修改或删除。

答案 7 :(得分:1)

这些解决方案都不适用于我,只有在运行GIT_WORK_TREE=/path/to/website git checkout -f后,提交才会显示在我的实际网站上。如果是这种情况,你必须添加一个&#34; hook&#34;你的git配置。

  1. 转到git文件夹中的hooks文件夹:

    cd ~/path/.git

    cd hooks

    nano post-receive

  2. 在收件后文件中写下此行:

    GIT_WORK_TREE=/path/to/your/website/or/project/ git checkout -f

  3. 最后,您必须修改接收后文件的权限:

    chmod a+x post-receive

  4. 每次推送,更新远程项目的提交时,都会执行该命令。

答案 8 :(得分:0)

我刚刚经历了一次同样令人沮丧的事情,即没有看到我在github上复制的更改。 作为一个新的git用户,只是习惯了使用系统,我在我的计算机上创建了一个文件夹,添加它,提交它,推送它 - 没有变化。 我考虑过无法推送空目录的可能性,所以我在目录中创建了一个空文件,然后重复上述步骤。 更好的是,这个变化立刻反映在我的github回购中。

答案 9 :(得分:0)

嗯,这就是对我有用的

git stash

git pull

git add .

git commit -m "commit message"

git push

答案 10 :(得分:0)

一种解决方案是删除遥控器并重新插入,仅重置您的本地树和预设。当我手动移动文件夹时,会发生此问题。

要删除您的遥控器:

$ git stash

然后:

$ git remote rm <REMOTE NAME> 

git remote rm origin

再次添加您的遥控器:

$ git remote add origin <URL>

答案 11 :(得分:0)

我和新的git / github用户完全一样。 您必须将其写入命令行:

final float viewWidth = getImageViewWidth(mImageView);
final float viewHeight = getImageViewHeight(mImageView);
final int drawableWidth = drawable.getIntrinsicWidth();
final int drawableHeight = drawable.getIntrinsicHeight();
mBaseMatrix.reset();
final float widthScale = viewWidth / drawableWidth;
final float heightScale = viewHeight / drawableHeight;
float scale = Math.max(widthScale, heightScale);
mBaseMatrix.postScale(scale, scale);
mBaseMatrix.postTranslate((viewWidth - drawableWidth * scale) / 2F,(viewHeight - drawableHeight * scale)/ 2F);

那应该可以解决您的问题。

答案 12 :(得分:0)

我遇到了同样的问题,我尝试了几件事情,但都没有奏效。

最后,我添加了一个虚拟提交并再次推送了更改,现在我可以在 GitHub 远程存储库上看到两者(前一个和虚拟提交)。

答案 13 :(得分:0)

有时它只是由于加载问题而发生。尝试直接在另一个新选项卡中打开分支菜单中的链接。这对我有用。

答案 14 :(得分:0)

因为我在使用 NetworkManager 的 CentoS 7 上遇到了类似的问题。 ping git 服务器有响应,连接netcat (nc) 也有响应,甚至尝试连接ssh 也有效。但是 git 命令一直挂着。

最终结果是,/etc/hosts 中的条目指向了一个无法访问的错误 IP 地址,而不是使用 NetworkManager 及其 DNS 设置来解析 git 服务器。

答案 15 :(得分:-1)

另一个问题可能是你可能已经使用了

  

git add your-dirs

您必须记住在目录

中提交文件
  

git commit -m'添加您的消息' your-dir / *

然后添加git push以将其推送到远程