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

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

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

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

Q&A

解決済

2回答

1162閲覧

gitでブランチを切って作業してpushすると、別のブランチで作業したファイルもpushされてしまう

wieee

総合スコア11

Git

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

0グッド

1クリップ

投稿2018/07/11 13:10

gitでdevブランチで開発しています。

問題点

作業ブランチをdevブランチから2つや3つブランチを作ってそれぞれ作業しているのですが、他のブランチで作業したファイルが別のブランチでpushされてしまいます。

1. 作業ブランチissue-Aで編集

まず一つ目の作業ブランチを作成します。ローカルでdevブランチからissue-Aブランチを切って作業します。

bash

1git checkout dev 2git branch issue-A 3git checkout issue-A

この状態で作業し、例えばpage1.htmlとpage2.htmlを編集したとします。
これをリモートにpushします。

bash

1git add -A 2git commit -m "Edit page1.html & page2.html" 3git push origin issue-A

2. 作業ブランチissue-Bで編集

別のファイルを編集する作業が入ってきました。
そこで上記issue-Aの作業を止めて、ローカルでdevブランチからissue-Bブランチを切って作業します。

bash

1git checkout dev 2git branch issue-B 3git checkout issue-B

この状態で作業し、例えばpage3.htmlとpage4.htmlを編集したとします。
これをリモートにpushします。

bash

1git add -A 2git commit -m "Edit page3.html & page4.html" 3git push origin issue-B

結果

git push origin issue-Bでissue-Aで編集したファイルもpushされてしまいます。

質問

  1. これはgit add -Aがブランチに関係なく変更されたファイルをインデックスするからでしょうか?自分のイメージとしては「現在checkoutしているブランチissue-Bのファイルのみをaddしてインデックスに登録している」という理解でしたが間違いでしょうか?
  2. issue-Aを作業中にissue-Bを編集してissue-Bのみpushするにはどのようにするのでしょうか?

どうぞよろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

issue-Aでpushした後もファイルを編集していて、issue-Bに切り替えた
ということでしょうか?
であれば、そのファイル編集がissue-Bに引き継がれています。

こういう場合は、stash コマンドで issue-A の状態を一時保存します。
git stash
(issue-Bで作業)
git checkout issue-A
git stash pop

投稿2018/07/14 02:00

aquaS

総合スコア191

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

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

wieee

2018/07/14 05:02

ご回答ありがとうございます。 > issue-Aでpushした後もファイルを編集していて、issue-Bに切り替えた ということでしょうか? いいえ、issue-Aをpushした後はファイルは編集していません。 > であれば、そのファイル編集がissue-Bに引き継がれています。 自分のgitの認識が悪いのだと思いますが、そもそもdevブランチからissue-Aブランチを切って編集し、add, commit, pushした後でもdevブランチからissue-Bブランチを作ったらdevのファイルでissue-Bが作られるのですよね? そこは間違っていないと思うのですが、issue-Bをadd, commit, pushするとなぜかissue-Aで編集したファイルもissue-Bとしてpushされてしまう… > こういう場合は、stash コマンドで issue-A の状態を一時保存します。 上記の件がよくわからないので、複数のブランチを同時平行で作業するにはこのstashで一時保存したほうがよいのかもしれませんね。 stashで調べたら似たような説明が出てきました!
aquaS

2018/07/14 06:57

手順には問題なさそうです。 issue-Aのコミットがissue-Bにpushされている、というのはどのように確認されました?
wieee

2018/07/14 08:54

手順に問題ないのですね。 ただ、issue-Bをaddするときにadd -Aとしているのが問題なのかな?と思うのですが… add -Aだとissue-Aで編集したファイルも含んでしまいますか? いろいろ調べていても-Aオプションは単に「編集・削除したファイルを全てインデックスする」としか説明されておらず、他のブランチで編集したファイルも含むのか含まないのかもわからないです。 > issue-Aのコミットがissue-Bにpushされている、というのはどのように確認されました? gitHubのほうでissue-Bをpush後にプルリクを作ってFiles changedを確認するとissue-Aの編集したファイルも含まれていました。
aquaS

2018/07/14 09:18

> add -Aだとissue-Aで編集したファイルも含んでしまいますか? 含まないです。issue-Bをチェックアウトした時点でdevと同じ内容のファイルに入れ替わっています。 > gitHubのほうでissue-Bをpush後にプルリクを作ってFiles changedを確認するとissue-Aの編集したファイルも含まれていました。 GitHubのコミット履歴でもissue-Bのコミットにissue-Aの内容が含まれていました?
wieee

2018/07/14 10:04

ありがとうございます。 > 含まないです。issue-Bをチェックアウトした時点でdevと同じ内容のファイルに入れ替わっています。 そうなのですか…そうすると何かの手順違いなのだろうか…。 > GitHubのコミット履歴でもissue-Bのコミットにissue-Aの内容が含まれていました? はい、含まれていて別の共同開発の方に指摘されましたし自分でも確認しました。 ただ、もう修正したので今はどの履歴だったかの確認は難しい感じです。 とりあえずやり方は間違っていなそうなので注意しながら作業していこうと思います。
guest

0

絨毯爆撃プッシュですね?

投稿2018/07/11 13:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

wieee

2018/07/13 01:28

具体的な解決方法のコマンド操作を教えて欲しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問