今週は私が技術シェアを担当する番です。いろいろ考えた結果、今週の技術シェアのテーマとして git を選ぶことにしました。理由は二つあります。一つは最近 git を使用している際にいくつかの問題が発生したため、具体的な内容は後述します。もう一つは、毎日 git を使っているものの、いくつかの基本的な概念についてはまだ曖昧な部分があり、今回のシェアを通じて git をさらに理解したいと思っています。
git の原理#
workspace: 作業領域(現在の開発位置)
git pull
: リモートリポジトリから最新のコードを作業領域に取得する =>git fetch
+git merge
git diff
: 変更されたがステージされていないファイルを確認する
index: ステージングエリア
git add
: 作業領域での変更内容をステージングエリアに追加する
repository: ローカルリポジトリ
git commit
: ステージングエリアの内容をローカルリポジトリにコミットするgit fetch
またはgit clone
: リモートリポジトリからコードをローカルリポジトリに取得 / クローンする
remote repository: リモートリポジトリ
git push
: ローカルリポジトリの内容をリモートリポジトリにプッシュする
よくある質問#
- git push origin master は具体的に何をしているのか?
ローカルのmaster
ブランチの内容をorigin
にプッシュし、origin
に同名のmaster
ブランチを作成します。
完全なコマンド:git push origin master:master
=> git push <リモートホスト名> <ローカルブランチ名>:<リモートブランチ名>
- git merge と git rebase の違い
例:test ブランチを master ブランチにマージする
git merge
の結果
git rebase
の結果
最近遭遇した問題#
- ローカルプロジェクトがエラーを出し、以前のバージョンに戻りたい => ローカルリポジトリを以前のバージョンに戻す
git reset --hard/soft [戻したいコミットポイント]
- すでにリポジトリにプッシュしたコミットを取り消す => リモートリポジトリを以前のバージョンに戻す
git reset --hard [戻したいコミットポイント]
git push origin HEAD --force