0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Git 勉強会2

Posted at

Git 勉強会2

全体目標

gitを使って開発ができるようになる

方針

基本的にはCLI(コマンドベース)
CLIができたらGUIだってできるだろうって考え

今回の概要

  • clone
  • push
    • pushの引数
  • branch
    • branchとは
  • checkout
    • ブランチの作成と移動を同時にする
  • fetch
  • merge
  • conflict
    • conflict時の対応
  • pull

コマンド集

clone

サーバからgitプロジェクトを取ってくるコマンド

git clone https://~ directory

directoryはgit cloneしたリポジトリをどこに保存するのかを指定できる

git clone https://github.com/facebook/react.git reactProject

これでreactProjectというディレクトリにgithubからダウンロードしたプロジェクトが保存されます

directoryは省略可能で、省略した場合はプロジェクト名のディレクトリが作成され保存される


push

自分の更新分をサーバにアップロードするコマンド

git push remote branch_name

pushの引数

  • remote
    • サーバアドレスのエイリアス(originが慣例)
    • 自由に設定可能
    • git push hoge masterのようにすればhogeで設定されているサーバにpushできる
  • branch_name
    • ブランチ名

git pushについて詳しくはブログにまとめてる

Link: git push


branch

ブランチを切るためのコマンド

git branch branch_name

ブランチとは

簡単に言うと特定のコミット(大概最新)から
「○○機能作成」「リリース準備」のように分岐して開発をするためのもの

Link: サルでもわかるgit入門 - ブランチとは


checkout

ブランチを切り替えるためのコマンド

Git 2.23から入ったswitchコマンドの方がわかりやすいので、そちらを使うといいです
https://gist.github.com/yuzu441/9cc191aa9bdfdd39ee5da07284f2d1b6/#file-git_study04-md

git checkout branch_name

個人的にはgit reset使うからあんまり使わないけど
変更したファイルを最新のコミットの状態まで戻す機能もある

git checkout appplication/app.js

ブランチの作成と移動を同時にする

branchで作って、checkoutで移動をするのは面倒くさい
checkoutコマンドの-bオプションを使えば同時にできる

git checkout -b branch_name

fetch

サーバのリポジトリから更新分を取ってくるコマンド

git fetch remote branch_name

基本的にはremotebranch_nameまで指定して使用する

git fetchにはリモートで削除されたブランチを
ローカルで持ってるリモートブランチ情報を削除してくれる機能もあるので
おまじないの用に--pruneオプションを付けておくといい

git fetch -p remote branch_name

-p--pruneの省略)


merge

ブランチとブランチを結合(マージ)するコマンド

git merge branch_name

mergeには

  • fast forward
  • non fast forward

の2種類があって

  • fast forward
    マージ元のブランチに続けるようにコミットをします
    (branchAの先頭にbranchBの更新分をつなげるイメージ)
  • non fast forward
    マージする際に、下の例のようなマージコミットというコミットをする

Merge pull request #1327 from TheBits/silent-merge


conflict

マージの際に競合(conflict)が起きることがあります

これはAの更新分とBの更新分が同じ場合いかに賢いgitのマージ機能といえど

  • どちらを残すのか
  • どちらとも残すのか
  • どちらも残さないのか

というのをgitが自動で処理をすることができません
そこであなたがgitに変わってマージ作業をしてやる必要があります

conflict時の対応

コンフリクトが起きた部分には

<<<<<<<<< HEAD
今のブランチの最新のコミットの状態
=========
マージをしようとしてるブランチの状態
>>>>>>>>> commit id

のようになっているので、残す所を残して、消す部分を消します
(<<<< head や =====, >>>> commitidは消してください)

今回は両方を残すことにします

今のブランチの最新のコミットの状態
マージしようとしているブランチの状態

編集後git addでコンフリクトが起きたファイルをaddして
すべてのコンフリクトが解決したら変更が確定したのでgit commitしましょう


pull

厳密に言うと違いますが
git fetchgit mergeを合わせてような機能です

git pull origin master

originリポジトリのmasterfetchして
現在のブランチにmergeするイメージです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?