2017-03-23 23 views
0

私はGitHubでプロジェクトをフォークしましたが、それがどのように機能するかを理解するために、後で非常に最初にコミットされた後、順番にそれらを引き出し、各ステップでリポジトリをブラウズするだけでなく、以前のコミットでdiffを見ることができます。Git - 最初からコードを引っ張り、コミット後にコミットします

だから基本的に、私は三つのことを行う方法を知っておく必要があります。

  • レポの初期状態に戻るを
  • 1だけで、私は、コードを編集する必要はありません(コミットプル私は後者のためにgit diff HEAD~1ような何かを行うことができると仮定している。この間のdiffがコミット参照し、前の1

  • )で表示します。しかし、私は他の2つ、特に最初のものをどうやってやるのか分かりません。

  • +0

    あなたは最新のコミットを引っ張ってから、GitHub DesktopやSouceTreeのようなGit GUIプログラムを使って、最新のコミットの前に行われた1つの異なるコミットを簡単に見ることはできませんか?各コミットは、前回のコミットと比較して、それぞれのコミットのすべての変更を表示します。 –

    +0

    さて、はい、それはある時点でリポジトリ全体を参照するのはかなり難しいでしょう。私は変更を見るしかありませんが、文脈全体(私が知る限り)は見ません。 – pie3636

    答えて

    2

    任意のGit GUI - gitk、GitUpGitKrakenGitHub Desktopなど - あなたが望むようにする必要があります。メインラインブランチを選択し、最初にスクロールします。次に、各コミットを選択すると、そのコミットと前のコミットの差分が表示されます。

    幸運を祈る!

    +1

    Linuxでは私は個人的に 'qgit'を好むので' t'を押すとファイルツリー*が表示されます。 。 – Unapiedra

    2

    git diffをdiffしたい場合は、コミット間の違いを確認するために使用することができますgit diff sha1 sha2。特定のコミットにローカルリポジトリを取得したい場合は、get reset <sha> --hardが必要です。一番上のコミットは、指定したshaになります。完了したら、リモートから再度プルして、ローカルのコピーをリモートマスターと同期させることができます。

    2

    "pull"という単語は、あなたがやりたいこととは無関係にGitで特別な意味を持っています。 (あなたの質問とはまったく関係ありませんが、git pullを使用しないことをお勧めします。git fetchとそれに続く2番目のGitコマンドを使用してください。git pullはあなたのためになります。 secondコマンドあなたはgit fetchで得たものに依存するので、git pullは時々間違っ 1を実行している場合があります)

    を使用すると、元のようにリポジトリなどへのアクセスを持っていたら。それをフォークする必要はありません。これは本当に痛いことではありません。適切なGitクライアントを使用してローカルマシンにgit cloneする必要があります。これにより、すべてのものをローカルで完全にコピーできます。ここでは、git checkoutを使用して任意のコミットを抽出し、git logを使用してコミットを表示することができます(またはgitkまたは一部のGUIを表示することがあります。場合によってはgit checkoutもコミットします)。

    +0

    クローンの代わりにフォークしました。なぜなら後で寄稿して引き出しをしたいからです。チェックアウトとgitログを使用する際の問題は、何百ものコミットがあることです。ログ全体をスクロールするのはちょっと面倒です。ちょっと前にコミットする方法があるのだろうかと思っています。 – pie3636

    +1

    はい、これらの目的のために後でフォークが必要になるでしょう。しかし、Gitでコミットを1つ前に進めるのは難しいです。後のコミットから後のコミットに移る方がはるかに簡単です。非常に最初のコミットを見つけたい場合は、最後に表示されたものにまっすぐに進みます。 Linuxシェルで 'git log'を使ってこれを行うには、他のLinuxツールを使います:' git log --oneline |例えば、「テール」と呼ばれる。 (もっと多くのツールがありますが、これはあなたが始められるようにすることができます) – torek

    1

    torekJamieの回答は、あなたの質問にもっと適しています。しかし、本当に欲しかったら、コミットごとにdiff /パッチを簡単に生成することができます。

    本当にしたい場合は、コミットごとにパッチを生成できます。

    git format-patch $(git rev-list --max-parents=0 HEAD)..HEAD 
    

    これにより、2番目のコミットから最後のコミットまでの1つの「パッチ」ファイルが作成されます。各コミットを個別に検査できます。

    関連する問題