20191002のGitに関する記事は5件です。

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

成功!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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さん、タグ修正ありがとうございます…!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

正直Gitわからなかったけどとりあえずこれできればいいだろっていうメモ

正直Gitって自分はあんまり触らないだろうと思ってたのに、がっつり触るようになってしまったのでとりあえずこれだけ覚えればいけるっていう自分用のメモ

※Github利用を想定

最初にやること

まずは初期設定をしなければいけないっぽい。主にgithubのアカウントとか。
ただここで登録してもcloneするとき再度認証を求められたりするのでよくわからない。
まあやっとけば間違いない。

git config --global user.name XXXXXXX
git config --global user.email XXXXXXX

Clone

なにはともあれクローン。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/project

2019/10/02現在
ほかにもよく使うものがあれば追記していきたい

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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 status
On 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 remote 
XXX 

履歴ごと統合

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
は使わなかった。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

リモートブランチにpushする

# ローカルブランチ(local-branch)をupstream上にあるリモートブランチ(upstream-branch)にpushする
$ git push upstream local-branch:upstream-branch
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む