2017-08-10 19 views
0

私は2つの目標を持っています。私は、自分の機能を扱う際にワークフローが必要です(マスターはエンタープライズgithubリポです)。gitブランチを最新の状態に保つための推奨ワークフロー

目標:

  • が最新のもので、私の枝をキープ

  • 私はgit diffgit show

私はgithubのに新しいですを使用して行われた変更を見ることができるように、私これを達成するためにいくつかのシナリオを試してみて、私を助けません。

最初は、私は新しい分岐(origin/masterを追跡)を作成し、コードを変更します。

私は変更をコミットし、この変更をgithubに公開するためにgit push originを使用します。

次に、私はPRを作成し、人々にコメントさせます。

私は良いフィードバックを得て、私はコードの変更を行い、私の最初のコミットの上にコミットします。

支店をorigin/masterと同期させるにはどうすればいいですか?

git pullでマージしてローカルブランチを更新しようとしました。それは大丈夫ですが、今私が行う場合git show私は私の変更が表示されません、私は最新のマスターコミットが表示されます。

git pull --rebaseを介してリベースしてローカルブランチを更新しようとしました。私はgit showを使って私の変更を見ることができますが、私のローカルとリモートブランチは同期していません。git push origin -fを使ってgithub PRを2回目の変更で更新する必要があります。

私は提案をいただきありがとうございます!

+1

あなたが言ったことはすべて正しいと思います。あなたの唯一の尋問は、あるコミットから別のコミットへのファイルの差分を見る方法であれば、IDE用のGitプラグインを入手することをお勧めしますか?たとえば、IntelliJは、同じブランチ内のコミットに対して、または他のブランチに対してもファイルを比較させることができます。コマンドラインよりもずっと良い。 –

+0

答えが問題を解決するのに役立ちましたか?はいの場合は、回答としてマークすることができます。それは、同様の質問をした他の人を助けるでしょう。 –

答えて

1

あなたがしていることは正しいアプローチです。 pullpull --rebaseの間には大きな違いがあります。それはgit fetch && git merge origin/master respを行います。 git fetch && git rebase origin/master。どちらも正しいアプローチです。その違いはツリーの履歴にあり、ほとんどの場合、むしろ使用するものは会社のポリシーです。

リベースを使用すると、常に履歴が変更され、強制的にプッシュする必要があります。マージでは、履歴は変更されませんが、最後にコミットがマージされます。

1つのコミットだけがプッシュされるとは思わないので、diffは1つのコミットではなく、ブランチ全体であるべきです。あなただけの差分を確認する必要がある場合は、実行することができます。

git show HEAD~1 

または GitのショーHEAD〜4..HEAD〜1

を最後(のを除いて最後の数のコミットのすべての変更を確認しますマージ)。

それとも、この

git diff --boundary HEAD~1..origin/master 

P.S:リベースとより多くの人が同じブランチで作業しているとき、力のプッシュはかなり危険なことのような何かを試すことができます。支店で働いているのが唯一の職場であることが確かであるときに押してください。

コメントにもいくつか問題がある可能性があります。どのようにGithubがGitlabに強制的なプッシュ後に完全に変更または削除された行についてのコメントを表示しないかはわかりません。

関連する問題