Git Tfs 克隆仅显示主分支上的提交

Posted

技术标签:

【中文标题】Git Tfs 克隆仅显示主分支上的提交【英文标题】:Git Tfs clone only showing the commits on the master branch 【发布时间】:2021-07-11 09:44:51 【问题描述】:

我已经使用 git-tfs 将 TFS 存储库克隆到我的本地计算机中。我使用了以下命令:

git tfs clone <server URL> <repository path> <local directory> --branches=auto

当我在源代码树中打开存储库时,我只能看到直接提交到主分支的提交。 git log 显示提交历史,但是,源树仅显示主分支提交。我需要查看所有分支中提交的完整历史记录,但我没有成功。

编辑:

如果我尝试使用 --branches=all,我也会收到一些错误。

2021-04-19 10:46:19.9024 [Debug] git command time: [00:00:00.0468850] init
2021-04-19 10:46:19.9493 [Debug] No .gitignore file specified to commit...
2021-04-19 10:46:19.9493 [Debug] No .gitignore file specified to use...
2021-04-19 10:46:22.9008 [Debug] Looking for all branches...
2021-04-19 10:46:24.5489 [Debug] GitTfs.Core.GitTfsException: error: cloning the whole repository or too high in the repository path doesn't permit to manage branches!
   => If you want to manage branches with git-tfs, clone one of this branch instead :
PS:if your branch is not listed here, perhaps you should convert the containing folder to a branch in TFS.
   at GitTfs.Util.GitTfsCommandRunner.Run(GitTfsCommand command, IList`1 args) in C:\gittfs\src\GitTfs\Util\GitTfsCommandRunner.cs:line 36
   at GitTfs.GitTfs.Main(GitTfsCommand command, IList`1 unparsedArgs) in C:\gittfs\src\GitTfs\GitTfs.cs:line 83
   at GitTfs.GitTfs.Run(IList`1 args) in C:\gittfs\src\GitTfs\GitTfs.cs:line 48
   at GitTfs.Program.Main(String[] args) in C:\gittfs\src\GitTfs\Program.cs:line 28

分支结构类似如下:

  $/App/App.root/App [*]
 |
 +- $/App/App.root/backend/csv/Version-1.0
 |  |
 |  +- $/App/App.root/backend/csv/Version-1.1
 |  |
 |  +- $/App/App.root/backend/csv/Version-1.1/Fixes
 |  |
 |

当我在$/App 中使用git tfs 时,它只会拉取主分支中的提交。我看不到包含所有分支及其提交的完整树。

【问题讨论】:

你没有提供足够的信息来说明你想要实现什么,你的分支结构是什么等等。尝试github.com/git-tfs/git-tfs/blob/master/doc/commands/…找到一个分支来克隆。 @Philippe 请查看编辑。 查看我编辑的答案。 【参考方案1】:

--branches=auto 只初始化合并在&lt;local directory&gt; 中的分支。

如果你想要一切,你应该使用--branches=all

查看你的分支结构,正确的命令应该是

git tfs clone <server URL> $/App/App.root/App <local directory> --branches=all

【讨论】:

这只是一个例子。在这种情况下,$/App/App.root/App 只是一个分支。还有其他几个,例如$/App2$/App3。有没有办法可以一次克隆与$/App 和 '$/App2' 等相关的所有分支,而不是通过分支结构并单独克隆它们? @Aithorusa 不同的应用程序很可能应该放在不同的存储库中。在决定如何构建 Git 存储库时,请考虑 Git 和 TFVC 之间的差异;把所有东西都放在一个巨大的仓库中很少是最好的方法。 @Aithorusa 如果所有分支都与 $/App/App.root/App 链接,它们将被克隆。否则,不,这对于 git-tfs 是不可能的。但如果它们不是链接,您可以将它们克隆到不同的存储库中。最后获取同一存储库中的所有历史记录,如果需要,可以链接所有历史记录...

以上是关于Git Tfs 克隆仅显示主分支上的提交的主要内容,如果未能解决你的问题,请参考以下文章

如何运行 git log 以仅查看特定分支的更改?

Git:如何列出此分支上的提交而不是合并分支上的提交

GIT 拉取或克隆存储库仅获取 Master 分支

git从主分支上拉取新分支以及提交代码合并到主分支

在 Git 日志中仅显示一个分支的历史记录

使用git克隆项目从dev分支上更新代码以及将代码提交到Coding(或GitHub)上面