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

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

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

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

Q&A

1回答

1263閲覧

特殊なローカル環境でのGitによる履歴管理方法

退会済みユーザー

退会済みユーザー

総合スコア0

Git

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

0グッド

0クリップ

投稿2016/07/23 11:56

編集2022/01/12 10:55

適切なタイトルが思いつかなかったので分かりづらいかもしれませんが、
Gitで次のような運用をする場合にラクでうまい方法はないでしょうか?

まず、リモートリポジトリにはA→B→Cという変更された履歴があるとします。
(A/B/Cはリビション)
これをローカルPCにクローンして開発するのですが、
ローカルPC側の事情で取得したコードそのままでは開発ができないので、
ローカルリポジトリ上では少し改造してから開発をすすめる必要があるとします。
そこで、ローカルではA→B→C→C'という風に別ブランチを切って開発をすすめるとします。
(’ダッシュはブランチと考えて下さい)

ローカルで開発を進めると、A→B→C→C'→D'→E'と進みますが、
ここでリモートにプッシュするときにどうするのがいいのだろう?ということです。
E'をそのままプッシュすると、C'での変更は他の開発者の環境に合わないので迷惑がかかります。
貴方なら以下のどの方法を採用しますか?

  1. cherry-pickを使う方法。Cを起点にして、D'とE'をcherry-pickすることで、

C→D→Eとmasterブランチを進めてからEをプッシュする。
0. revertを使う方法。E'の段階でC'をrevertすることで変更を打ち消してから、プッシュする。
つまり、E'+(revert C')→Eとして、Eをプッシュ。
0. rebase -iする方法。E'の段階でC~E'をrebase -iして、ローカルリポジトリの
履歴ごと変える。つまり、C→D'→E'→C'の順序になるようにrebaseし直して、
ひとつ前のE'をリモートにプッシュする。
0. (あれば)その他の方法・・・

お気づきのデメリットなどもあれば、ご指摘下さい。

なお、諸般の事情により「自分のPCの環境を、他の開発者に合わせる」ということは
できないものとします。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

DBの設定ファイルだけ自分用にするとかですか?
更新を無視するようにしたらどうですか?

既に git 管理しているファイルをあえて無視したい

そうじゃなくて、その対象ファイルもマージの可能性がある場合は、わたしは「 1. 」を選びます。
っていうかそれくらいしか使い方知らない・・・

投稿2016/07/23 15:06

shi_ue

総合スコア4437

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

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

退会済みユーザー

退会済みユーザー

2016/07/29 05:26

ありがとうございます。 DBの設定ファイルとかではなく、アプリケーション開発のプロジェクト設定ファイルです。私だけが開発環境(コンパイラバージョン)がちょっと違うんで、プロジェクト設定ファイルも一部違っています。 頻繁ではないのですが、このプロジェクトファイルは私も他の人も変更することがありますので、更新しないという訳には行かないです。通常は更新せずに、変更があった時だけいったん元に戻してからプッシュするという方法もありなのですが面倒で・・・ ローカルもリモートも履歴が残せるという意味ではやはり1ですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問