[解決済み] Git コミット間の行き来をする方法
質問
Gitについて、初歩的な質問です。
あるブランチの履歴を行ったり来たりする必要があります。 つまり、すべてのファイルをある古いリビジョンにあった状態にし、それからリポジトリの最新の状態に戻す必要があるのです。コミットする必要はありません。
SVNでは、次のようになります。
svn up -r800
でリビジョン800まで、そして
svn up
を実行して、リポジトリと同期させる。
戻りたいコミットのハッシュはわかっているので、試しに
git reset <hash>
で、そこに到達するようです。しかし、その後、私は試してみました
git pull
が、これはコンフリクトを訴えます。
では、ブランチの履歴を移動する適切な方法は何でしょうか?
私はSVNの観点から考えているので、何か良いチュートリアルを紹介してくれるのを躊躇しないでください。なお、私はすでに http://git.or.cz/course/svn.html と http://www.youtube.com/watch?v=8dhZ9BXQgc4 .
ありがとう、オンドラ。
どのように解決するのですか?
私も元svnユーザーで、今はすべてのプロジェクトでgitを使っています。
gitを使う場合、svnで使われているクライアント・サーバ・アーキテクチャから考え方を変える必要があります。svn では、すべての変更にサーバーとの接続が必要です。gitでは、リポジトリは作業ディレクトリの中にあります。レポのアクションのたびに接続する必要はありません。
のみを使用します。
git push
と
git pull
でレポと同期させます。rsyncや他のバックアップソリューションを使って、2つの場所に全く同じコンテンツを持たせるようなものだと考えてください。ちょうど、外付けのバックアップ用ハードディスクを接続し、その中のコンテンツをメインのコンテンツと同じにするようなものです。これは
git pull
と
git push
.
履歴を遡りたいだけなら
git checkout
. リビジョン ID を見るには
git history
. Linux を使っている場合は
gitk
を使って、リビジョンツリーを見ることができます。Windows では、tortoise git はリビジョングラフを使用して表示することができます。
最新のリビジョンに戻るには
git checkout master
. 何かコマンドを実行する前に、必ず
git status
. このコマンドは、現在のレポの状態について知っておくべきこと、そしてそれを正しくするために必要なアクションを表示します。コマンドを実行する前に
git pull
と
git push
を作るのがよいでしょう。
git status
の結果は、テキストを含む
working directory clean
.
ファイルを以前のリビジョンに戻す必要がある場合、それを行うには
git merge
. これをファイルに実行する前に、最初に
git diff
. 例
git diff rev1:rev2 filename
. 2つのリビジョン間の差分を出力します。rev1 の変更は rev2 の変更に置き換えられます。つまり、revert を行うには、rev2 が rev1 よりも古いことになります。diff の結果に満足したら、次のようにしてください。
git merge
で行う場合、単に
diff
を
merge
で、他のすべてのパラメータは同じままです。
これがあなたの助けになることを願っています。主なキーは、作業ディレクトリがあなたのレポであることを確認することです。これを理解することで、git の能力をフルに発揮することができます。幸運を祈ります。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedmaster -> master (non-fast-forward) と git ! [拒否] master -> master (フェッチファースト)
-
解決策正しいアクセス権を持っていることと、リポジトリが存在することを確認してください。
-
ファイル名が長すぎるため、作業ツリーをチェックアウトできない警告が表示されました。クローンには成功しましたが、チェックアウトに失敗しました。
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
-
[解決済み] JenkinsのGitプラグイン。特定のタグをビルドするには?
-
[解決済み] gitにもsvnのような無視コマンドはありますか?
-
[解決済み] gitでコミット間を前進・後退させる方法は?
-
[解決済み] Gitブランチの名前をローカルとリモートで変更できますか?重複
-
[解決済み] IntelliJのShelveとGit stashの違いは何ですか?