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

Gitの基本用語 + よくある事故

Gitに初めて触れる方や、事故ってあたふたする方に向けて書きます。
(自分の認識が間違ってないか整理する為にも)

  • 自分なりの解釈でざっくりと書きます。
  • しっかりと理解したい方や、より詳しく知りたい方には向かないかも知れません。
  • Sourcetreeを使用する前提で解説していきます。
  • 私も初心者につき、間違っている箇所があるかも知れません。

基本用語・操作

リポジトリ

Gitで管理する対象になっているディレクトリのこと。
このディレクトリ下のファイルに変更があると、差分として表示される。

以降でリモートとかローカルとか言っているのはそれぞれリモートリポジトリローカルリポジトリのこと。

クローン

全てはここから始まる。(多分)

概ね、リモートリポジトリをローカルにコピーすること。
この操作でローカルにコピーしてきたものをローカルリポジトリと呼ぶ。

ダウンロードだと思って良い(と思う)。

ブランチ

枝。ゲームで言うストーリー分岐(?)みたいなもの。
ゲームと違うのはエンディングが大体ひとつしかない(全部最後はmasterにマージされる)事。
実装する機能毎や作業者ごと等、分ける際の考え方は色々ある。

よく使うブランチ名は以下みたいな感じ。
- master

その名の通り。リリース用のものであることが多く、だいたいプロテクトが掛けられている。そのくらい大切なものなので、触ることがあれば細心の注意を払うこと。
- develop

開発用のブランチ。 developから、各機能や作業事にブランチを切って作業し、終わったらdevelopへマージする。(という運用が多いと思う)

  • feature/○○○○
    例えばfeature/add_input_view とか。featureというフォルダに、add_input_viewというブランチがあるイメージ。
    Sourcetreeでは実際にフォルダみたいに表示されるので、単純に見やすい。他にもfix/○○○○(修正)とかも使うかも。この辺はプロジェクトによって大きく変わる。

※詳しくは[日本語訳]A successful Git branching modelとかを見て欲しい。

チェックアウト

ブランチの切り替え。ソースツリーなら何も意識しなくてもやってる。

コミット

ブランチに対して、変更を確定させること。
ゲームで言うセーブ。作業が一段落着いたら行う。
後で戻る事や、変更内容を確認するために
なるべく細かくコミットしておく方が(個人的には)好き。

スタッシュ

変更したものを一時的に退避させて保管できる機能。
めちゃくちゃ使う。
コミットするほど作業してないけどブランチを切り替えたい時とかに。
スタッシュに積むとか言う。

プッシュ

ローカルの状態をリモートへ反映すること。プルの逆。

プル

リモートの状態をローカルへ反映すること。プッシュの逆。

フェッチ

リモートの状態を確認すること。
フェッチを行うとプルする必要のあるリポジトリが分かるので、事故(こういうの)を防ぐことが出来る。

マージ

ブランチ同士を結合すること。そのまま。

コンフリクト

マージされるふたつのブランチの差分がぶつかり合う事。
同じ箇所を複数のブランチで修正すると起こる。
このままではマージできないので、解決する必要がある。
解消方法は大きくわけて3通りある。
- 相手(マージする先)の変更を使う
- 自分の変更を使う
- 手動でいい感じに修正する

コンフリクトしないように、developを作業ブランチにこまめに取り込もう。

リバート

特定のコミットの内容を打ち消す事。
正確には、特定のコミットの逆のコミットをすること。
ミスった時や、特定のコミットが不要になった時に使う。

チェリーピック

特定のコミットを今いるブランチに取り込むこと。
時々つかう。

よくある事故(経験したもの)

※他にいい方法があればお教えいただきたく存じます。

コミットした内容を取り消したい

プッシュしていない場合
→めんどくさいのでローカルブランチを一度消して、
 もう一度リモートからチェックアウトする。

プッシュ済みの場合
→リバートする。

リモートのコミットをプルせずにコミットしてしまった

これはめちゃくちゃやってしまってました。
こうならないように、まずはフェッチしてからコミットする癖をつけましょう。
もうやってしまった場合は↓の手順で解決してます。

スクリーンショット 2019-10-21 19.45.55.png
こんな表示になってると思うので、この状態でブランチを切る。(例えばHogeとか)
その後、ローカルブランチを削除してもう一度リモートからチェックアウトし、
hogeブランチのコミットをチェリーピックで取り込んで完了。


最後までご覧いただきありがとうございました!
Git触りたての方の参考になれば幸いです!

気になるところや間違っているところなどございましたら、お教えいただきたく存じます。

akaneburyo
iOSエンジニアです。 初心者が詰まりがちな事やその他自分が経験したこと、作ったものなどを投稿します。
https://twitter.com/Akaneburyo
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
ユーザーは見つかりませんでした