web-dev-qa-db-ja.com

特定のリビジョンへ

あるプロジェクトのgitリポジトリをクローンしました。ファイルを初期状態にして、ファイルを確認したときにリビジョン2、3、4に移動できますか。プロジェクトがどのように進化してきたかについての概要を知りたいのですが。

429
xralf

特定のコミットをチェックアウトするにはgit checkout <sha1>を使用してください。

660
Marcelo Cantos

特定のバージョン/コミットに移動するには、以下のコマンドを実行してください。 git log --oneline -n 10から入手できるハッシュコード

git reset --hard HASH-CODE

- 特定のバージョン/コミットにリセットした後、破棄されたすべてのコミットを元に戻したい場合はgit pull --rebaseを実行できます。

33
J4cK

gitkのようなツールを使ってプロジェクトの履歴をグラフィカルに表示することができます。とにかく走れ:

gitk --all

特定のブランチをチェックアウトしたい場合は、

git checkout <branch name>

特定のコミットでは、ブランチ名の代わりにSHA1ハッシュを使用してください。 (ツリーをナビゲートするための他のオプションを見るには、 Git Community Book Treeishes をご覧ください。

git logには、詳細な履歴や要約履歴も表示するための一連のオプションがあります。

コミット履歴で forward を移動する簡単な方法はわかりません。直線的な歴史を持つプロジェクトは、おそらくそれほど一般的ではありません。あなたがSVNやCVSで持っていたような "改訂"という考えは、Gitではそれほどうまくマッピングできません。

15
Mat

コミットのSHA1キーを使用して、次のことができます。

  • まず、特定のファイルに必要なコミットを見つけます。

    git log -n <# commits> <file-name>

    これはあなたの<# commits>に基づき、特定のファイルに対するコミットのリストを生成します。

    ヒント:どのコミットを探しているのかわからない場合は、git diff <commit-SHA1>..HEAD <file-name>コマンドを使用するのが良いでしょう。このコマンドは、現在のバージョンのコミットと、特定のファイルに対する以前のバージョンのコミットとの違いを表示します。

    注:コミットのSHA1キーはgit log -nのリストの中でフォーマットされています。

<SHA1 id>をコミットする

  • 次に、希望のバージョンをチェックアウトします。

    必要なコミット/バージョンが見つかった場合は、単にgit checkout <desired-SHA1> <file-name>コマンドを使用してください。

    これにより、指定したファイルのバージョンがステージング領域に配置されます。ステージング領域から取り出すには、単に次のコマンドを使用します。reset HEAD <file-name>

リモートリポジトリが指している場所に戻るには、単にコマンドgit checkout HEAD <file-name>を使います。

5
Wizard

私はプロジェクトがどのように発展したかを見るためにコマンドラインpythonツールを作成しました。それが役立つかどうかがわかります。このツールは次のURLのGitでホストされています

https://github.com/yoganand/git-evolver

3

私は、私たちがマスターブランチを持っていて、それから17.0と呼ばれる別のブランチと17.0の内側にコミットハッシュno say "XYZ" がありました。そして、顧客はそのXYZリビジョンまでのビルドを与えられます。今、私たちはバグに出会いました、そしてそれはその顧客のために解決される必要があります。したがって、その「xyz」ハッシュまでその顧客用に別のブランチを作成する必要があります。だからここに私はそれをやった方法です。

まず、自分のローカルコンピュータにその顧客名のフォルダを作成しました。そのフォルダが作成されたら、このフォルダ内のコマンドに従って、顧客名が「AAA」であるとします。

  1. git init
  2. git clone このコマンドを実行すると、マスターブランチに入ります。だから希望のブランチに切り替えます
  3. git checkout 17.0 これであなたのコミットがあるブランチに行くことができます
  4. git checkout これはあなたのリポジトリをそのハッシュコミットまで使います。そのコミットハッシュに変更されたurブランチの名前を参照してください。このハッシュにブランチ名を付けます
  5. git branch ABC これはあなたのローカルマシン上に新しいブランチを作成します。
  6. git checkout ABC
  7. git Push Origin ABC これはこのブランチをリモートリポジトリにプッシュし、gitサーバー上にブランチを作成します。これで終わりです。
1
ashish

1つの方法は、これまでにパッチに対して行ったすべてのコミットを作成することです。最初のコミットをチェックアウトして、読み終わったら順番にパッチを適用してください。

git format-patch <initial revision>を使用してからgit checkout <initial revision>を使用します。あなたはあなたのディレクターにパッチである4桁の数字で始まるファイルの山を手に入れるべきです。

リビジョンを読み終えたら、git apply <filename>を実行してください。git apply 0001-*とcountのようになります。

しかし、なぜパッチそのものを読みたくないのでしょうか。私は興味があるのでこれをあなたのコメントに投稿してください。

gitのマニュアルも私にこれを与えます:

git show next~10:Documentation/README

次にDocumentation/READMEファイルの内容を、最後の10回目の最後のコミットで現在のものとして表示します。

git blame filenameを見れば、各行がコミットハッシュ+作成者に関連付けられているリストを見ることができます。

1
Alex

私はどこにでもあるように見えるコマンドラインツールtigを言及したいです。プロジェクトの改訂履歴のタグ表示などを伴うテキストグラフィカルなツリービューです。 sshなどで使えます。超便利。

1
std''OrgnlDave