0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

git switch後のファイル追加・削除・編集の引継ぎについて確かめる

Last updated at Posted at 2021-12-26

#この記事は何か?
本記事は「git switchしても、コミットしない限りは、ワークツリーやインデックスにおけるファイルの追加・削除は引き継がれるよね?」ということを自分の目で確かめて安心するための記事です。

#使用したgitコマンド
インデックスのエントリを表示する。

git_ls-files
$ git ls-files --stage
100644 95cf52bf4d6ad11ee7b8f1635ea0aa35eae2265b 0       main.c

BLOBオブジェクトのファイルコンテンツを表示する。

git_cat-file
$ git cat-file -p 95cf52bf4d6ad11ee7b8f1635ea0aa35eae2265b
int main(void)
{
        printf("Hello, world!\n");

        return 0;
}

#表の凡例
新規ファイルの追加、共通ファイルの削除

  • ○ … ワークツリーの場合、ワークツリーにファイルが存在する。インデックスの場合、インデックスにファイルのエントリが存在する
  • × … ワークツリーの場合、ワークツリーにファイルが存在しない。インデックスの場合、インデックスにファイルのエントリが存在しない

共通ファイルの編集

  • ○ … ワークツリーの場合、ワークツリーのファイルの内容が編集後の内容である。インデックスの場合、インデックスのファイルのハッシュ値が編集後ファイルのハッシュ値である。
  • × … ワークツリーの場合、ワークツリーにファイルの内容が編集前の内容である。インデックスの場合、インデックスのファイルのハッシュ値が編集前ファイルのハッシュ値である。

#実験結果
##新規ファイルの追加

ブランチAで(ブランチBに存在しない)新規ファイルを追加し、ブランチBに切り替えた後の、ワークツリーとインデックス上のファイルの有無について確認した。

# タイミング Aのワークツリー Aのインデックス Bのワークツリー Bのインデックス
1 Aで新規ファイル追加後 × - -
2 Aでswitch B後 - - ×
3 Bでswitch A後 × - -
4 Aでadd後 - -
5 Aでswitch B後 - -
6 Bでswitch A後 - -
7 Aでcommit後 - -
8 Aでswitch B後 - - × ×
9 Bでswitch A後 - -

コミットしない限りは、git switchしても新規ファイル追加は引き継がれるようですね。

##共通ファイルの削除

ブランチAで(ブランチBにも存在する)ファイルを削除し、ブランチBに切り替えた後の、ワークツリーとインデックス上のファイルの有無について確認した。

# タイミング Aのワークツリー Aのインデックス Bのワークツリー Bのインデックス
1 Aでファイル削除後 × - -
2 Aでswitch B後 - - ×
3 Bでswitch A後 × - -
4 Aでadd後 × × - -
5 Aでswitch B後 - - × ×
6 Bでswitch A後 × × - -
7 Aでcommit後 × × - -
8 Aでswitch B後 - -
9 Bでswitch A後 × × - -

コミットしない限りは、git switchしてもファイル削除は引き継がれるようですね。

##共通ファイルの編集

ブランチAで(ブランチBにも存在する)ファイルを編集し、ブランチBに切り替えた後の、ワークツリーとインデックス上のファイルの内容について確認した。

# タイミング Aのワークツリー Aのインデックス Bのワークツリー Bのインデックス
1 Aでファイル編集後 × - -
2 Aでswitch B後 - - ×
3 Bでswitch A後 × - -
4 Aでadd後 - -
5 Aでswitch B後 - -
6 Bでswitch A後 - -
7 Aでcommit後 - -
8 Aでswitch B後 - - × ×
9 Bでswitch A後 - -

コミットしない限りは、git switchしても編集後のファイルは引き継がれるようですね。

#結論

思った通りで安心しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?