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

How to view files (without changes) of a different branch in Git?

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

的文件

在Visual Studio tfs 中,如果我对测试分支中的客户文件进行了更改,则更改仅在该分支中可见。如果我切换到 Master,我将看不到这种变化。两个分支都是分开存储的(在不同的文件夹中)。

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

它在 Git 中是如何工作的,还是我没理解对?如果是这样的话,如果我不小心在 master 分支中进行了更改怎么办?我是否需要撤消所有这些更改、切换分支并在那里重新执行它们?

How to view files (without changes) of a different branch in Git?

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

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

简单的说,当使用git时,会在本地开辟一个暂存区来存放我们所有的代码,checkout工作就是在本地系统已有的代码版本之间切换。

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

的魅力所在

对于git的原则,您只需要googlegit,您将获得更专业、更详细的文档指南:

Git Checkout

How to view files (without changes) of a different branch in 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

If that is the case, what if I accidentally made changes in the master branch? Do I need to undo all those changes, switch branches, and re-do them there?

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

首先,您不需要手动重新执行它们,而是获取您添加到错误分支的提交的 SHA1,然后签出正确的分支并执行 cherry-pick 指定SHA1。现在您已经修复了两个分支。

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