6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git勉強メモ

Last updated at Posted at 2016-08-11

リポジトリ

貯蔵庫の意味で、ディレクトリの変更を記録しておく場所。ローカルとリモートがある。

コミットしないファイルの設定(全ディレクトリ共通)

$ git config --global core.excludesfile ~/.gitignore_global

configで設定
--global core.excludesfileでコミットしないファイルは?
~/.gitignore_globalでそれはここにかいてありますよ

$ echo ".DS_Store" >> ~/.gitignore_global

echo ".DS_Store" でDS_Storeを記載
「>>」でファイルに追記
~/.gitignore_global でそこに

stageとunstage

stageはコミット(リポジトリに記録)するファイルをまとめている目録てきなもの。stage(目録)が空の状態でコミットしても、コミットするものがないと見なされてエラーになってしまう。

$ git add ファイル名

でそこにファイルを追加することができる。変更ファイル全てを追加したい場合は

$ git add .

もし間違えてstage(目録)に追加されてしまったファイルを目録から消したい場合は

$ git rm --cached ファイル名

で目録から削除できる。これをunstageという。

コミット

$ git commit -m コミットメッセージ

「-m」オプションをつけずにコミットすると自動的にviエディタが起動される

コミットログの確認

$ git log

親子関係を表示する場合は

$ git log --graph

logを抜ける場合は「q」ボタン

$ git config --global alias.graph "log --graph --date-order --all --pretty=format:'%h %Cred%d %Cgreen%ad %Cblue%cn %Creset%s' --date=short"

gitのログを見やすく表示する

ファイルの削除

$ git rm ファイル名

ファイルの削除と削除履歴のstageへの追加が同時にできる
手動で削除しそれをstageへあげたいときも同じ操作

ファイルのリネーム

$ git mv 変更前 変更後

これで名前の変更と変更履歴のstageへの追加ができる。
手動でファイルをリネームした場合のstageへの追加は

$git rm 変更前
$git add 変更後

となる

ファイルの移動

ファイルのリネームと同じくgit mvを使う

$git mv ファイル名 変更後の場所
// 例 
// $git mv cat.txt animals/cat.txt

ブランチの操作

ブランチとは?

今の状態(変更履歴の位置)を示すポインタ。ブランチを作成するということは新たに変更位置を記録したポインタを作成するということ。

HEADとは?

今のディレクトリの状態はどのブランチに属するのかを表示している。
HEADの記載のあるブランチが今のディレクトリの状態。checkoutはHEADを移動する操作。

ブランチの確認

$ git branch

ブランチの作成

$ git branch ブランチ名

ブランチの切り替え

$ git checkout ブランチ名

ブランチを切り替えることで管理ディレクトリの内容もそのブランチの内容に変更される。

$ git checkout -b ブランチ名

で新しくブランチを作成してそこに切り替えが可能
さらに

$ git checkout -b 作成ブランチ名 分岐元ブランチ名

とすると今いるブランチではないブランチよりブランチを分岐させ、さらにそのブランチに移動することが出来る。

ブランチの削除

$ git branch -d ブランチ名

マージした後などに行う。ブランチを削除してもブランチを分けて変更した履歴は消えないので大丈夫。(ブランチはあくまでポインタという意識を忘れずに)

マージの操作

統合後残したいほうにcheckoutした後で

$ git merge 結合するブランチ名

vimでマージメッセージを入力してくれと出るがそのまま:wqでもおけい

Fast-forwardマージ

masterブランチから新たにブランチを切りそちらで編集してコミットからマージを行った時、まだmasterブランチに変更がない場合はFast-forwardマージとなる。なぜかというと、としてはmasterの変更は新たなブランチだけなので新しいブランチの位置にポインタのみ移動すればマージしたことと同じになるので。
もしfast-fowrdマージをやりたくない場合は

git mearge --no-ff ブランチ名

とする「--no-ff」オプションをつけることでfast-forwardをさせないこともできる。その場合は新たなブランチの先にマージされたmasterブランチができるイメージ。同じ場所にブランチがない。

マージのコンフリクト

マージ作業中にコンフリクトが発生し、gitが自動的に判断できない場合はエラーとなる。
その場合コンフリクトが発生したファイルに

<<<<<<< HEAD
競合している文章1
=======
競合している文章2
>>>>>>> マージ先ブランチ名

という記載が追加される<

>>マージ先ブランチ名までのコードがマージ先の文章。どちらかを残し<<< === >>>を消せばgitはコンフリクトを解消したとみなす
その後git add コフクリクトファイル、git commitを行えばマージは解消される。

前のコミットに戻る

$ git reset --hard <戻りたいコミットのid>

で前のコミットに戻れる(ブランチ(ポインタ)を移動出来る)

前のコミットを変更

$ git commit --amend

前のコミットの内容をやり直すことができる

リベース

コミットの改変(歴史の改変)

$ git rebase リベース先ブランチ

クローン

リポジトリ(変更履歴)のみクローン(作業ファイルはコピーしない)

$ git clone --bare クローン元ディレクトリ クローン先ディレクトリ

--bareをつけなければ、クローン元のディレクトリのまるまるコピーとなる。

リモートリポジトリの設定

リモートリポジトリの作成

$ git clone --bare コピー元のディレクトリ リモートリポジトリ名(末尾に.gitをつけるのが慣習)

これで今あるリポジトリのコピーとしてのリポジトリが作成される。(作業ディレクトリはなしのリポジトリ)これをリモートリポジトリとしてつかう

リモートリポジトリの登録

cloneしたリポジトリをリモートリポジトリとして登録しなくてはならない。それは

$ git remort add リポジトリディレクトリ名 場所

で行う

リモートリポジトリのコミット・ブランチの取得(git fetch)

リモートリポジトリのコミット・ブランチを取得するにはfetchを使う

$ git fetch リモートブランチ名

fetchにより取得されたブランチはあくまでリモートリポジトリのものなのでこちらでチェックアウトすることはできない。あくまで更新情報の反映はpushを使う。

リモートリポジトリのブランチを追跡するようブランチの設定を行う

git remort、git fetchでリモートリポジトリの登録、リモートブランチ、コミットの取得を行った上で、ブランチの追跡の設定をする。

$ git branch --set-upstream-to=追跡するリモートブランチ名 追跡させる手元のブランチ名

ローカルから新たにブランチを作成する場合は

$ git branch 新しいブランチ名 追跡するリモートブランチ名

ローカルで作ったブランチをリモートへ反映させる

まずローカルのブランチの複製。もし名前が一緒の場合は:以降は省略可能。その後リモートのブランチを追跡するよう設定する。

$ git push リモート名 複製する手元のブランチ名 : リモートに作成するブランチ名
or
$ git push リモート名 複製する手元のブランチ名

リモートのブランチを削除する

前述のブランチの追加の形を継承している「:」の前が「空白」となっているのがポイント

git push orign : 削除するブランチ名

#### ローカルの変更をリモートに反映する
反映したいブランチに移動し、

git push

前提としてリモートの登録、リモートブランチの追跡の設定を行っておくこと



### ユーザー情報の設定

//名前
$ git config user.name 名前
//email
$ git config user.email メールアドレス

6
5
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
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?