Githubリポジトリで最も古いコミットに移動するにはどうすればよいですか?


151

GitHubで、大規模なオープンソースプロジェクトの最初のコミットに移動する簡単な方法はありますか?

プロジェクトには、今日の時点で13,000以上のコミットがあります。最初のコミット(または最初のコミット)に到達するために、コミット履歴ページの「古い」ボタンを何百回も押したくありません。


2
代わりに、リポジトリを複製してローカルに移動することを検討しましたか?
jub0bs 2015


インサイト/コントリビューターは、マスターブランチへのコミットの全範囲を示しています。
ToolmakerSteve

回答:


101

リポジトリのクローンを作成し、コマンドラインで開いて実行します $ git log --reverse

これにより、コミットが逆の順序で表示されます。

次に、最初のコミットのID(オブジェクト名)を取得したら、それをgithubで表示できます。 https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


15
単純で合理的な答えを見つけるために、どれほど奇妙で複雑すぎるビジネスをふるいにかけなければならなかったのか、信じられません。ありがとう。
サミッチ2017年

7
1つの微調整、onelineこれに引数を追加git log --reverse --onelineして、リストとして表示できるようにします
rynmrtn

また、Windowsコマンドプロンプトを使用していて、Vim(?)に夢中になりたくない場合は、を使用してくださいgit log --reverse --oneline | more。標準のmore動作、Ctrl + Cで終了します。
シンジャイ

82

これを行う明確なUIはありませんが、コミットログの1つをページに移動するための正しいURLを構築する方法があります。

dotnet / coreclrリポジトリの最初のコミットを見つけたいとしましょう。まず、リポジトリ内のコミット数をメモします。現在の数は16,634です。次に、コミットのリストに移動し、「古い」を1回クリックします。URLは次のようになります。https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

+34パーツに注目してください。これがスキップされるコミットの数です。これをページあたり16,634-1-35に変更すると、このURLが表示され、coreclrコミット履歴の最初のページに移動します。


4
これを行うためにブックマークレットを作成しました。github.com/bpceee/oldest
bpceee

これは、プロジェクトのコミットリストで最初のコミットを表示するのに適した回答です。
コイル

これは、受け入れられた回答で提案されている方法よりもはるかに高速です;-)
aderchox

46

2015年2月:GitHubで、大規模なオープンソースプロジェクトの最初のコミットに移動する簡単な方法はありますか?

はい、今あります!(意味:リポジトリのクローンを作成せずgit log、ローカルクローンに適用しない

2017年1月以降、GitHubに「改善された非難ビューでファイル履歴をより速くナビゲートする」ことができます

回帰をデバッグしている場合でも、コードが現在の形になった方法を理解しようとしている場合でも、特定の変更前のファイルの外観を確認したい場合がよくあります。
改善された非難ビューを使用すると、ファイルの完全な履歴を表示せずに、ファイルの一部が時間の経過とともにどのように変化したか簡単に確認できます

これは、git / gitリポジトリ自体の元の最も古いコミット(47K +コミット)に戻るデモです... 3回のクリックで!

デモgit / git

ここでの秘訣は、最初の(または非常に早い)コミットで見つかる可能性が高いファイルをのように選択することですREADME.md


8
これは通常は機能しますが、リポジトリが作成されたときに存在していたファイルがわかっていて、最初から何度も変更されていない行を見つけることができると想定しています。
Wilfred Hughes

1
@WilfredHughes Goにこのメソッドを使用して、たまたま楽しいイースターエッグである最初のコミットに 32,986コミット戻りました。この場合、readmeは最初まで戻らなかったBrowse filesため、別のファイルの注釈を押して開くことでこのプロセスを繰り返しました。
andrewarchi 2017年

@andrewarchiよくできました。実際、最初のいくつかのコミットはイースターエッグです:stackoverflow.com/a/21981037/6309
VonC

私はこれを「回避策」と考えますが、@ schmalzyの答えはより直接的です。
ジミー・ボッセ

@JimmyBosse 回避策ではありません。元の質問への答えです。A git logは、(潜在的に巨大な)リポジトリをローカルで複製した場合にのみ機能します。最初のコミットに「ナビゲート」したい場合は、これで完了です。
VonC 2017

37

nodejsプロジェクトの初期のコミットの1つを見たかったのです。次のことを行いました。

  1. サイトnodejsにアクセスしました。この時点で、コミットの総数は約23千(正確には23652)であることがわかりました。

ここに画像の説明を入力してください

  1. 次に、そのコミットリンクをクリックすると、以下に示すようにhttps://github.com/nodejs/node/commits/masterに移動しました。

ここに画像の説明を入力してください

  1. 下にスクロールすると、[新しい]ボタンと[古い]ボタンが見つかりました。[新しい]ボタンは無効になっています。古いボタンをクリックすると、https://github.com/nodejs/node/commits/master?after = de37ba34c5d6f3a2d18daf482f850be8fddb4621 + 34に移動しました

  2. 次に、URLに+34があることを確認します。これを23000に変更しました(確認したコミット数が23000であるため)。だから私が試した新しいURLは

https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+23000

  1. 今、私はほとんどそこにいます。さらに数回の反復または古いボタンのクリックにより、希望する場所に到達しました。

2
これはあなたの上の2つの答えの複製ですか?stackoverflow.com/a/49647826
エドリック

2
重複回答ですが、私は画像が好きで、それがより魅力的になります。
winner_joiner

7

initブックマークレットを使用して、GitHubリポジトリの最初のコミットに移動できます

初期化

ブックマークレット迅速最初のレポのコミットにあなたを取得します。

概観

リポジトリ内の最も古いコミットにすばやく移動できることは非常に役立ちます。先に進み、ブックマークレット(リンク)をブックマークバーにドラッグし、リポジトリの最初のコミットに移動したいときにクリックします。

使用法

特定のリポジトリのランディングページ(e.g. like the one you're on)に移動してブックマークレットをクリックすると、最初のページに移動します(初期コミット)。デフォルトではmasterブランチを追跡しますがbranch、ランディングページでを変更すると、ブランチの最初のコミットに移動します。

GitHubのREADME.mdから取得


免責事項:この回答を投稿する数分前に、小さなReadmeの更新を初期化しました。


7

次のコマンドを使用すると、コミットの最初のページに移動できます。これは、Chrome開発ツールのスニペットとして保持しています。

function githubFirstCommitsPage() {
  let el = document.querySelector('.repository-content');
  let base = el.querySelector('a[data-pjax]').href;
  let count = el.querySelector('.commits .num')
    .textContent
    .trim()
    .replace(/[^\d\.\-]/g, "");
  count = count-36;
  let sha = el.querySelector('.commit-tease-sha')
    .href
    .split('/');
  sha = sha[sha.length-1];
  window.location = `${base}?after=${sha}+${count}`;   
}

githubFirstCommitsPage();

1
ありがとうございました!あなたがそのようなスニペットを保存できることを知りませんでしたので、あなたの投稿は二次元で役に立ちました。
bmacnaughton

6

git log --reversegit のコマンドを使用する必要があります。

これにより、指定したリポジトリのコミット履歴が逆の順序で返されます(古いものから新しいものへ)。

次に、いくつかのsed魔法の助けを借りて、最初のコミットの日付のようなものを持つことができます(これは、私が常に自分のために必要であると私が見たものです)。

git log --reverse | sed -n 3p

最終的には、これも自動化する必要があるかもしれません(ほとんどの場合、コマンドを入力するのは退屈であるか、単に覚えておくのが難しいため)。このようなシェルスクリプトが役に立ちます。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.