53

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

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

$ git push
Everything up-to-date

但是我检查了远程文件,它们没有改变!任何的想法?

谢谢并恭祝安康!

4

16 回答 16

24

您是否尝试过以下操作?

 $ git push origin master:master

用于git remote查找遥控器的名称。默认远程是origin,它是在克隆存储库时自动创建的。

于 2009-08-19T08:28:34.080 回答
23

我发现问题在于我没有将文件添加到更新以及消息中。我通过使用以下命令解决了这个问题:

git add .

进而

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

进而

git push origin <repo_name>

希望这对某人有帮助;)

于 2017-07-08T08:51:03.343 回答
21

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

无论如何,登录到远程机器,更改到存储库并执行

git checkout <whatever branch you’re on>

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

于 2009-08-19T08:28:51.520 回答
9

我遇到了同样的问题,这是因为我签出了历史记录中的某个点(在本例中为标签),而不是任何分支或主节点的结尾(头)。我会做出改变并提交,这会成功,我会看到我当地历史的变化。当我运行 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]  
于 2016-02-12T15:17:16.857 回答
4
git commit --amend

将更改commit ID并使远程存储库“认为”已经进行了新更改。

于 2016-11-13T11:42:12.087 回答
1

我建议您考虑使用gitosis托管那些 git 裸存储库。初始设置后,它真的很容易使用。

于 2009-08-19T08:37:06.420 回答
1

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

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

A. 如果你的远程仓库是裸机,你可以在远程仓库的branchs/config description HEAD hooks/info/objects/refs/中找到文件

推送新提交后,objects/ 目录中的文件将更改。

B. 如果你的远程仓库是非裸的,在你的远程仓库中输入“git checkout master”和“git status”来查看文件状态。查看某些文件是否已被修改或删除。

于 2012-12-19T07:05:56.577 回答
1

这些解决方案都不适合我,并且只有在运行后提交才会出现在我的实时网站上GIT_WORK_TREE=/path/to/website git checkout -f。如果这是你的情况,你必须在你的 git 配置中添加一个“钩子”。

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

    cd ~/path/.git

    cd hooks

    nano post-receive

  2. 在 post-receive 文件中写下这一行:

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

  3. 最后,您必须修改 post-receive 文件的权限:

    chmod a+x post-receive

这将在您每次推送时执行该命令,更新您在远程项目上的提交。

于 2017-03-03T17:03:44.080 回答
1

好吧,这对我有用

git stash

git pull

git add .

git commit -m "commit message"

git push
于 2019-07-25T00:33:50.240 回答
1

我遇到了与新 git/github 用户完全相同的问题。您必须将其写入命令行:

git push -u origin master

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

于 2020-09-24T17:58:23.617 回答
0

另一个问题可能是,虽然您可能使用过

git 添加你的目录

您必须记住提交目录中的文件

git commit -m'添加你的信息' your-dir /*

然后添加一个 git push 以将其推送到您的遥控器

于 2014-10-26T00:15:50.730 回答
0

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

于 2016-07-26T22:51:17.230 回答
0

一种解决方案是移除遥控器并重新插入,只是为了重置您的本地树和预设。当我手动移动文件夹时,我会遇到这个问题。

要删除您的遥控器:

$ git stash

然后:

$ git remote rm <REMOTE NAME> 

git remote rm origin

再次添加您的遥控器:

$ git remote add origin <URL>
于 2020-04-06T10:12:48.760 回答
0

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

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

于 2021-04-26T03:18:06.180 回答
0

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

于 2021-05-07T17:49:33.277 回答
0

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

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

于 2021-05-20T09:17:20.477 回答