为什么 Git 不抱怨地检查这个删除的分支?
Why does Git checkout this deleted branch without complaining?
我刚刚从我们遥远的 Git 存储库中删除了一个远程分支:
$ git push origin :obsoleteBranch
To git@<path_to_our_git_repo>/our_git_repo.git
- [deleted] obsoleteBranch
现在我的 obsoleteBranch 本地副本正在跟踪 "gone":
的分支
git branch -avv
* obsoleteBranch dbef4b0 [origin/obsoleteBranch: gone] commit log...
到目前为止,一切顺利!
问题是我的同事仍然可以看到远程分支,甚至在 git fetch --all
:
之后
$ git fetch --all
Fetching origin
......
$ git branch -avv
......
remotes/origin/obsoleteBranch dbef4b0 commit log...
......
Git 当我的同事试图检查已删除的分支时没有抱怨!
$ git checkout --track origin/obsoleteBranch
并且实际上在删除的分支曾经所在的位置进行结帐!
但是(证明远程分支确实没有了)我同事删不掉:
$ git push origin :obsoleteBranch
error: unable to delete 'obsoleteBranch': remote ref does not exist
error: failed to push some refs to 'git@<path...>/our_git_repo.git'
出了什么问题?
没有git fetch --all 完全同步我同事的仓库和远程仓库?
他 运行 应该使用什么命令,然后,为了让他的本地存储库考虑到 git branch -avv
和 git checkout
的分支删除?
git 缓存有关远程分支的信息。您的同事之前一定已经获取了有关该 obsoleteBranch 的信息。这就是他看到它并能够检查提交的原因(提交也下载到他的本地存储库)。
git fetch --all --prune
应该删除对远程分支的现在孤立的引用。
我刚刚从我们遥远的 Git 存储库中删除了一个远程分支:
$ git push origin :obsoleteBranch
To git@<path_to_our_git_repo>/our_git_repo.git
- [deleted] obsoleteBranch
现在我的 obsoleteBranch 本地副本正在跟踪 "gone":
的分支git branch -avv
* obsoleteBranch dbef4b0 [origin/obsoleteBranch: gone] commit log...
到目前为止,一切顺利!
问题是我的同事仍然可以看到远程分支,甚至在 git fetch --all
:
$ git fetch --all
Fetching origin
......
$ git branch -avv
......
remotes/origin/obsoleteBranch dbef4b0 commit log...
......
Git 当我的同事试图检查已删除的分支时没有抱怨!
$ git checkout --track origin/obsoleteBranch
并且实际上在删除的分支曾经所在的位置进行结帐!
但是(证明远程分支确实没有了)我同事删不掉:
$ git push origin :obsoleteBranch
error: unable to delete 'obsoleteBranch': remote ref does not exist
error: failed to push some refs to 'git@<path...>/our_git_repo.git'
出了什么问题?
没有git fetch --all 完全同步我同事的仓库和远程仓库?
他 运行 应该使用什么命令,然后,为了让他的本地存储库考虑到 git branch -avv
和 git checkout
的分支删除?
git 缓存有关远程分支的信息。您的同事之前一定已经获取了有关该 obsoleteBranch 的信息。这就是他看到它并能够检查提交的原因(提交也下载到他的本地存储库)。
git fetch --all --prune
应该删除对远程分支的现在孤立的引用。