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も