gpt4 book ai didi

git - 切换 Git 分支时更改的文件会发生什么?

转载 作者:行者123 更新时间:2023-12-03 13:58:17 25 4
gpt4 key购买 nike

尽管使用 Git 已经有一段时间了,但我仍然无法理解它的分支机制。特别是,考虑一个新项目 foo单个文件 bar.txt由这些简单的命令初始化:

$ mkdir foo
$ cd foo
$ git init
$ touch bar.txt
$ git add .
$ git commit -m 'Initial commit'

现在当我创建一个分支 foobar , git branch显示我还在 master :
$ git branch foobar
$ git branch
foobar
* master

但是当我更改文件 bar.txt 时:
$ echo quux >> quux.txt
$ git status
modified: quux.txt

然后当我 checkout 另一个分支时,我可以看到文件 bar.txt在那里也进行了修改:
$ git checkout foobar
$ git status
modified: quux.txt

我已经知道这种行为允许我选择要将更改提交到哪个分支,但我觉得这很烦人。我怀疑我没有理解 Git 分支背后的基本思想。有没有办法告诉 git 当我对 master 进行更改时,我不希望它们从我可以选择 checkout 的任何其他分支可见?

最佳答案

在您提交之前,您在工作目录中所做的更改不是任何分支的一部分。所以你出错的地方是认为当你 checkout 一个分支然后修改一个文件时,你已经在“分支”上进行了修改。你还没有这样做,你已经修改了工作目录。

所以你有一个基于一个分支的脏工作目录,你 check out 另一个分支 - 未提交的更改保留在工作目录中,否则它们不会保存在任何地方。您将无法再次 checkout 第一个分支并重新出现本地更改。

您可能想做的是 git stash在切换分支之前。这会将本地更改保存到临时分支,您可以稍后使用 git stash pop 返回该分支。 .

关于git - 切换 Git 分支时更改的文件会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38879805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com