Help us understand the problem. What is going on with this article?

【 Git 】特定のcommitをチェックアウト

More than 3 years have passed since last update.

備忘録

githubから特定のcommitをローカルにcheckoutしてくるだけなら以下のコマンドだが
$ git checkout {sha1}

毎度別コマンドで諸々確認しつつになる。毎回忘れて調べるのでメモしておく
(以下の手順でやるわけではなくあくまで発生しうる作業の羅列)

発生する作業

  • リモートレポジトリをローカルにクローン
  • Current Branch を確認
  • 該当リモートブランチがあるかを確認
  • 該当リモートブランチをローカルにも一応そのブランチを切ってからそこにcheckout
  • Current Branch を確認
  • ローカルブランチにリモートブランチの特定のcommitをcheckout
  • (確認作業)
  • 確認作業やdotfile(ex .DS_STORE)によってローカルレポジトリに意図しない変更が追加されていないかを確認
  • 上記で追加されている場合は変更をstash
  • ローカルブランチにリモートブランチの特定のcommitをcheckout
  • (確認作業)
  • 確認作業後、特にリモートブランチに加える変更がなければstashしていた変更を削除
  • Finish upとして、ローカルリポジトリのの状態を確認
  • Detached Headになっている場合は最新のリモートレポジトリをチェックアウトしなおす
  • 終了

リモートレポジトリをローカルにクローン

$ git clone {url to source repo}

Current Branch を確認

$ git branch

該当リモートブランチがあるかを確認

$ git branch -a

該当リモートブランチをローカルにも一応そのブランチを切ってからそこにcheckout

例えば以下ような状態の場合

$ git branch -a
* master 
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/develop

以下のようになる
$ git checkout -b develop origin/develop

ローカルブランチにリモートブランチの特定のcommitをcheckout

$ git checkout <sha1>

以下のようなワーニングがでるが一旦無視

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

確認作業やdotfile(ex .DS_STORE)によってローカルレポジトリに意図しない変更が追加されていないかを確認

上記の作業後続けて別commitをチェックアウトしようとすると以下のようにエラーとなる

error: Your local changes to the following files would be overwritten by checkout:
    app246/.DS_Store
Please, commit your changes or stash them before you can switch branches.
Aborting

その場合は変更をstash(一時退避)
$ git stash

確認
$ git status

以下のようなメッセージならOK

nothing to commit, working directory clean

確認作業後、特にリモートブランチに加える変更がなければstashしていた変更を削除

stashしている変更を確認

$ git stash list
 stash@{0}: WIP on sub: 195f25f add blah
 stash@{1}: WIP on sub: d34ee25 remove blah

削除していいstashは削除
$ git stash drop stash@{0}

すべて削除する場合は
$ git stash clear

Detached Headになっている場合は最新のリモートレポジトリをチェックアウトしなおす

git statusすると以下のようなワーニングが出てきがち

HEAD detached at 4ee25f6
nothing to commit, working directory clean

その場合は最新のリモートリポジトリをチェックアウトしなおす
$ git checkout develop

以上

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした