今週は私が技術共有をする番です。考え抜いた結果、今週の技術共有のテーマとして Git を選ぶことにしました。理由は 2 つあります。1 つは最近 Git を使用している際にいくつかの問題が発生したため、具体的な内容は後述します。2 つ目は、毎日 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