- 投稿日:2021-07-15T22:47:30+09:00
Source Treeの最低限の手順
概要 作業用ブランチでファイルを編集したところからmasterにマージまでをおさらい。 ①適当にファイルを編集 ②Hunkをステージへ移動 ③コミットコメント書く+チェックボックスにチェックしてコミットボタン ④マージ先のブランチにチェックアウトしてる状態でマージ元右クリックから現在のブランチに{マージ元ブランチ名}をマージするを選択
- 投稿日:2021-07-15T22:35:50+09:00
大量のファイルをgit pushした際に、「client_loop: send disconnect: Broken pipe」エラーが発生
筆者の環境 ターミナル:iterm2 git:git version 2.30.1 (Apple Git-130) 現象 大量のファイルを「git push」した場合、「client_loop: send disconnect: Broken pipe」とエラーが表示される client_loop: send disconnect: Broken pipe send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly 「client_loop: send disconnect: Broken pipe」を元に調査し、2つの対応を実施 解決方法 ①http.postBuffer git config --global http.postBuffer 157286400 大きいサイズをpushする場合バッファサイズを使用するため、増減を上げる この設定は、公式に記載がある通り、小さなファイルのpushでもメモリを大量に消費する場合があるので、解決したら戻しましょう ②サーバの応答回数の設定 vi ~/.ssh/config Host github.com ServerAliveInterval 60 ServerAliveCountMax 30 上記設定は、sshでリモートアクセスする際に、サーバが応答なかった場合、60秒間維持しその接続を30回繰り返すという設定 上記2つの対応を行なった後にエラーが変わり、下記対応に続く
- 投稿日:2021-07-15T16:25:48+09:00
Git で commit 間の差分を確認する
たまに使うことがあって、そのたびに「何するんだっけ…?」と言いながらググっている気がするのでメモ。 実際の事例1 こんなことがたまにあります。 $ git log --oneline ...(長いコミット履歴) 8cc2ae4 プログラムを高速化した 0ad5cb8 ○○機能を追加した この時の「高速化」って何をどう変更して高速化したんや…? そんな時は diff を見ます。 $ git diff [変更前のコミットID] [変更後のコミットID] というわけで、この場合は、 $ git diff 0ad5cb8 8cc2ae4 とコマンドを叩けば、端末に「高速化」の変更箇所が表示されます。 ちなみに、現在のブランチの状態からの差分を見たければ、 $ git diff [コミットID] のみで差分が表示されます。 実際の事例2 こんなこともたまにあります。 $ git log --oneline ...(長いコミット履歴) 8cc2ae4 プログラムを高速化した 0ad5cb8 ○○機能を追加した この「高速化」を実現するために、どのファイルをいじったんや…? そんな時も diff を見ます。 $ git diff --name-only [変更前のコミットID] [変更後のコミットID] というわけで、この場合は、 $ git diff --name-only 0ad5cb8 8cc2ae4 とコマンドを叩けば、端末に「高速化」した時にいじったファイルの名前が一覧表示されます。
- 投稿日:2021-07-15T13:19:11+09:00
Gitでユーザーごとにpushの許可制御を行う
要約 Gitでサーバサイドhookでpush時にスクリプトを実行して許可/拒絶を制御する方法。 きっかけ パートナーさんと1つのリポジトリを使って協業するプロジェクトで、パートナーさんにはdevelopとfeature以外は触ってほしくなかった。注意喚起だけでは弱いのでできたら機械的にできないかと考えた。
- 投稿日:2021-07-15T09:50:56+09:00
作業中ブランチで間違ってpullしてしまった場合の対応
はじめに ローカルで機能開発中に、最新のリモートブランチの動作確認をしようと、git pull をしました。 しかし、develop ブランチに切り替えるのを忘れており、作業中のブランチにpullしてしまったため、pullを取り消す方法についての備忘録です。 前提 branchAで作業中 まだコミットしていないファイルがある状態でpullしてしまった 対応方法 git pull はgit fetch でリモートの最新状態のブランチを持ってきて、ローカルの現在いるブランチにマージするコマンドなので、pull してきたリモートブランチのマージを取り消しすればよいだけです。 つまりマージする前の位置にHEADを移動させればいいことになります。 1. HEADの移動履歴を確認 まずは、現在のHEADの位置を確認しましょう。 % git reflog # 現在のHEADの位置 e6ec135b (HEAD -> feature/branchA) HEAD@{0}: pull origin HEAD: Merge made by the 'recursive' strategy. # ここに戻したい eea24d80 HEAD@{1}: commit: branchA での作業内容 d4352211 (develop) HEAD@{2}: checkout: moving from develop to branchA これでマージ前のHEADの位置がHEAD@{1} で有ることがわかりました。 後はgit reset --hard を利用して、強制的にHEADを移動するだけです。 git reset --hard は、HEAD,作業ツリー、インデックスのすべてを指定したコミットに書き換えるコマンドになります。 注意点 ここで1つ注意しておくことは、現在のブランチで作業中の場合は、変更をコミットするか退避させておかないと、現在の作業内容が消えてしまうことです。 今回はgit stash を使って退避させる方法を取ります。 2. 作業中ブランチの変更を退避 現在branchAで作業中の内容を退避させます。 ※今回はまだ修正中でコミットしたくないため、この方法を適用 git stash save "コメント" -u 3. git pullの取り消し git reset --hard HEAD@{1} これで上手くHEADの位置が元に戻っていれば完了です。 さいごに 間違えてしまっても焦らずに対処できるように、これからもどんどん気づいたことをかいていきます。
- 投稿日:2021-07-15T00:03:47+09:00
最低限知っておくべきGitコマンド
Gitコマンドでこのくらいは知っておくべきかと思います。 コマンド操作をすると理解が深まります。 $ git clone リポジトリをコピー $ git init リポジトリを新規作成 $ git add . コミット対象のファイルを登録 $ git commit -m "~" 変更されたファイルをコミット(ローカルリポジトリに変更内容を入れ込む) $ git branch ○○ ブランチの作成/一覧表示 $ git checkout ○○ 処理対象ブランチの切り替え $ git push origin ○○ ローカルリポジトリの変更点をリモートリポジトリにマージ $ git pull origin ○○ リモートリポジトリの変更点をローカルリポジトリにマージ $ git status 作業ツリー内の差分ファイルを表示