1. ホーム
  2. git

[解決済み] git add を実行してもしなくても、ブランチを切り替えたときに自分の変更点(修正、追加、削除されたファイル)が表示され続けるのはなぜですか?

2022-07-22 23:58:58

質問

私はgitの初心者なのですが、ブランチを切り替えるためにgit checkoutを実行したときに、あるブランチで変更した内容が別のブランチに表示され続けるのはなぜなのかを理解しようとしています。しかし、その後 git add を使ってみましたが、問題は解決しませんでした。git commitはまだ使っていません。

基本的にはこのような感じです。

$ git clone <a_repository>  
$ git branch  
* master  
$ git branch testing  
$ git checkout testing  
...edit a file, add a new one, delete...  
$ git status  
    # On branch testing  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  
$ git branch  
  master  
* testing  
$ git checkout master  
D       file1.txt  
Switched to branch 'master'  
$ git status  
    # On branch master  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  

ブランチを使っていると、あるブランチで何をやっても、他のブランチからは見えないと思いました。それがブランチを作る理由ではないのでしょうか?

私は "git add" を使ってみましたが、変更は両方のブランチに表示されています。 これを避けるには、ブランチを切り替える前に "git commit" を実行する必要がありますか?

どのように解決するのですか?

ブランチを切り替えると、コミットされていない変更も一緒に持ち運ばれます。先にコミットして git checkout . を実行して元に戻すか、あるいは git stash を実行してください。(変更を元に戻すには git stash apply )