タグ

gitに関するmas-higaのブックマーク (129)

  • 結局 Git のブランチ戦略ってどうすればいいの? - Qiita

    1つのIssueが大きくなると1 Pull Requestで大量の差分が発生します。 そうなるとレビュワーに負担がかかり、コンフリクトの可能性も高まり、コードレビューを効率よく進めることができません。 このINVEST原則を守ることでチームはより効果的に作業を進め、柔軟に対応して開発を進めることができます。 Git Flow Git Flowは5種類(main, hotfix, release, develop, feature)のブランチを運用するブランチ戦略です。 2010年に提唱された有名なブランチ戦略です。 オンラインサービスのように継続的デリバリーするコードを想定して作られた戦略ではないです。 main ブランチ 常にリリースできる状態を保つ hotfix, develop へ切り出す このブランチへの直pushはNG hotfix ブランチ バグ修正など緊急時に対応するためのブ

    結局 Git のブランチ戦略ってどうすればいいの? - Qiita
  • tigでfixupを簡単にする - ちなみに

    2つ以上前のコミットを修正したいときに --fixup を使うのは近年ではよく知られている。 $ git commit --fixup <commit> $ git -i --autosquash <commit>~ # rebase.autosquash = true にしておけばオプションは不要 しかし、この方法だと毎回 $EDITOR が開いてしまいちょっと面倒である。 これを回避する方法は GIT_SEQUENCE_EDITOR 環境変数を使う方法で GIT_SEQUENCE_EDITOR=true などとしておくと、エディタを開かずに rebase が完了する。 また git 2.44 以降は --interactive じゃなくても --autosquash が可能になったためさらに簡単になった (GitHubのブログが詳しい) これを使うと以下のような alias を定義する

    tigでfixupを簡単にする - ちなみに
    mas-higa
    mas-higa 2024/08/20
  • 「これはHEAD^^」 「これはHEAD^2」 「これはHEAD~2」「HEAD@{2}、reflog用」「全部いっしょじゃないですか」「違う!!もっとよく見ろ!!」 - Qiita

    「これはHEAD^^」 「これはHEAD^2」 「これはHEAD~2」「HEAD@{2}、reflog用」「全部いっしょじゃないですか」「違う!!もっとよく見ろ!!」Git 画像略 TL;DR(Too Long; Didn't Read) ~nは単純なコミットの親をたどる(ブランチの分岐がある場合は現在のブランチのみで辿れるコミット) ^nはマージコミット向けで^2は「そのコミットの2番目の親(取り込んだブランチの前回のコミット)」 だからHEAD^n(n > 2)は存在しない 2024/06/04追記: OctopusなMergeだと3つ以上のブランチからマージできるので^nも存在する......があまり見かけることはない HEAD^^は「HEAD^の親」、HEAD^2は「HEADのもう一人の親」みたいな......。タラちゃんがHEADだと波平がHEAD^^でマスオがHEAD^2です(

    「これはHEAD^^」 「これはHEAD^2」 「これはHEAD~2」「HEAD@{2}、reflog用」「全部いっしょじゃないですか」「違う!!もっとよく見ろ!!」 - Qiita
    mas-higa
    mas-higa 2024/06/05
    これは中川になる
  • え?まだgit checkoutしてるの?

    公式ドキュメントには以下のように書かれています。 THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE. 和訳:このコマンドは実験的です。動作が変更される可能性があります。 この記事の内容と違う場合があるので、ご注意ください。 この記事は2024年2月28日時点の情報です。 え?まだgit checkoutしてるの? git checkoutといえば、ブランチを切り替えたり、git addしたファイルを元に戻したりするコマンドですが、それはもう古いです。 実は2019年8月リリースのgit 2.23からgit switchとgit restoreが追加されました。 知らなかった人も多いのではないでしょうか?(恥ずかしながら私は知らなかった...) 「先輩、checkoutってなんすか?」と後輩に聞かれる前に、この記事を読んでgit sw

    え?まだgit checkoutしてるの?
    mas-higa
    mas-higa 2024/02/29
    大文字が force の意味だってのは昔からでしょ。-d/-D とか
  • git commit --fixupを使いましょう - Don't Repeat Yourself

    発端 Pull Request で force push されると差分がわからなくなるから困るんだけどみんなどうしてますか?— codehex.bsky(へっくす) (@codehex) 2024年2月25日 ポストの前提がちょっとわかりませんが、レビュー後にforce pushされると、どこに修正を入れたのかわからないケースだと仮定します。プルリクエストがまだドラフト状態でのforce pushやrebaseで困るケースはそんなにないと思うからです。 git commit --fixup このケースではgit commit --fixupが便利です。レビューで指摘が入ったコミットに対して--fixupをかけておき、レビュワーはfixupコミットの内容を確認します。レビュワーが確認してOKが出た段階で、git rebase -i --autosquashなどを使ってfixupコミットを元コ

    git commit --fixupを使いましょう - Don't Repeat Yourself
  • squash and mergeしか使ってないけど全く困ってない

    こういうことはレポジトリ構成・ワークフローと密接に紐づいているので、そういう前提を抜きにはどれがいいとかはいうことはできない。が、自分はいわゆるsquash and mergeのみの環境しかほとんど経験がないし、それで困ったことが一度もない、という話をしておきたいので書いておきたい、ので書いておく。 squash and mergeのメリットは書いてある通りで、基的にPR内の細かい修正というのはゴミみたいなコミットが多く、メッセージも雑なことが多いので、それをコミットログに残しておくのは嫌だということがある。それよりは意味のある単位のコミットを残しておきたいし、それの単位はPRで行うのが良い、ということだ。 “Google-style” workflow デメリットの方は、いわゆるfeature branchというワークフローで顕在化する問題であると思う。で解決策はあり、それはワークフロ

    squash and mergeしか使ってないけど全く困ってない
  • Git の Squash マージをやめた話 - Mobile Factory Tech Blog

    こんにちは!ブロックチェーンチームでエンジニアをしている id:dorapon2000 です。最近買ってよかったものは「潮の華 あおさといわしふりかけ」です。 今回は Git の Squash マージについての知見を共有したいと思います。端的に言うと、 チーム開発で Non Fast-Forward マージをやめて Squash マージを採用し、再び Non Fast-Forward マージに戻した経緯の説明です。Squash マージを運用に導入するか考えたことがある方の参考になればと思います。 Squash マージとは マージには 3 種類ありますね。みなさんはトピックブランチを main へマージする際にどのマージ方法を利用していますか? Fast-Forward マージ git merge --ff-only Non Fast-Forward マージ git merge --no-f

    Git の Squash マージをやめた話 - Mobile Factory Tech Blog
  • 『GitUI』を使ってターミナルからでも直感的なGit操作を|NAVITIME_Tech

    こんにちは、みみぞうです。 ナビタイムジャパンで『システムや開発環境、チームの改善』を担当しています。 今回はターミナルで動くGitクライアントツール『GitUI』を紹介します。 稿は以下のいずれかに当てはまるような方をターゲットにしています。 ターミナルで動くGitクライアントツールを探している方 NeovimからシームレスにGitの操作をしたい方 Windowsで使えるGitクライアントツール探しに困っている方 ℹ️ Neovimは、Vimをベース拡張性を考慮してモダンな技術で作られたプロダクトです。 GitUIとは『GitUI』はターミナル上でもGUIのように快適なGit体験を提供するOSSのツールです。 GitUI provides you with the comfort of a git GUI but right in your terminal extrawurst/gi

    『GitUI』を使ってターミナルからでも直感的なGit操作を|NAVITIME_Tech
    mas-higa
    mas-higa 2023/10/13
    "GUIのように快適な" git に限らず vcs の GUI 版で快適だった経験はないなぁ
  • あるレポジトリのサブディレクトリ配下を別のレポジトリへ履歴付きで移行する - $shibayu36->blog;

    Gitで開発していて、あるサブディレクトリ以下を別のレポジトリに移行したいと思うことがある。今回はそういうことをしてみたのでメモ。 まずGitHubにそのようなやり方の指南がある(Splitting a subfolder out into a new repository - GitHub Docs)。大体これで良いのだけれど、このやり方だとサブディレクトリのpathがそのままになってしまうという問題がある。大抵のケースで、あるサブディレクトリを別のレポジトリに分割したいとなった時、そのサブディレクトリがレポジトリルートに来てほしい。 そういう場合はGit Filter Repo — Splitting a Subfolder Into A New Repository | by Edward Ezekiel | Mediumにも紹介されているようにgit filter-repo --s

    あるレポジトリのサブディレクトリ配下を別のレポジトリへ履歴付きで移行する - $shibayu36->blog;
    mas-higa
    mas-higa 2023/06/28
    そんなん出来るんですか!
  • Gitのコミットメッセージの書き方(2023年ver.)

    記事のモチベーション 約8年前、Gitを使い始めたときに以下の記事を公開したところ、想像以上の反応をいただきました。 当時はSubversionからGitに移行し、試行錯誤をしている中だったこともあり、多くの反応をいただけたことはモチベーションのひとつでした。 ただ、時が経ち、当然かもしれませんが現在は当時と違う書き方をしており、思想として変わっていない部分はあるものの、今でもときどきLikeをいただく中で、アップデートを全くしないのは誠実じゃないなと感じていました。 というわけで、現在のフォーマットも数年後には変わっている可能性が高いですが、その時々のスナップショットを公開することにも何らか意味があるかなと思い、「今の僕はこうコミットメッセージを書いているよ」というのをまとめました。 Gitを使う環境 開発フローやホスティングサービスごとのUIのdiffによって、最適なフォーマットは変

    Gitのコミットメッセージの書き方(2023年ver.)
  • git push -f が更に安全になる --force-if-includes - id:onk のはてなブログ

    歴史改変、してますか? 私は歴史改変が大好きで、毎日 rebase しています。なので割と毎日 git push -f することになっています。 口で -f と言っても、実際には --force-with-lease --force-if-includes をしているので、これらのオプションのご紹介。 この記事は はてなエンジニア Advent Calendar 2022 の 18 日目です。昨日は id:rokoucha さんで 壊れたデータベースとの向きあいかた - rokoucha でした。 qiita.com -f の危険性 ...--F--G--H <-- main という状態で push した後、H をコミットし直したとしよう。 ...--F--G--H' <-- main \ H <-- origin/main このまま H' (main) を origin/main に p

    git push -f が更に安全になる --force-if-includes - id:onk のはてなブログ
    mas-higa
    mas-higa 2022/12/19
    こうして I は守られたわけだけど、H' はどうやって捩じ込んでるの?
  • Gitは最初1244行しかなかった

    概要 Junio C Hamanoさんに興味を持って調べていると、Linusさんが書いたGitの初版は1244行ということが分かりました。Gitの初版について、軽く行数の確認とビルドチャレンジをして、あまり調べずに動かしながら機能を推測してみました。 はじめに Highlights from Git 2.39 の冒頭で登場するcommit数が一番多い方「Junio C Hamano」さんを知らなかったので調べてみました。 gihyoのインタビュー記事が面白かったです。Junio C HamanoさんはGitのメンテナで、LinusさんからGitのメンテナを引き継いだすごい方だということを知りました。 このgihyoのインタビュー記事の中で「MLで流れてきたGitのコード行数は1244行だった」というところが気になりました。調べてみると、2020年にTwitterでRui Ueyamaさんへ

    Gitは最初1244行しかなかった
  • macOSのCopy-on-Write機能を使ってディスクを節約した話 - DeNA Testing Blog

    こんにちは、SWETでCI/CDチームの前田( @mad_p )です。 SWETではCI/CDチームの一員として、Jenkins運用のサポートや、CI/CD回りのノウハウ蓄積・研究をしています。 はじめに 先日開催されましたCEDEC 2022にて、Gitリポジトリの肥大化に対応した事例を発表しました。これはそのフォローアップ記事となります。以前に出した記事の続編でもあります。 発表資料は次の場所に置いていますので、参照してみてください。 CEDiL(要登録): https://cedil.cesa.or.jp/cedil_sessions/view/2600 Speaker Deck: https://speakerdeck.com/dena_tech/kaorumaeda_cedec2022 Gitリポジトリの肥大化問題 前提となっている課題をおさらいしておきます。 Gitリポジトリは

    macOSのCopy-on-Write機能を使ってディスクを節約した話 - DeNA Testing Blog
  • Gitのおすすめエイリアス5選 - ちなみに

    motemen.hatenablog.com 触発されて自分も地味だけどよく使っているのを紹介します。 変更を無視してpullする (git st-pull) st-pull = "!git stash && git pull && git stash pop" 手元に変更があってまだコミット出来ないけど、最新の変更をpullして持ってきたいときに使う。 軽減される労力はめっちゃ小さいけど、積み重なるとそれなりに時間を使っているのでこういう手抜きは重要。 タグやリモートの一覧を表示する (git tags / git remotes) tags = tag -l remotes = remote -v ちょっと一覧したいだけなのに微妙にやり方が違っていつも混乱するので複数形で一覧出来るようにしています。 今見ているブランチGitHubで表示する (git open) open = !gh

    Gitのおすすめエイリアス5選 - ちなみに
    mas-higa
    mas-higa 2022/04/07
    このタイトルなら「いかがでしたか」で終わってほしかった
  • Git squashで複数のコミットを1つでまとめる

    概要オープンソースへコミット(Commit)する時や会社のソースコードを修正する時、普通、1つの課題(Issue)を作って、その課題を基準にしてブランチを作ります。そして、このように作ったブランチへ修正内容をコミット(Commit)します。しかし、普通はコミット1つで全ての修正を反映することができないです。フロントサイドの修正コミット、サーバーサイドの修正コミット、テストコードのコミット、コードレビュー対応コミットなど、1つの課題を修正するため、様々なコミットが発生します。 このように生成された様々なコミットをマージ(Merge)してもいいですが、オープンソースや色んな人が一緒に作業する会社のソースコードの場合、コミット履歴が多くって、複雑になって、コミットの履歴を追跡することが難しくなります。 これを避けるため、このブログポストではGitのSquash機能について説明します。 Git S

    Git squashで複数のコミットを1つでまとめる
  • Gitの操作を間違ってしまった時に簡単に元に戻せる「git undo」を使う方法

    プログラミングを行う上でバージョン管理システムとしてよく利用される「Git」において、ほとんどの操作をやり直せるコマンド「git undo」をTwitterで働くエンジニアのarxanasさんが開発・公開しています。 git undo: We can do better https://blog.waleedkhan.name/git-undo/ Gitはユーザーのさまざまなうっかりミスに対してデータが失われにくい構造に設計されているものの、実際に操作ミスをしてしまった際にもとの状態に戻すにはそれぞれの状況に応じて別のコマンドを使わなくてはならず、「初心者がさらに間違いを重ねて複雑怪奇な状態にしてしまう」というケースがありがち。 こうした状況を解決するためにarxanasさんが開発したのが「git undo」です。git undoはその名の通り、間違って行ってしまった操作をやり直せるコマン

    Gitの操作を間違ってしまった時に簡単に元に戻せる「git undo」を使う方法
    mas-higa
    mas-higa 2021/07/02
  • GitHub - isotai/git-tips: 最もよく使われるgitの小技と裏技

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - isotai/git-tips: 最もよく使われるgitの小技と裏技
  • マイGitしぐさ

    Git の操作は GUI だと分かりやすいが、何度も行う定型操作はコマンドのほうが速くて楽なので エイリアスをいろいろ登録している。 git コマンドはシェルの alias に記述することもできるのだが、.gitconfig 自体に[alias]があり、コマンドのネームスペースを分けたいので自分の場合はこちらで管理している。シェルの方にはalias g='git'だけ設定して、g aaといった感じの運用をする。 https://github.com/miyaoka/dotfiles/blob/master/.gitconfig ブランチの切り替えなど候補を出してインタラクティブに選択するところは fzf を使用する前提のコマンドになっている。 CLI でやるなら tig 使えばいいじゃないかという話でもあるが、以前 windows で使えなかったというのもあるので結局 alias を使う運

    マイGitしぐさ
    mas-higa
    mas-higa 2021/02/17
    alias やりすぎると人に説明するときに困る
  • Rails に Babel と Rollup を組み込んで CoffeeScript を JavaScript に段階的に移行した話 - クックパッド開発者ブログ

    こんにちは。技術クックパッドサービス基盤グループの青沼です。当グループではクックパッドレシピサービスを支える web アプリケーションの改善を進めています。今回はフロントエンドの改善の一環として、 Babel と Rollup を Rails のアセットパイプラインに組み込み、レガシーな CoffeeScript ファイルを ES2015+ の JavaScript に移行した話をします。 レシピサービスと CoffeeScript の歴史 クックパッドは10年以上の歴史を持つサービスです。中でもレシピサービスの web アプリケーションは初期に作られた Rails 2 アプリケーションがアップグレードを重ねながら今も動いています。2018年には Rails 3 から4へ、つい最近では4から5へのアップグレードを完了しました。 Ruby のコードはそれに伴って新しい書き方へと徐々に移行

    Rails に Babel と Rollup を組み込んで CoffeeScript を JavaScript に段階的に移行した話 - クックパッド開発者ブログ
    mas-higa
    mas-higa 2021/02/15
    "拡張子の変更だけを先に行ってコミットするのは地味ですが重要なポイントです"
  • git-notesでコミットにメモをつける - アジャイルSEの憂鬱

    2020年に「コミットログは良くならない」というのを悟ったので、現実的な解決案である「git-notesでメモを残す」について記事を書いておきます。 前回の記事 sinsoku.hatenablog.com git-notes 詳細は git notes --help を読んでください。 概要は以下の通りです。 コミットログとは別にメモを残せる コミットはそのままなのでshaは変わらない shaが変わらないのでCIの再実行が起きない 他人のコミットにメモをつけられる 他人に作業を依頼する必要がない メモもリモートにプッシュできる 過去のコミットにメモを残せる 使い方 メモを書く git notes edit <sha> でメモを書くと、git log のときに一緒に表示される。 $ git notes edit d2cdf0b $ git log -1 d2cdf0b commit d2c

    git-notesでコミットにメモをつける - アジャイルSEの憂鬱