2012-01-07 22 views
10

私はここで読んでいますが、たくさん検索しましたが、答えが見つかりませんでした。ブランチと同じようにコミットを切り替える方法はありますか?a;b;cここでcは私です最後のコミット、私はコミットをaに切り替えることはできますか?または、git diffを実行して手動でファイルを変更する必要がありますか?Git間でコミットを切り替える

+1

ブランチ_is_コミット(シンボリック名でコミットしてもコミットします) – fge

+1

[私のgitリポジトリを特定のコミットに切り替えるにはどうすればいいですか?](http://stackoverflow.com/questions/4940054/how -c -i-switch-my-git-repository-to-a-particular-commit) –

答えて

12

git checkout aと入力してください。または、おそらくより便利には、git checkout -b mybranch aをチェックアウトするaを新しい支店としてmybranchとしてください。

あなたはbcを元に戻したい場合は、git revertを使用することができ、またはあなたの現在のブランチの履歴から完全に削除するために、あなたはgit rebase -i a、それらを捨てることができます。

git diffを使用する場合でも、手動で行う必要はありません。パッチの作成と適用を自動化するには、git format-patchgit apply、およびgit amをチェックしてください。

+0

ブランチを作成し、それらの間を切り替えた場合にのみ、コミットを切り替えることはできないと思いますか?私は正しい? – Uffo

+0

あるいは、 'git revert b(コミットIDを表す)'を実行できますか? – Uffo

+1

'git reset -hard'もあります。 – svick

3

作業するリビジョンからブランチを作成することができます。リビジョン番号は

git branch -f branchname rev 
+0

これは、ブランチを作成した場合にのみ有効ですが、マスターブランチのみを持っていて、コミットの切り替えが必要な場合はありません。 – Uffo

+0

マスターブランチが古いバージョンを指し示すように強制できます。マスターをブランケットとして使用する – Shraddha

1

Gitがcommitishの定義を使用して、以前のリビジョンから

git log 

ブランチを使用して見ることができます。

がコミットまたはタグオブジェクト名を示し

commitish:としてgitがcommitishを定義します。 commit-ish 引数を取るコマンドは最終的にコミットオブジェクトを操作したいが、自動的に はコミットを指すタグオブジェクトを参照解除する。

これは、ブランチがコミット・アイと扱われることが多いため、やや不完全なようです。

基本的に、sha-1ハッシュを持つものはすべてチェックアウトできます。

関連する問題