回答:
git checkout <sha1>
特定のコミットをチェックアウトするために使用します。
git log
現在、最初のコミットのみを表示していますが、次のコミットのsha1を見つけることはできますか?
git log --oneline
参照用に出力を実行してテキストファイルに貼り付ける必要があります(出力が提供する省略されたsha1の合計は一意であることが保証されています)。別のオプション、あなたの歴史が線形であるならば、最初までコミットからあるどのように多くのコミットを把握することでmaster
、使用するgit checkout master~543
(543のコミットがある場合)、そしてgit checkout master~542
、など
特定のバージョン/コミットに移動するには、次のコマンドを実行します。あなたが得ることができるハッシュコードgit log --oneline -n 10
git reset --hard HASH-CODE
注 -特定のバージョン/コミットにリセットした後git pull --rebase
、破棄されたすべてのコミットを取り戻したい場合は、を実行できます。
reset
はグラフの特定のポイントをチェックアウトするだけでなく、現在チェックアウトされているブランチも移動することに注意してください
reset
では、保留中のすべての変更が破棄されます。
git pull --rebase
リポジトリ用のリモートがあり、それが最新の場合にのみ機能します。
などのツールを使用して、プロジェクト履歴のグラフィカルビューを取得できますgitk
。ただ走れ:
gitk --all
特定のブランチをチェックアウトしたい場合:
git checkout <branch name>
特定のコミットでは、ブランチ名の代わりにSHA1ハッシュを使用します。(参照TreeishesでGitのコミュニティブック良い読み物である、あなたのツリーをナビゲートするための他のオプションを表示します。)
git log
詳細または要約の履歴を表示するためのオプションのセットもすべてあります。
コミット履歴を進める簡単な方法は知りません。線形の履歴を持つプロジェクトは、おそらくそれほど一般的ではありません。SVNやCVSのような「改訂」というアイデアは、Gitではそれほどうまくマッピングされていません。
コミットの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>
私はマスターブランチがあり、17.0という別のブランチがあり、この17.0内に「XYZ」というコミットハッシュが存在する状況でした。そして、顧客はそのXYZリビジョンまでビルドを与えられます。今、私たちはバグに遭遇しました、そして、それはその顧客のために解決される必要があります。そのため、その「xyz」ハッシュまで、その顧客用に別個のブランチを作成する必要があります。だからここに私がそれをやった方法があります。
まず、ローカルマシンにその顧客名のフォルダーを作成しました。そのフォルダーが作成されたら、顧客名が「AAA」であるとすると、このフォルダー内のコマンドに従って次のように発行します。
1つの方法は、これまでにパッチに対して行われたすべてのコミットを作成することです。最初のコミットをチェックアウトし、読んだ後、順番にパッチを適用します。
使用git format-patch <initial revision>
してからgit checkout <initial revision>
。パッチである4桁から始まるファイルが山積みになっているはずです。
リビジョンの読み取りが終わったら、次のgit apply <filename>
ように
git apply 0001-*
してカウントしてください。
しかし、なぜパッチそのものを読みたくないのか、本当に不思議に思います。私は好奇心が強いので、コメントにこれを投稿してください。
gitマニュアルでもこれが得られます:
git show next~10:Documentation/README
ドキュメント/ READMEファイルの内容を、次のブランチの最後の10番目のコミットで最新のものとして表示します。
またgit blame filename
、各行がコミットハッシュ+作成者に関連付けられているリストを表示することもできます。
特定のコミット済みコードを取得するには、そのコミットのハッシュコードが必要です。次の2つの方法でハッシュコードを取得できます。
git log
そのブランチでの最近のコミットを確認してください。コミットのハッシュコードと、コードのコミット中に残したメッセージが表示されます。ただコピーしてからgit checkout commit_hash_code
そのコードに移動した後、そのコードに取り組んで変更を加えたい場合は、で別のブランチを作成する必要git checkout -b <new-branch-name>
があります。そうしないと、変更が保持されません。
git log -n1
。しかし、git checkout
失敗しない限り、それは努力の無駄です。