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

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

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

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

3回答

7607閲覧

githubでpull requestしたものが消える

shichiria

総合スコア33

Git

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2016/03/01 02:07

編集2016/03/01 02:24

原因は私の理解が浅いせいなのだと思うのですが、
何故こうなったのかわからないので理由が推測出来る方は教えて下さい。

ある仕事用のリポジトリでmasterからブランチを作って(ブランチAとします)
修正を加えてマージ→pullrequest→master反映としたのですが、
その次に別の人がコミットしたファイルからは私の修正が消えていました。
その方がコミットする時に消しこむような修正をしたのかと思い、コミットログを見たのですが、
特に私が加えたファイルを消したようなログはありません。
元からコミットなどなかったかのような扱いになっています。
私のコミットログにはきちんとファイルは加えられており、
断面を見てもファイルは残っています。
今回は手動でもう一度ファイルを入れなおして終わったのですが、
またやってしまいそうで原因がわからず不安です。

lang

1ブランチA作成 マージ 他の方のコミット 2→ ● → … → ● → ● → 3 ↓ ↑ (以降私がコミットしたファイルなし) 4 ↓ → → → →● → → ↑ 5 ブランチAで修正 ブランチAで修正

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

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

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

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

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

guest

回答3

0

お二方ご回答ありがとうございました。
あれから調べた結果、どうやら私ともうひと方が同じmasterのバージョンに対して、
修正コミットとしたのが問題だったようです。
同じバージョンに対してコミットしたので上書き扱いで私のものが消えたようです。
masterバージョン1→masterバージョン2(1ベース 私のブランチAからのコミット)→masterバージョン2’(1ベース 他の方のコミット)→(その後はバージョン2’が正となる)

先にコミットが入っている場合は、pullしないかぎり、pushできないものだと思っていたので、
混乱していました。
数人ですので、次からは、大きなコミットをする直前には、
きちんと宣言して、上書き合戦が起こらないように気をつけようと思います。

投稿2016/03/01 11:50

shichiria

総合スコア33

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

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

takotakot

2016/03/01 23:22

push ではなく、push -f をされたということですね。pull して、既に push されている コミット と整合性をとらないと、このようなことが起きることがあります。
guest

0

同じく勉強中のものです。

作業者の方は、修正更新後のmasterからローカルリポジトリを作成してますか。
もし、修正前のmasterからブランチを切って作業されているとしたらコミットしても古いデータとなってしまいます。

運用方法の全貌は見えませんが、下記のような感じで修正しないでしょうか。
1.(管理者)master更新、報知
2.(作業者)新masterをローカルのmasterにpull+マージ
3.(作業者)pullしたmasterと作業用のブランチAをマージ
4.(作業者)ブランチAにて作業を進める

以上でございます。

投稿2016/03/01 05:02

yskhm

総合スコア13

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

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

shichiria

2016/03/01 11:40

今のプロジェクトだと数人なので管理者がいない状態で、 小さい修正→直接マスターに、大きい修正→ブランチを切って修正、 という程度しか決まっていません。 なので自分の修正は自分でmasterへのマージ作業まで行っています。
guest

0

  1. Aブランチで作業する(適宜ステージングする)
  2. Aブランチをコミットする

この状態なったらリモートにpushできますよね。
作業中、基本的にマージはしませんよ。

で、
リモートにpushしたということは、githubにも反映されます。
その反映されたpushされたコミットを、みんなに見てほしいわけです。
ようするにみんなにこのコミットをpullしてほしい。
なので、ここで初めてpull requestを出すということになります。

pull requestをみんながみて、問題ないと思ったら(ルールは現場によって違うけど、いいねを3つもらったら、とかいろいろ)そこで初めてマージします。

pull request前にマージしたのはなんでですかね?
(みんながそうしてたから、そうしろといわれたから、とかなんでもいいですよ)

投稿2016/03/01 02:16

編集2016/03/01 02:17
ogaaaan

総合スコア765

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

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

shichiria

2016/03/01 02:29

小さなプロジェクトなのでPullRequestを出して取り込むのも自分でやっています。 (修正を入れること自体は事前に全員に通知しています) gitの良さを生かしていないのはわかっていますが、メンバー間の利便性が優先されています。 マージをしたのはconflictが発生したので、それを解消するために一旦masterの修正を取り込んだためです。その後、pullrequestを出して、承認ボタンを押しました。
ogaaaan

2016/03/01 02:45

小さいプロジェクトだとなかなかgitの良さが活かせない事ありますよねー。 だいたいgitってコマンド多すぎるんですよwww 閑話休題。 これはあくまで想像なのですが、Aブランチを他の方が使った可能性はないですかね。 その人はあなたの更新をpullして取り込まないままpushして、上書き合戦になってしまったと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問