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

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

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

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

Q&A

解決済

3回答

2075閲覧

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

haru853

総合スコア38

Git

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

0グッド

0クリップ

投稿2018/09/29 00:22

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

(例)

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

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

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

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

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

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

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

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

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

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

guest

回答3

0

こんにちは。

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

投稿2018/09/29 17:24

tamoto

総合スコア4103

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

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

haru853

2018/10/01 00:23

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

0

ベストアンサー

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

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

投稿2018/09/29 01:10

Udomomo

総合スコア1524

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

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

haru853

2018/09/29 02:57

回答ありがとうございます。 rebaseの場合はリモートとの不一致がおこると思いますが、強制プッシュをおこなうという事でよろしいでしょうか? 尚、自分用のブランチは共有リポジトリにプッシュせずに、自分専用の別のリポジトリのみにプッシュするのが一般的でしょうか? (他の人の混乱を避けるため) 尚、まだチームでのGitの利用の経験がなくチームの方針というものも存在しない為、他の方の運用方法を参考にして方針を作成したいと思い、今回の質問をさせていただきました。
Udomomo

2018/09/29 10:48

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

2018/10/01 00:14

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

0

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

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

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

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

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

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

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

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

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

投稿2018/09/29 03:04

編集2018/09/29 03:11
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

haru853

2018/10/01 00:20

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

退会済みユーザー

2018/10/01 02:26

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

2018/10/02 02:28

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問