【发布时间】:2011-12-17 19:58:15
【问题描述】:
我想知道我的本地存储库是否是最新的(如果不是,理想情况下,我想查看更改)。
如果不做git fetch 或git pull,我怎么能检查这个?
【问题讨论】:
我想知道我的本地存储库是否是最新的(如果不是,理想情况下,我想查看更改)。
如果不做git fetch 或git pull,我怎么能检查这个?
【问题讨论】:
试试git fetch --dry-run
手册 (git help fetch) 说:
--dry-run
Show what would be done, without making any changes.
【讨论】:
git fetch --dry-run 时没有任何显示?
--all?
git pull 大致相当于git fetch && git merge。如果您在任何时候在没有--dry-run 的情况下运行提取,那么您已经在本地提取了东西。
首先使用git remote update,更新您的远程参考。然后你可以做几件事之一,例如:
git status -uno 会告诉你是否正在跟踪的分支
领先、落后或背离。如果它什么也没说,本地和
遥控器是一样的。示例结果:在分支DEV上
您的分支在 'origin/DEV' 之后 7 次提交,并且可以快进。
(使用“git pull”来更新你的本地分支)
git show-branch *master 将向您显示所有的提交
名称以“master”结尾的分支(例如 master 和 origin/master)。如果您将-v 与 git remote update (git remote -v update) 一起使用,您可以看到哪些分支已更新,因此您实际上不需要任何其他命令。
【讨论】:
git remote update ; git status -uno 解决了。 git fetch --dry-run 即使在本地落后于远程的情况下也没有输出。
git remote show origin
结果:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
【讨论】:
您可以使用git status -uno 检查您的本地分支是否与原始分支保持同步。
【讨论】:
git remote update ; git status -uno 成功了! git fetch --dry-run 在我预期的时候没有输出(而git pull 会拉东西)。
不是真的 - 但我看不出git fetch 会受到怎样的伤害,因为它不会改变您的任何本地分支机构。
【讨论】:
您需要发出两个命令:
【讨论】:
您必须先运行git fetch,然后才能将本地存储库与远程服务器上的文件进行比较。
此命令仅更新您的远程跟踪分支,在您调用 git merge 或 git pull 之前不会影响您的工作树。
要查看获取后的本地分支和远程跟踪分支之间的差异,您可以使用git diff or git cherry as explained here.
【讨论】:
另一种方法是使用查看远程分支的状态
git show-branch remote/branch 将其用作比较,您可以看到 git show-branch *branch 以查看所有遥控器中的分支以及您的存储库!查看此答案以获取更多信息https://stackoverflow.com/a/3278427/2711378
【讨论】:
如果你使用
git fetch --dry-run -v <link/to/remote/git/repo>
您会收到关于它是否是最新的反馈。所以基本上,您只需要在之前给出的答案中添加“详细”选项即可。
【讨论】:
如果不使用git fetch 或git pull,这是不可能的。如果不去远程存储库查看“最新”甚至意味着什么,您如何知道存储库是否“最新”?
【讨论】:
git pull,OP 在他的问题中明确禁止。
git status -uno 这行得通,还可以使用git show-branch *master 查看所有主分支的状态!你还说不可能吗?只要您可以访问远程,您就可以看到任何分支的状态!
git status 只告诉您本地 refs 的状态,它不告诉您本地 refs 是否与远程 refs 保持同步.再说一遍:如果不获取远程仓库的状态,就不可能知道远程仓库的状态是什么。时期。这只是时空的基本规律。
git fetch origin
git status
你会看到类似的结果
您的分支落后于 'origin/master' 9 次提交
更新到远程更改
git pull
【讨论】:
git fetch 的问题,如果这不可能,您的答案应该在使用它之前解释原因(如果有的话)
git remote show origin
Enter passphrase for key ....ssh/id_rsa:
* remote origin
Fetch URL: git@github.com:mamaque/systems.git
Push URL: git@github.com:mamaque/systems.git
HEAD branch: main
Remote branch:
main tracked
Local ref configured for 'git push':
main pushes to main (up-to-date) 两者都是最新的 main pushes to main (fast-forwardable) 远程可以用本地更新 main pushes to main (local out of date) 本地可以更新带遥控器
【讨论】: