20200325のGitに関する記事は11件です。

gitで変更したファイル一覧を出力するコマンド

静的解析ツールのCLIに食わせたかった
動作はmacOS Catalina、bashで確認

コミットするファイル一覧を出力する

git diff --cached --name-only --diff-filter=ACMR
  • cachedオプションでステージしたファイルを対象にする
    • pre-commitフックで使用できる
  • name-onlyオプションでファイル名のみを出力する
  • diff-filterオプションは結果に含めたい変更の種類に応じて変更

参考 https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203

動作

$ git add test.php temp/test2.php
$ git diff --cached --name-only --diff-filter=ACMR
temp/test2.php
test.php

使用例

  • phpstan analyzeコマンドの引数にしたい場合
$ PATHS=$(git diff --cached --name-only --diff-filter=ACMR | tr '\n' ' ' 2>&1)
$ echo "phpstan analyze $PATHS --level max"
phpstan analyze temp/test2.php test.php  --level max

ブランチで変更したファイル一覧を出力する

git diff --name-only master...$CURRENT_BRANCH
  • master…$CURRENT_BRANCH間の.を3つにすることでブランチの変更ファイルのみを対象にしている

参考 https://devconnected.com/how-to-compare-two-git-branches/

動作

# --show-currentオプションはgit v2.22〜
$ CURRENT_BRANCH=$(git branch --show-current 2>&1)
$ git diff --name-only master...$CURRENT_BRANCH
test.php

使用例はコミットの場合と同様なので割愛

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

【初心者向け】git feature branch作成からpushするまで(備忘録)

会社の研修で先輩のコードレビューを受けるために、gitのリモートリポジトリにプッシュすることがありました。

featureブランチの作成

略してfeatと書くこともある。

$ git branch #現在自分がいるブランチの確認
$ git branch feature #featureブランチ作成
$ git checkout feature #featureブランチへ移動

(変更後、、、)

$ git add . #ファイルをインデックスに丸ごと移動
$ git commit -m "message" # ローカルリポジトリへコミット
$ git push origin feature # featureブランチの内容をoriginへアップロード

これで行けました。

追記するかもしれません。

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

対象のリポジトリが大きすぎてgit cloneできない時の対処法

備忘録として。

エラー内容: packet_write_wait: Broken pipe

リモートリポジトリのサイズがクライアント側の受け入れ容量を超えてしまい、git clone時に以下のエラーが出る。

$ git clone ssh://~ sample

Cloning into 'sample'...
remote: Counting objects: 1556, done.
packet_write_wait: Connection to ~ port ~: Broken pipe
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack faile

解決

gitクライアント側でバッファの容量をとりあえず20MBまで増やしてあげる。

$ git config --global http.postBuffer 20M
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Githubで自分のリポジトリに他のユーザーを招待する方法

Githubの招待を行うページが、Setting→CollaboratorsではなくSetting→Manage accessに変わっていたので書いておきます

Githubのリポジトリの画面から、Setting→Manage accessで、画面の下部に「Invite a collaborator」というボタンがあるのでそこから招待できます。
スクリーンショット (8).png
それ以降の操作は変わらず、検索欄にユーザー名を入れて下のボタンを押すだけです。すると招待のメールが相手に飛ぶので、それを了承すればリポジトリに参加できます

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

Visual Studio Online の始め方 ~環境構築時代の終焉~

GitHub

https://github.com/RZ-git/vso-test-environment

Visual Studio Online始め方メモ

1.Visual Studio Onlineって?
    クラウド版IDEで、ネット環境さえあれば使えるVisual Studio Codeみたいなもの。

2. 始め方
    公式サイトに飛ぶ
    https://visualstudio.microsoft.com/ja/services/visual-studio-online/
    [開始する] => [Create environment]
    環境名、連携するGitリポジトリのURLを入力
    マシンタイプを選択
    Createするとビルドが開始されるから1分くらい待つ
    後は拡張機能入れたりする。
    ※ファイル作ったりすると。足りない拡張機能に関するポップアップが右下に出るから迷うことはない
    ここまで5分程度

3.料金体系
    接続している間は課金される

料金体系

