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

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

ただいまの
回答率

88.93%

Gitで、作業途中でリモートに保存したい時

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,491

haru853

score 30

Gitで、作業途中でリモートに保存したい時は、みなさんどのようにされているのでしょうか?

(例)

  • 自宅に戻ってから作業したい為、会社での作業の終わりでリモートに保存しておきたい時
  • 作業途中だが、とりあえず一日の終わりでリモートに保存しておきたい時

いったんコミット・プッシュをおこなえば良いのですが、そうするとリモートリポジトリの履歴に余分なコミットが増えてしまいます。
履歴が見づらくなるのもありますし、一人で使用しているリポジトリであればまだ良いのですが、共有リポジトリの履歴に余分なコミットを増やしてしまうのは他の人に迷惑になるような気がするのですが、自分が作ったブランチであれば気にする必要ないでしょうか?
後でマージしてブランチを削除するとしても、コミットは残ってしまいますよね?

また、途中でコミットする場合、コミットメッセージは「作業A 途中1」「作業A 途中2」「作業A 途中3」みたいな感じで良いものでしょうか?

尚、リセットや強制プッシュを使用すれば履歴をきれいにする事は可能ですが、危険が伴いますし、ローカルならともかくリモートへのプッシュ後に履歴をいじるのは良いのだろうかという疑問があります。

企業などで複数人で共有リポジトリを使用されている方に、どのような運用をされているかお聞きしたいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+2

こんにちは。

セキュリティルール的に許容されるのであれば、共有のリモートリポジトリとは別に、自分専用のリポジトリを用意し、ローカルにはその両方をリモートとして追加しておき、本作業ブランチは通常リモートリポジトリへ、WIPブランチはアップストリームとして自分専用のリポジトリへ、とする方法があります。こうすることで、共有リモートリポジトリにはダーティなコミットを作らずに作業をリモートへ移すことが可能になります。一つのリモートに対してローカルリポジトリを2つ作って、その間で同期するようなイメージです。作業がまとまり次第、squashrebaseでコミットを整理し、それを共有リモート側のブランチに上げることができます。
同じ理屈で、自分がGitHubで運用しているオープンソースリポジトリでもWIP作業の退避用にプライベートリポジトリを用意するということをやっていますが、便利ですよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/01 09:23

    ありがとうございます。
    やはりリポジトリを別にしておられる方もいらっしゃるのですね。
    参考になりました。

    キャンセル

checkベストアンサー

+1

そのブランチを自分しか使っていないのであれば、もっとrebaseを使ってよいと思います。
もちろん他人と一緒に使っているブランチでrebaseするのは危険ですが、自分しか使っていなければ、リモートにプッシュ後でもrebaseで履歴をまとめることができます。
小さい単位でコミットを重ね、後からrebaseして意味上のまとまりになるようにコミットをまとめるというのもやり方の一つです。すると何のためのコミットなのかがわかりやすくなり、後になって履歴からコミットをたどりたいときも、目的のものを探しやすくなります。

とはいえrebaseをどう捉えているかは人によって好みが別れますので、開発チームの方針に従ってください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/29 11:57

    回答ありがとうございます。

    rebaseの場合はリモートとの不一致がおこると思いますが、強制プッシュをおこなうという事でよろしいでしょうか?

    尚、自分用のブランチは共有リポジトリにプッシュせずに、自分専用の別のリポジトリのみにプッシュするのが一般的でしょうか?
    (他の人の混乱を避けるため)

    尚、まだチームでのGitの利用の経験がなくチームの方針というものも存在しない為、他の方の運用方法を参考にして方針を作成したいと思い、今回の質問をさせていただきました。

    キャンセル

  • 2018/09/29 19:48

    rebaseした後はgit push -fで強制プッシュします。するとリモート側のコミット履歴も書き換わります。
    また、別のリポジトリを使うというのはあまり一般的ではありません。適切な名前のブランチを作成すれば、何のために誰が使っているブランチなのかわかるため、混乱は起きません。
    チームでGitを使うときは、特定のバグ修正や特定の機能追加など、目的1つごとに新しいブランチを1個作ることが多いです。

    キャンセル

  • 2018/10/01 09:14

    ありがとうございます。参考になりました。

    キャンセル

0

仮に今やっている作業をBとします。
また、作業用ブランチを使いまわすというという前提をとります(以前に、作業Aで利用したとする)。

1. 作業用ブランチを最新にする(作業Bの直前の状態にする)。

作業Bを保存したい場合、その前に作業を始める直前のコミットを作業用ブランチにマージします。作業用ブランチを最新にするわけです。これが作業Bの起点になります。これをしておかないと、以前の作業...たとえば作業Aの内容まで作業Bのコミットに含まれてしまいます。

2. 作業用ブランチに作業Bをコミットする。

次に、作業用ブランチに作業Bの途中経過をコミットします。
最終的に、作業Bのコミットが複数になった場合、まとめておきます。

3. 元のブランチに作業Bのコミットをコピーする。

作業が終わったら、作業用のブランチから元のブランチにチェリーピックします。

Gitは個人的に使っているだけ(業務でみんなで使うのはSubversion...orz)なのですが、上記のやりかたで行けると思います。いかがでしょうか。

自分専用の作業用ブランチをきる場合、責任者や周りに許可をもらったほうがよいでしょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/01 09:20

    すみません。理解できませんでした。
    リモートにプッシュした作業用ブランチの履歴はどのようにきれいにするという事でしょうか?

    キャンセル

  • 2018/10/01 11:26

    すみません、読み漏れていました。確かに作業用ブランチは汚くなってしまうかもしれませんし、リモートの作業用ブランチへの強制プッシュ前提になってしまいますね。読み直してると、作業用ブランチを最新化するのもマージが必要だし、怖い気すらしてきました(^^; 申し訳ないです。

    キャンセル

  • 2018/10/02 11:28

    承知しました。ありがとうございました。

    キャンセル

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

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る