- 投稿日:2019-10-02T18:24:05+09:00
git 忘却録
問題 pushしたいが403が出てしまう場合
例えば
git clone https://github.com/{ユーザ名}/{レポジトリー名}.git cd {レポジトリー名} echo "# {レポジトリー名}" >> README.md git add README.md git commit -m "first commit" git push -u origin masterみたいなことをした場合、以下のエラーがでてしまうことがあります
remote: Permission to {ユーザ名}/{レポジトリー名}.git denied to xxxx. fatal: unable to access 'https://github.com/{ユーザ名}/{レポジトリー名}.git/': The requested URL returned error: 403対処方法
ドメイン部分の先頭に「{ユーザ名}@」を入れるのがコツです。そうすると対話形式でパスワードを確認してくるので、パスワードを認証することができます。
git remote set-url origin https://{ユーザ名}@github.com/{ユーザ名}/{レポジトリー名}.git git push -u origin master 成功!
- 投稿日:2019-10-02T12:40:21+09:00
gitで直近のコミットした行数をカウントする
背景
今日一日の作業実績を確認したり、自分のモチベーションアップのためにサクッとgitでcommitした行数を確認したかった!
方法
以下コマンド実行
git log --numstat --pretty="%H" -1 --no-merges | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("%d (+%d, -%d)\n", plus+minus, plus, minus)}'-1は行数チェックの対象コミット数を示しています。
なので直近の3つのコミットを対象としたい場合は-3としてください。結果
上記コマンドを実行すると以下のような出力が得られる。
左から、合計行数と+追加行数、-削除行数が表示される。$ git log --numstat --pretty="%H" -1 --no-merges | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("%d (+%d, -%d)\n", plus+minus, plus, minus)}' 675 (+507, -168)その他
ライブラリなど除外したいファイルがある場合は以下のようにすると良さそう。
方法としては以下
git log --numstat --pretty="%H" -1 --format=%s -- . ":(exclude)postgres"上記は例で「postgres」のディレクトリが除外設定されている。
--format=%s -- . ":(exclude)postgres"上記の部分でpostgresのディレクトリを除外している
複数のディレクトリを指定する場合はつなげて以下のようにすると良さげ
git log --numstat --pretty="%H" -1 --format=%s -- . ":(exclude)postgres" --format=%s -- . ":(exclude)golang/github.com"参考にしたURL
Thanks!
altさん、タグ修正ありがとうございます…!
- 投稿日:2019-10-02T11:52:55+09:00
正直Gitわからなかったけどとりあえずこれできればいいだろっていうメモ
正直Gitって自分はあんまり触らないだろうと思ってたのに、がっつり触るようになってしまったのでとりあえずこれだけ覚えればいけるっていう自分用のメモ
※Github利用を想定
最初にやること
まずは初期設定をしなければいけないっぽい。主にgithubのアカウントとか。
ただここで登録してもcloneするとき再度認証を求められたりするのでよくわからない。
まあやっとけば間違いない。git config --global user.name XXXXXXX git config --global user.email XXXXXXXClone
なにはともあれクローン。githubにすでにプロジェクトができてれば
git clone http://github.com/user/projectコミットからプッシュまで
クローンしたものを編集したからgithubにプッシュしたいとき。
git add . git commit -m "commit message" git push origin master一番最初にやったときにはまったこととしては、「git add」はちゃんとプロジェクトのディレクトリで実行すること。
例えば「test」というプロジェクトをデスクトップにクローンしたときはC:\Users\user\Desktop> git clone http://github.com/user/test C:\Users\user\Desktop> cd test C:\Users\user\Desktop\test>==ここでいろいろ編集== C:\Users\user\Desktop\test> git add . C:\Users\user\Desktop\test> git commit -m "commit message" C:\Users\user\Desktop\test> git push origin masterローカルにあるものをリモートにプッシュする
あんまりやらないがローカルで新規で作ってリモートにプッシュしたいとき。
(自分はリモートで空のプロジェクトつくってそれをクローン⇒編集してプッシュしてる)プッシュしたいファイル内で git init git remote add origin http://github.com/user/ これでoriginにプッシュ先が登録される git add . git commit -m "commit message" git push origin masterブランチを指定してプッシュ
なんかいろいろやり方があるみたいだが自分は以下の方法で
git push origin master:branchブランチを指定してクローン
git clone -b branch http://github.com/user/project2019/10/02現在
ほかにもよく使うものがあれば追記していきたい
- 投稿日:2019-10-02T10:54:38+09:00
git initして git add * しようとしたら下位に既にgitがあったので、統合したい。
ex) ~/myprojects/<新しく作ったgitのルート>/ でgit init して git add * したら、~/myprojects/<新しく作ったgitのルート>/AAA/ に既にgitがありますよと言われた。
これを、「AAA」のgitをなくして「新しく作ったgitのルート」のgitに統合したい。
戦略
git subtree addを使えば他のgitをサブディレクトリにくっつけられるのでこれを使う。ただ、今回は既にサブディレクトリがある状態なので、そのままだと怒られる。
なので、一旦隣にリネームまたはどこかに移動してから行う。ここから下の前提
既にあったフォルダをAAAとする。新しくgit initしたルート直下にあるとする。
<新しく作ったgitのルート>にいるものとする。#cd <新しく作ったgitのルート>へのパスgit add でステージしてしまったものを綺麗にする
git addしていなければもうちょっと下からで良い。
git rm -rf --cached *ステータスを見ると
git statusOn branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) AAA/一旦コミットする。
git commit --allow-empty --allow-empty-message -m ""など
既に戦略どうりにするつもりでgit add などでステージしてない場合はここからでよい。
とりあえず名前を変える
mv AAA AAA_
リモートに登録(XXX は作業用の適当な名前)
git remote add XXX AAA_/確認
git remoteXXX履歴ごと統合
git subtree add --prefix AAA XXX master
掃除
いろいろチェックして安心したら AAA_を消しましょう。(心配ならどこかに移動させておく)
rm -rf AAA_リモートも消します
git remote remove XXXこれであとは普通にできまっせ。
例えば
git add *
など
何か素敵なことがしたい人は、git subtree add --helpなど読む。
今回
git merge
git fetch
git read-tree
git subtree merge
は使わなかった。
- 投稿日:2019-10-02T09:19:50+09:00
リモートブランチにpushする
# ローカルブランチ(local-branch)をupstream上にあるリモートブランチ(upstream-branch)にpushする $ git push upstream local-branch:upstream-branch