4.使ってみて
    環境構築迄のスピードが速い。速すぎる。
    予め開発に必要な環境が整ってる。アップデートとかはしてくれるかは不明。
    Gitは連携もしてるし当然インストールされてる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gitで自動更新するための構成(メンバーがGitを使えない人向け)

Gitで自動更新するための構成.png

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

gitの競合解消及びdevelop最新版反映

  仕事でgit利用していて、リリースの時、競合が結構頻繁にありますので、解決手順をメモしときます。

競合解消

$ git fetch origin develop
git checkout feature/XXX
$ git merge FETCH_HEAD
手動で解消して
$ git add .
$ git commit -m "リリース"
$ git push origin HEAD

developの最新版を反映

Bash$ git branch
  develop
* feature/XXX
# 一旦ファイルをコミットしても良いが、stashで一時的に別の場所に退避しても良い
git stash
git checkout develop
git pull origin develop
git checkout feature/XXX
git merge develop   あるいは  git rebase develop
# 退避した変更を適用しなおす
$ git stash pop


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

gitとgithub

はじめに

Gitとは

Gitはバージョン管理システム

バージョン管理すると何が嬉しいのか
- どのファイルの誰がいつ何のために変化したかを残せる

Gitの仕組み

変更履歴を順々に記録する。記録する際にメッセージをつける。

流れ

  • pull
    • 共有レポジトリを共有
  • レポジトリ
    • 変更履歴を記録する場所
  • commit
    • 個人レポジトリに変更履歴を記録
  • push
    • 共有レポジトリに登録

GitHubとは

Gitリポジトリのホスティングサービス

特徴

  • プルリクエストによるコラボレーション
  • 他チームのソフトウェアを見れる

Gitの初期設定

登録

' - git config --global user.name "name" '
' - git config --global user.email mailadress.com '

ローカルレポジトリ作成

  • リポジトリとはファイルやディレクトリの状態、変更履歴を記録する場所 ' git init ' .gitディレクトリが作成される

流れ

  1. ファイルの変更をステージングエリアへ追加する git add
  2. ローカルリポジトリにコミットする git commit
  3. リモートリポジトリにプッシュする git push

ブラウザ側でレポジトリを作っておく。
' git remote add origin /// '

変更をコミット

  1. ステージエリアへ追加 git add .ですべて入れることができる
  2. コミットして変更を記録する。変更にメッセージをつけて記録できる。
  3. 1行目:変更内容のようやく
  4. 2行目:空行
  5. 3行目:変更の理由
  • git statusで状態を見れる。緑色になっているとaddされている。最新のgit commitしたものからの変化を見ることができる。
  • git logで過去のログを見れる --oneline 一行で表示する -p ファイルの差分を表示

色々な変更をコミットできる

git rmで削除したものをコミットできる
git diff add commitする前に確認する。ステージとcommitとの差をみたいときは--HEADをつける

プッシュする

  • 送信
  • git push origin master 登録したgithubに送られる
  • git push origin feature

Gitの管理から外す

.gitignoreファイルを指定することで、ファイルをGitの管理から外すことができる
自動生成されるファイルやパスワードが記載されているファイル
.gitignoreファイルの書き方
- ファイルを指定、ルートを指定
- コミットしてしまった場合 git rmを使う
- git rm --cachedファイルを無くせる gitignore必須

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

git pushしたらPermission deniedで403エラーになるときの対処法

git pushしたらエラーで返ってきた!!

会社用と個人用のアカウントを使い分けていたのですが、なぜかpushできなくなりエラーで返ってきてしまいました...

remote: Permission to ユーザー名/リポジトリ名.git denied to 別のユーザー名.
fatal: unable to access 'https://github.com/ユーザー名/リポジトリ名.git/': The requested URL returned error: 403

そこで~/.gitconfigファイルにメインアカウントとメールアドレスを設定

$ git config --global user.name "メインアカウント"
$ git config --global user.email "メインアカウントメールアドレス"

確認

$ cat ~/.gitconfig

[user]
    name = メインアカウント
    email = メインアカウントメールアドレス

これでもう一度push

$ git push origin master

全然変わらない...

もう一度~/.gitconfigファイルを書き換える

$ vi ~/.gitconfig

