Git Bash - Git 将分支显示为最新的,而实际上它们不是最新的
Posted
技术标签:
【中文标题】Git Bash - Git 将分支显示为最新的,而实际上它们不是最新的【英文标题】:Git Bash - Git is showing branches as being up to date when they actually aren't 【发布时间】:2022-01-11 09:33:45 【问题描述】:我有两个本地分支,main 和 dev。当我尝试从 dev 提交更改并将其推送到 main 时,它说一切都是最新的,实际上什么也没发生。此外,我的 github repo 并没有反映我本地 repo 中的最新更改,即使我尝试将它推上去并且它说它是成功的。提交未显示在我的新仓库中。
当我输入“git remote show origin”时,输出如下:
$ git remote show origin
* remote origin
Fetch URL: <myRepo'sURL>
Push URL: <myRepo'sURL>
HEAD branch: main
Remote branches:
dev tracked
main tracked
Local branch configured for 'git pull':
main merges with remote main
Local refs configured for 'git push':
dev pushes to dev (fast-forwardable)
main pushes to main (up to date)
我对 git 很陌生,所以边走边学。有人知道我为什么会遇到这个问题吗?如果需要,我可以运行其他命令来提供更多信息
要推送更改,这是我遵循的过程:
首先,git 状态。输出是这样的:
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: __pycache__/app.cpython-39.pyc
modified: app.py
no changes added to commit (use "git add" and/or "git commit -a")
然后,我运行“git add”。此命令没有输出。
接下来,"git commit -m "test"。这是输出:
$ git commit -m "test"
[dev 5af52ce] test
2 files changed, 4 insertions(+), 8 deletions(-)
最后,“git push origin main”。这是输出:
$ git push origin dev
Enumerating objects: 20, done.
Counting objects: 100% (20/20), done.
Delta compression using up to 16 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (16/16), 1.77 KiB | 1.77 MiB/s, done.
Total 16 (delta 10), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (10/10), completed with 3 local objects.
To <myRepo'sURL>
0f1504d..5af52ce dev -> dev
谢谢!
【问题讨论】:
我们需要更多细节。 “我尝试提交和推动更改”是什么意思?你做了什么确切的命令?这些命令的结果是什么?您可以使用git status
、git log
和git diff
等命令检查每个提交是否包含您期望的更改。使用git help <command>
了解有关如何使用这些命令的更多详细信息。
根据此处显示的输出,命令 git push origin dev
可能会将您在 dev
上的新提交发送到 Git 存储库中尚不存在的新提交到 Git在 GitHub 上的存储库。 (您的 dev
可能与您的 main
相同,而 GitHub dev
就在后面;我们无法从您在此处显示的内容中判断出来。)
感谢您的反馈。我刚刚添加了更多信息。刚才检查了 github 之后,似乎我可以直接从本地 dev 分支推送到 github 上的 dev 分支,完全绕过“主”分支。我猜我的分支层次结构搞砸了,但我不确定如何检查/修复它
“完全绕过主分支”,但这就是 git 的工作方式......也许这只是对 git 实际工作方式的一些困惑?你能详细说明这里的问题是什么吗?我的意思是您可能会看到一些您不同意的状态消息,您能否发布该确切状态消息(或其他观察结果),解释您不同意的原因以及您期望它显示的内容? `到目前为止,您问题中的所有命令和输出似乎都表明没有问题,但显然您有一个问题,因为您提出了问题。
我怀疑这里的部分困惑来自您在 GitHub 上看到的内容。默认情况下,GitHub 会显示main
分支的目录结构。您可以选择dev
分支来查看其内容。您还可以将默认分支设置为您想要的任何分支。
【参考方案1】:
当我尝试将更改从 dev 提交并推送到 main 时,
您正在做的是从dev
推送到origin/dev
。
而且由于远程存储库显示默认分支main
,因此您不会“看到”任何明显的更改(您需要切换到网页中的 dev 分支才能看到您的提交)。
你可以在本地合并dev到main,然后push main:
git switch main
git merge dev
git push
【讨论】:
这就是我想要做的,我只是混淆了命令/术语,而“合并”正是我所需要的。谢谢!以上是关于Git Bash - Git 将分支显示为最新的,而实际上它们不是最新的的主要内容,如果未能解决你的问题,请参考以下文章