我有一个远程gitosis服务器和一个本地git存储库,每次我在代码中做大的更改时,我也会将更改推到该服务器。

但是今天我发现,即使我有一些本地更改并提交到本地存储库,当运行git push origin master时,它说“一切都是最新的”,但当我使用git clone在远程服务器上签出文件时,它不包含最新的更改。我只有一个名为“master”的分支机构和一个名为“origin”的远程服务器。

PS: 这是git在运行ls-remote时显示的内容,我不确定它是否有帮助

$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c        refs/tags/stage3

当前回答

也许你想在当地开一家新分公司?

必须显式地推送一个新的本地分支:

git push origin your-new-branch-name

这是关于少年犯的一件事…你克隆一个回购,创建一个分支,提交一些更改,推送…“一切都是最新的”。我理解为什么会发生这种情况,但这种工作流程对新人非常不友好。

其他回答

呃. .如果你是一个git新手,你确定你在git push之前有git commit吗?我第一次就犯了这个错误!

我的问题是本地分支与远程分支的名称不同。我可以通过以下方法来推动:

$ git push origin local-branch-name:remote-branch-name

(来源:https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/)

另一个可能罕见的情况,但值得一提的是-当你在本地环境中配置了预提交钩子(扫描代码以查找错误,例如Python安全,flake8, black, isort, bandit等),如果其中一个失败了,你的提交也失败了。这在控制台中应该是显而易见的,但是由于来自钩子的错误可能会充斥控制台中,因此您可能没有意识到您的提交将无法工作,直到预提交钩子被配置为忽略问题或问题得到解决。

我们需要添加文件,并提交已经更改/添加的文件 执行以下命令

Git添加。或者git add nameoffile #,它将添加项目中现有的文件

Git commit -m "first commit" #提交项目中的所有文件

Git push origin master

在我的例子中,我有2个远程回购。

git remote -v
originhttps https://asim_kt@...
originhttps https://asim_kt@...
origin  ssh:git@bitbucket.org:...
origin  ssh:git@bitbucket.org:...

两次回购都是一样的。一个是https,另一个是ssh。因此,删除不需要的,(在我的情况下,ssh。因为我使用https,因为ssh不能工作!)为我解决了这个问题。