[remote "origin"]
 url = https://github.com/ユーザー名/リポジトリ名.git

これにユーザー名とパスワードを追記する

[remote "origin"]
 url = https://ユーザー名:パスワード@github.com/ユーザー名/リポジトリ名.git

これでひとまずpushはできるように...
でもこれでは根本の解決にはならないので、PCの方の設定も確認してみました。

どうやらキーチェーンから認証情報を更新しなければいけないらしい。

[Finder] で、Keychain Access アプリケーションを検索
スクリーンショット 2020-03-25 1.41.11.png

青い@のgithub.com(インターネットパスワード)が2つ見つかったので、これを編集または削除する。

これでもう一度~/.gitconfigファイルも元に戻してpush!
無事、できました!

mac自体がログイン情報を保存して、それを使い続けるということらしいです...
よかったー

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

Githubでのプログラム修正の流れ その3

はじめに

以下の記事の続きです。
Githubでのプログラム修正の流れ その1
Githubでのプログラム修正の流れ その2

今回の記事に出てくる言葉

用語 意味
リポジトリ ファイルやディレクトリの
変更履歴を保管しておくもの
ローカルリポジトリ 自分のPC上にあるリポジトリ
リモートリポジトリ インターネット上に存在するリポジトリ
GitHubやbitbucket等
コミット ファイルの修正や追加をローカルリポジトリに
変更履歴として記録すること
ブランチ    変更履歴の流れを分岐して記録していく物。masterブランチという大元があり、そこからブランチ(枝)が分かれている、、、というイメージ。修正する機能ごとにブランチを作り、プログラム修正が完了したらmasterブランチに反映する。
プルリクエスト ローカルリポジトリで修正したコードに対して、レビュー依頼をすること
マージ ブランチでの修正内容ををmasterブランチに反映すること

ファイル修正

前回の記事まででブランチの作成はできていると思うので、早速ファイルを修正してみましょう。
こんな感じで「hello world」から「hello world!!!」にしてみます。
スクリーンショット 2020-03-18 21.45.05.png
するとGitHubDesktop上に変更前と変更後の比較が表示されます。
スクリーンショット 2020-03-19 21.53.28.png

コメントを記入してコミットボタンを押しましょう。
スクリーンショット 2020-03-23 21.16.22.png

続いて、publish branchを押下してローカルリポジトリの内容をリモートリポジトリに反映します。
スクリーンショット 2020-03-23 21.29.01.png

プルリクエストを出す

Create Pull Requestを押下してプルリクエストを出しましょう。
スクリーンショット 2020-03-23 21.48.12.png

するとブラウザでGitHubが開かれるはずなので、何をどのような目的で修正したのか記入してCreate pull request押下しましょう。これでプルリクエストは完了です。
スクリーンショット 2020-03-23 21.56.03.png

レビュー

レビュアーから修正依頼がきたら、その都度対応しましょう。
今回は以下のような修正依頼が来たとします。
90z1bO89YT1YJOT1585013423_1585013626.png
修正内容を確認し、レビュアーからの指摘が無くなるまでファイルの修正→コミット→プルリクエストを繰り返します。

マージ

指摘反映が完了したら、Merge pull requestボタン押下 → Confirm meergeボタン押下でmasterブランチへの反映は完了です。
スクリーンショット 2020-03-24 10.43.11.png
WnrTsl7Ma9QhicV1585014382_1585014412.png

これで完了

以上がGitHubプログラム修正の流れとなります。他にもいろいろな機能があるので、Gitを使いこなして効率の良い開発を進めましょう!

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

Reinitialized existing Git repository in が出たときの対処法

はじめに

ただの備忘録のうちのひとつ。将来のために、、、

git init したときのやつ

$ git init 
Reinitialized existing Git repository in ~

結論:やることない

特にやることない。Reinitializedとか言うから「初期化して最初から⁉」とか思ってたけどそうではないらしい。

関係ないけど

名前とメールの確認もたまにしたくなる

$git config --global --list
user.name=hogehoge
user.email=hoge@gmail.com
参考

https://qiita.com/ragingalpaca/items/ef247e459ff2e7759ba9
https://hacknote.jp/archives/15745/

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