如何在 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.txt
在main
分支和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 中查看不同分支的文件(没有更改)?的主要内容,如果未能解决你的问题,请参考以下文章