在 Git 个分支之间切换,删除另一个分支中的文件
Switch between Git branches removing files in another branch
好的,当我在分支之间切换并从一个分支删除文件时,它会转移到另一个分支。
我创建了一个新的 repo,并使用文件“README.md”推送到远程。
然后我切换到功能分支 git checkout -b feature/hello
并添加一个文件 hello.md
。我添加此文件 git add hello.md
并提交 git commit -m "hello added"
。然后我推这个分支,一切都很好! git push origin feature/hello
.
现在我想切换分支做一些工作,在这个功能分支上我们要删除 hello.md
并添加一个新文件 goodbye.md
.
git checkout -b feature/goodbye
rm hello.md
git checkout feature/hello
现在在 feature/hello
分支中我有文件 README.md
goodbye.md
.
为什么删除一个分支中的文件会从另一个分支中删除它们?
TL;DR - 更改是本地,直到您提交它们。
文件本身并未从“分支”中删除,而是仅在本地删除。
当您执行 rm [filename]
时,您只是在本地删除文件。这与 git rm [filename]
不同。 this post.
中的更多详细信息
如果你检查你推送的代码,文件仍然在那里。事实上,该文件仍在分支中——至少就 git
而言是这样,因为您尚未将删除作为更改提交。只有当您 git add [filename]
时 git
才会将文件记录为已删除。 (事实上 ,即使那样,您仍然可以更改分支并且git commit
文件在不同的分支中被删除!)
这就是 git
的工作方式。您可以在本地进行更改并在不同分支之间移动,然后将更改提交到您选择的分支。 (当然,过程中可能会遇到一些冲突,但原则上是可以的)
事实上,它真的很有用。比如说,您在分支 foo
中并且刚刚对几个文件进行了一些更改。但是,您真正想要做的是在您忘记创建和检出的 new 分支 bar
中进行这些更改。由于更改仍然是本地的,您可以简单地 git checkout -b bar
并按照您最初的意图在分支 bar
中提交更改。
顺便说一下,this post 讨论了恢复已删除文件的方法,以防 rm
出错。
好的,当我在分支之间切换并从一个分支删除文件时,它会转移到另一个分支。
我创建了一个新的 repo,并使用文件“README.md”推送到远程。
然后我切换到功能分支 git checkout -b feature/hello
并添加一个文件 hello.md
。我添加此文件 git add hello.md
并提交 git commit -m "hello added"
。然后我推这个分支,一切都很好! git push origin feature/hello
.
现在我想切换分支做一些工作,在这个功能分支上我们要删除 hello.md
并添加一个新文件 goodbye.md
.
git checkout -b feature/goodbye
rm hello.md
git checkout feature/hello
现在在 feature/hello
分支中我有文件 README.md
goodbye.md
.
为什么删除一个分支中的文件会从另一个分支中删除它们?
TL;DR - 更改是本地,直到您提交它们。
文件本身并未从“分支”中删除,而是仅在本地删除。
当您执行 rm [filename]
时,您只是在本地删除文件。这与 git rm [filename]
不同。 this post.
如果你检查你推送的代码,文件仍然在那里。事实上,该文件仍在分支中——至少就 git
而言是这样,因为您尚未将删除作为更改提交。只有当您 git add [filename]
时 git
才会将文件记录为已删除。 (事实上 ,即使那样,您仍然可以更改分支并且git commit
文件在不同的分支中被删除!)
这就是 git
的工作方式。您可以在本地进行更改并在不同分支之间移动,然后将更改提交到您选择的分支。 (当然,过程中可能会遇到一些冲突,但原则上是可以的)
事实上,它真的很有用。比如说,您在分支 foo
中并且刚刚对几个文件进行了一些更改。但是,您真正想要做的是在您忘记创建和检出的 new 分支 bar
中进行这些更改。由于更改仍然是本地的,您可以简单地 git checkout -b bar
并按照您最初的意图在分支 bar
中提交更改。
顺便说一下,this post 讨论了恢复已删除文件的方法,以防 rm
出错。