質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

3回答

7056閲覧

ブランチでの変更内容が別のブランチに反映されてしまう

Sigma1630

総合スコア36

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

1クリップ

投稿2019/04/23 04:20

masterブランチと、masterブランチからgit checkout -b anotherで作成したanotherブランチがあります。anotherブランチでの変更はmasterブランチに影響を及ぼさないはずですが、どうも及ぼしているように見えます。
gitの動作としてこれは正しいのか。正しいとした場合、masterブランチに影響を及ぼさない開発ブランチを作るにはどうしたらよいか教えてください。

試したこと

現在あるブランチはmasterブランチのみ、カレントディレクトリには「これはmasterブランチです。」とだけ書かれたtest.htmlファイルがあります。

$ git branch * master $ ls test.html $ vi test.html これはmasterブランチです。 ~ :wq

この状態でanotherブランチを切り、test.htmlに変更を加えます。

$ git checkout -b another Switched to a new branch 'another' $ git branch * another master $ vi test.html これはmasterブランチです。 いいえ、これはanotherブランチです。(追記) ~ :wq

ここでmasterブランチに戻り、test.htmlを確認すると、anotherブランチでの変更内容が残っています。

$ git checkout master Switched to branch 'master' $ vi test.html これはmasterブランチです。 いいえ、これはanotherブランチです。(追記) ~

ここで期待する動きは、masterブランチのtest.htmlには、anotherブランチで追記した「いいえ、これはanotherブランチです。(追記)」が反映されていないことなのですが、期待に反して反映されてしまっています。

これはGitの正しい動作なのでしょうか。正しい場合は、"別途開発用のブランチ(or環境)を作り、その中での変更内容はmasterブランチには反映されない"という状況をつくるにはどうしたらよいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

超簡単に言うと another での変更をコミットしてください。そうすれば master に戻ったときの master は前のままです

投稿2019/04/23 04:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sigma1630

2019/04/23 04:46

ありがとうございます。勉強不足でした。
guest

0

提示いただいた手順では、master と another のいずれのブランチにも反映されていません。

変更しているのはローカル環境上(ワークツリー)のファイルです。

期待されている動作を実現するには、ファイルを変更し、git commit コマンドで another ブランチに反映した後で、master ブランチに切り替えるとうまくいくと思います。

投稿2019/04/23 04:39

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sigma1630

2019/04/23 04:40

おっしゃる通りでした。ブランチはコミットされて初めて状態がセーブされるのですね。ありがとうございます。
guest

0

ベストアンサー

gitのbranchはあくまでcommitにつけたラベルのようなものであったことを思い出してください。言い換えるとcommitされていない部分は関知しようがないわけです。

git checkoutはcommitされていない部分を保持しつつ、branchを切り替えます。なのでもし切り替え先に適用できない変更がcommitされていない部分にあるとconflictします。

投稿2019/04/23 04:31

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sigma1630

2019/04/23 04:37

思い出しました!この場合はmasterでtest.htmlをコミットし、その後anotherでtest.htmlを編集し&コミットした場合に初めて、各々のブランチでtest.htmlの状態が個別に保存される感じですね。 実際にやってみたらそのような挙動になりました、スッキリしました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問