Chiroru's Diary

日々の学びをちょこちょこメモしていきます

Githubの基本理解

【目次】

関連gitのコマンド(?)

$ git init
//フォルダをGitリポジトリとして初期化する

$ git fetch --dry-run  
// Pullする前にリモート上で行われた変更を見る

$ git pull <リモートリポジトリ名> <ブランチ名>
// 変更をPullする

$ git remote -v
// remoteの設定を確認する

$ git push <リモートリポジトリ名> <ブランチ名>
// 変更をPushする

$ git fsck --full  
// リポジトリの正当性チェック  

$ git stash  
// 現在の作業ツリーの状態を一時的に保管  
// 作業中の状態をコミットせず、他ブランチで作業したい時など

$ git stash list  
// 一時保存している作業リストの確認 

$ git stash pop   
// 一時保存したものを再度呼び出す  

fork

リポジトリをフォークすると、自分のGitHub内にそのリポジトリのコピーができ、remoteリポジトリの1つとして使える。 フォーク後は、 clone (コピー) してGitHubからローカルへ。

$ git clone <URL FROMGITHUB>  

元のリポジトリに変更が加わった際、その変更もpullできる別のremoteを設定する。
元のリポジトリupstreamという名前をつけることが多い。

$ git remote add upstream <元のリポジトリのURL>

ローカルでマージする

プルリクがマージされたら、 変更を自分のフォークバージョンにもアップデートするために、リポジトリのメインブランチにマージする。

$ git checkout <マージしたいブランチ名>
// マージしたいブランチ(メインブランチ)へ

$ git merge <取り込みたいブランチ名>  
// 作業してた取り込みたいブランチをマージ

$ git branch -d <ブランチ名>
// 作業してたブランチ削除

$ git push <リモートリポジトリ名> --delete <ブランチ名>
// GitHub上にあるリポジトリからも作業してたブランチ削除

git pullとgit pull --rebaseの違いについて

  • git pull:git fetch + 「git merge」

  • git pull --rebase:git fetch + 「git rebase」

git pull --rebaseを使うと、マージコミットが作られない(その分履歴も綺麗にはなる)

なお、git rebaseについては33・34日目にまとめてある。

その他参考:git pull

改めてgit fetchについて

※33日目の日報ではfetchについて以下のようにまとめた。

マージせず、単にリモートリポジトリの内容を確認したい時に使用。 実行するとリモートリポジトリの最新の履歴の取得だけを行い、取得したコミットは、名前の無いブランチとして取り込まれる。(※ブランチはFETCH_HEADでチェックアウトできる)

git fetchでリモートのコピーをローカルにダウンロードしてくる。この際コピーは、 ローカルのリモート追跡ブランチ(リモートのコピー置き場)にコピーされるのでワーキングツリーに影響なし。

手順は以下。

  • リモートのコピーを要求
  • ローカルとの差分を確認。リモートリポジトリが変更や新規ブランチをリモート追跡ブランチに渡す
  • リモート追跡ブランチが更新される

リモート追跡ブランチ

リモートのmasterブランチを追跡するもの。このブランチの内容確認や、ローカルブランチへのマージはorigin/ブランチ名でアクセス。

※masterブランチ:ローカルの中心となる「統合ブランチ」
※origin/masterブランチ:ローカルにある「リモート追跡ブランチ」

参考:git fetch

gitignore

.gitignoreはバージョン管理をしないファイルを指定(記載)するために作成する。
→しかしいちいち追加するのが面倒くさい場合、グローバルで管理する方法がある。

.gitignore_global
参照記事はこちら。大まかな流れは以下。(※「.gitignore_globalに追記」する内容は参照記事で確認)

$ git config --global core.excludesfile ~/.gitignore
// グローバルの.gitignoreファイル作成  

// .gitignore_globalに追記  

$ git config --global core.excludesfile ~/.gitignore_global
// ファイルの有効化

参考:Gitが面白いほどわかる、基本の使い方33(70~71)

configの下に gitignoreの設定を置く

よくグローバルな設定をする際、上記(取り消し線箇所)のような.gitignore_globalの設定をする記事を見かけるが、以下のように設定することで、excludefilesを指定しなくてもよくなった。

記事まだ .gitconfig に core.excludesfile を設定しているの?を教えてもらいました!

特別な理由が無い限り、 $HOME/.config/git/ignore にグローバルな設定を置くのがgitの流儀となります。

入れておくと便利なtig

コンソール上で使えるgitブラウザ。git logのような感じだけど、addやcommitもできる模様。

  • $ brew install tigでインストール
  • Ctrl+Cで終了

参考:tigでgitをもっと便利に! addやcommitも

その他参考サイト