GitHubへのプッシュとその周辺

githubにプッシュするまでの流れ辺りをいい加減覚えたい

まずはGithubリポジトリを新規作成し、URLを取得する

Gitで有効になっている設定を確認し、編集する

Gitには3種類の設定が存在する。

名称 内容
system Gitシステム全体の設定
global 対象となるユーザの設定(ユーザ名、メールアドレス)
local ローカルリポジトリ毎の設定

設定を確認するためには以下のようなコマンドを用いる

% git config --list
% git config --global --list    # global 設定のみを参照
% git config --local --list    # local 設定のみを参照

まずはglobalの設定を行っておく

% git config --global user.name "ユーザ名"
% git config --global user.email "メールアドレス"

ローカルリポジトリ

リポジトリを作成するディレクトリに移動し、リポジトリを作成

% cd [対象ディレクトリ]
% git init

ファイルをコミット待ち状態にする

git add -A と git add . と git add -u の違い - Qiita

% git add [ファイル名]    # 対象のファイルをaddする
% git add .    # 削除されていない部分を全てaddする
% git add -u    # 変更があった部分のみをaddする
% git add -A    # . OR -u で対象となる全てをaddする

ファイルをコミットする

% git commit -m "コメント"

ログを確認する

% git log

リモートリポジトリ編

ファイルがコミットできたら、Githubにプッシュする

まずはプッシュ先のURLを指定する(local設定ファイルに書き込まれるので、一度だけで良い)

% git remote add origin [URL]

プッシュする

% git push -u origin master

GitHubのコミット履歴に意図しない表示があるとき

違う環境からプッシュしようとしたり、最初のglobal設定を忘れていると、

commited with 名前 みたいな感じで本名が表示されたりすることがある

これはPCのアカウントをそのまま引っ張ってしまうことで発生する(MacOS限定の話?)

これはセキュリティ的によろしくない

(とは言っても、Gitというのは履歴を残すためのものなので、ある意味で間違いでは無い)

大量のコミット書き換えはgit filter-branchコマンドで行う

git filter-branch -f --commit-filter '
            GIT_AUTHOR_NAME=[名前];
            GIT_AUTHOR_EMAIL=[メールアドレス];
            GIT_COMMITTER_NAME=[名前];
            GIT_COMMITTER_EMAIL=[メールアドレス];
            git commit-tree "$@";
        ' HEAD

Author と Commiter の2種類が存在し、これらに齟齬があるときに上記のような事象が生じる

そのため、どちらも一括で書き換えてしまう

これをプッシュしてGitHubに反映させる

% git push -f -u origin master