如何在 Git 中查看不同分支的文件(没有更改)?

Posted

技术标签:

【中文标题】如何在 Git 中查看不同分支的文件(没有更改)?【英文标题】:How to view files (without changes) of a different branch in Git? 【发布时间】:2021-07-02 17:55:05 【问题描述】:

我是 Git 新手,所以对此我有些困惑。我有两个分支,Master 和 Test,有一个名为 Customer.cs 的文件。

在 Visual Studio tfs 中,如果我在 Test 分支中对 Customer 文件进行了更改,则更改仅在该分支中可见。如果我切换到大师,我不会看到这种变化。两个分支分别存储(在不同的文件夹中)。

在 Visual Studio Git 中,即使我切换到 master 分支并打开文件,我仍然看到相同的变化。与 TFS 不同,分支没有两个不同的文件夹。

这是它在 Git 中的工作方式还是我不理解这一点?如果是这种情况,如果我不小心在 master 分支中进行了更改怎么办?我是否需要撤消所有这些更改、切换分支并在那里重新进行?

【问题讨论】:

这个问题怎么样?下面的答案是否解决了您的问题,如果没有,请告诉我有关此问题的最新信息吗? 【参考方案1】:

如何在 Git 中查看不同分支的文件(不做更改)?

Git 使用分布式原则。它不会为工作区中的分支生成多个文件夹。

要查看不同分支的文件,可以使用 git checkout 命令,“checkout”是在目标实体的不同版本之间切换的行为。

简单来说,使用 git 时,会在本地打开一个临时存储区来存储我们所有的代码,并且 checkout 可以在本地系统上已经存在的代码版本之间进行切换。

因此,如果您不小心在 master 分支中进行了更改,这不会影响您在 test 分支上的代码。这是您在测试分支上提交的最后一个代码。即使在同一个工作空间中,不同的分支也不会相互影响。这也是git的魅力所在。

对于git的原理,你只需要google git,你会得到更专业、更详细的文档指南:

Git Checkout

【讨论】:

【参考方案2】:

如何在 Git 中查看不同分支的文件(不做更改)?

文件位于多个分支的同一路径上。许多 git 命令允许像 <branch name> -- <file path> 这样的命令只对单个文件进行操作。

例如显示文件a/b.txtmain 分支和test 分支之间的区别:

git checkout main
git difftool test -- a/b.txt

这将显示文件的两个版本的并排视图。您还可以使用以下命令仅显示test 分支中的单个文件的内容(无需检查):

git show test:a/b.txt

如果是这样,如果我不小心在 master 分支中进行了更改怎么办?我是否需要撤消所有这些更改、切换分支并在那里重新进行?

有点。但是 git 中有一些工具可以帮助您。

首先,您不需要手动重新执行它们,而是获取添加到错误分支的提交的 SHA1,然后检查正确的分支并执行指定 SHA1 的樱桃选择。现在你已经修复了两个分支。

其次,您想将其从第一个分支中删除。如果您还没有将它推送到远程,那么您可以使用git reset --hard HEAD~1(警告!这会删除所做的更改!)从历史记录中删除提交,这会从当前分支中删除最后一次提交。如果您已经将提交推送到远程,那么您可以添加一个新的提交来撤消上次提交中的所有更改。 git 也有自动为你做这件事的工具,看看 revert 命令。

【讨论】:

以上是关于如何在 Git 中查看不同分支的文件(没有更改)?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我当前的更改提交到 Git 中的不同分支 [重复]

git合并分支后还能在旧分支推送吗

如何在 Git 的另一个分支中选择性地合并或选择更改?

Git - 如何查看方法/函数的更改历史记录?

Git:如何区分不同分支中的两个不同文件?

如何将本地未提交的更改合并到另一个 Git 分支?