タグ

gitとrebaseに関するn2sのブックマーク (40)

  • コミット履歴を綺麗にするときの`git commit --fixup`と`git rebase --autosquash` - 理系学生日記

    Pull Request(PR)やMerge Request(MR)を作る中で、コミット履歴はできるだけ綺麗にしておきたいものです。 プルリクエストについて - GitHub Docs Merge requests | GitLab ぼくはあまりコミット履歴の綺麗さを気にしない方でした。 しかし大きめのPRやMRをレビューする側に回ると、「変更のまとまり」が追えないと「なぜこの変更をしたのか」が非常に追いにくくなります。 だからこそ最近は、コミット履歴をかなり意識するようになりました。 その時に活躍しているのが、タイトルの通りgit commit --fixupとgit rebase --autosquashです。 git commit --fixup git rebase --autosquash そのほかおすすめ git commit --fixup git commit --fixu

    コミット履歴を綺麗にするときの`git commit --fixup`と`git rebase --autosquash` - 理系学生日記
    n2s
    n2s 2021/01/19
  • git rebase で squash しつつ edit したりコミットを分割したりする - Qiita

    pick d94123a 001 pick d9b3511 002 pick b3f6c3e 003 pick 3a76981 004

    git rebase で squash しつつ edit したりコミットを分割したりする - Qiita
    n2s
    n2s 2018/03/29
    exec false
  • なぜ git rebase をやめるべきか - Frasco

    Git での開発を数年間経験した後、徐々に日々の仕事の一部として、より高度な Git コマンドを使うようになりました。私は Git rebase を見つけてすぐにそれを毎日の仕事に使いました。リベースに精通している人は、どれだけ強力で魅力的なツールであるのか知っているでしょう。しかし、リベースには、初めてリベースを触ったときにはわからなかったのですが、いくつかの課題があることに気が付きました。これを説明する前に、マージとリベースの違いをおさらいしておきましょう。 最初に、feature ブランチを master にマージする例を考えてみましょう。マージすることにより、新しいマージコミット g を作成します。下のコミットグラフではマージした際に何が起こるのかを説明しています。また、開発が盛んなリポジトリでよく見かける「線路」のようなグラフになっているのが見て取れるでしょう。 マージの例 ある

    なぜ git rebase をやめるべきか - Frasco
    n2s
    n2s 2017/11/24
  • WIP: `git rebase` を Git Object から考察する - Qiita

    多分巷で噂になっているであろうSVN脳の方が書いた記事を読んで、 「あれ? Git もチェンジセットの保存じゃなくてスナップショットの保存だよね?」とか 「え、むしろ SVN もスナップショットの保存をベースとした SCM だったんか!」とか 「多分何が当に違うって、branch の概念なんだろうな」とか色々な気づきを得ることができたわけですが、 それで「git rebase -iにおけるsquashとは、途中の不要なコミットを単に削除することだ」と思ったりする。そうするとコミットの順番を並び替えたりできることの説明がつかず、結局「rebaseはわからん」と匙を投げることになる。 の そうするとコミットの順番を並び替えたりできることの説明がつかず、結局「rebaseはわからん」と匙を投げることになる。 という部分に関しては完全に同意で、よくわかっていなかったので、せっかくなので学ぼうと思

    WIP: `git rebase` を Git Object から考察する - Qiita
    n2s
    n2s 2017/02/02
  • PullRequestベースの開発ではGit Rebase使った方がいい - Qiita

    岩手県立大学ソフトウェア情報学部 Advent Calendar 2015の4日目です。 @otukutunではなく、私が書いてみました。 1年早いですね。 今年はQiita全然かけませんでしたが、Advent Calendarで挽回していきたいと思います。 みなさん、Git Rebase使ってますか? 私は正直なんか怖いと思っていました。 ログが書き換わるとか、 Pushするときに強制的にしないといけないとか、 なんでそんなことしなきゃいけないの? と ずっと謎だったのですが、 最近、一緒に開発している方から教えてもらったので、 共有したいなと思います。 そもそも なんで Git Rebaseするのか? はじめに、Rebaseの意味とは、 Re Baseなので、 基点を変える ということです! なんでそんなことをするかと言いますと、 最新のコミットをPullRequestで送るためです!

    PullRequestベースの開発ではGit Rebase使った方がいい - Qiita
    n2s
    n2s 2015/12/05
  • マージコミットのあるブランチでのgit rebaseには-pオプションを付ける - Qiita

    僕の会社ではmasterブランチからtopicランチをきって開発を行っています。 topicランチにmasterの差分を取り入れたいときは、mergeではなくrebaseで行うよう推奨しているのですが、稀にmergeでmasterの変更を取り入れてしまう人がいて、topicランチにmasterブランチからのマージコミットログが残っています。 masterのHEADにマージコミットがある場合はgit reset等を使って、マージコミットをなかった事にしてもらっているのですが、 例) master |  topic |   | |  ○ | / | ○  ○ |  | ○  ○ | / ○ masterのマージコミットの上にさらにtopicランチでの開発をすすめている場合は、修正が厄介です。 例) master |  topic |  | |  ○ C4 |  | |  ○ C3 |

    マージコミットのあるブランチでのgit rebaseには-pオプションを付ける - Qiita
    n2s
    n2s 2015/07/23
  • GitHubでの”Merge pull request”の弊害 | POSTD

    私は GitHub が大好きです。GitHubはオープンソースへの コントリビューション (寄与貢献)を何十倍も容易に、そして楽しいものにしたと思います。ですが、GitHubがPull RequestというwebのUI形式で前面に押し出しているオープンソースの メンテナー のワークフローが、プロジェクト品質とコントリビューションを受けつけるスピードの弊害になるということに気がつきました。そこで、GitHubの Pull Request にある「Merge pull request」ボタンをクリックする前に、少しお話をさせてください。 メンテナーの紹介 ジェーンはそこそこの成功を収めているオープンソースプロジェクトのメンテナーです。彼女は毎週プロジェクトGitHubリポジトリに上がる新しい Issue を確認し、リクエストに対し速やかにフィードバックを返します。リクエストをすべて実行する時

    GitHubでの”Merge pull request”の弊害 | POSTD
  • GitHubな話 〜git rebase -i編〜 | ten-snapon.com

    ペパボに入ってはや1ヶ月が経とうとしています。 おかげさまで毎日楽しく、新鮮な日々を過ごしています。 入社後2週間は研修やらオリエンテーションを実施してもらえたので 実務に入ってから2週間たったところです。 技術的な壁やコードがわからないといった状況は今のところ ないのですが、チームで開発するにあたって、まだまだ適応できていない 部分があるので週末ちょっと整理してみました。 ペパボではコードの履歴管理や業務でGitHubを利用しています。 既存コードの改修を行う際は、改修の単位でブランチを立てて、 プルリク投げて、各々ブランチを育てて、改修が終わったら チームメンバーがチェックしてマージするというのが基的な流れで、 僕自身まだちょっとうまくやれてない感じです。 問題点 PR(プルリク)の記載情報、スコープがダサい コミットの単位がばらばら 特にコミットの単位がばらばらなのがちょっとつらた

    GitHubな話 〜git rebase -i編〜 | ten-snapon.com
  • git rebase 失敗した時の対処法 - Qiita

    git add . git commit -am "message" git push origin master 最後のpushがうまくいかない時(他の誰かがpushしてる時)の解決策の1つとして、rebaseしてからpushする方法がある。

    git rebase 失敗した時の対処法 - Qiita
    n2s
    n2s 2014/08/19
  • tigから git rebase -i したらいろいろ捗った - くりにっき

    git dtコマンド - razokulover publog を見て自分もgitのコマンドをカスタマイズしてるのを思い出したので普段よく使っているのを紹介します。 対象者 作業途中はtmpコミットをたくさん作って、最後に git rebase -i でコミットを整えている人 前置き gitのタイプ数を減らす gitコマンドを使う時に毎回 git と3文字タイプするのは時間の無駄なのでエイリアスつけるのをおすすめします ~/.bash_profile とか ~/.bashrc 辺りに下記を書きます。 alias g='git' これで g だけでgitコマンドが使えます git-now iwata/git-now tmp コミットのための独自サブコマンド git-now - アジャイルSEを目指すブログ 最速でtmpコミットするためのコマンド。Macなら brew install git-

    tigから git rebase -i したらいろいろ捗った - くりにっき
  • git rebaseと仲良くなろう~part2 - Qiita

    rebaseのinteractiveモードってなんぞや 2個以前の前のコミットメッセージを編集したり、 コミットをまとめたりできることです。 例を見てみましょう コミットメッセージを編集する コミットログを見て、 $ git log --oneline 68be895 commit D 71c87eb commit E 8ed1455 commit C 73c200d commit B 9110548 commit A $ git rebase -i 73c200d pick 8ed1455 commit C pick 71c87eb commit E pick 68be895 commit D # Rebase 73c200d..68be895 onto 73c200d # # Commands: # p, pick = use commit # r, reword = use comm

    git rebaseと仲良くなろう~part2 - Qiita
    n2s
    n2s 2014/07/22
  • Git rebaseの影響で同内容のコミットが量産される件について - Qiita

    こうしてコミットhogehoge3が作成された。 ここで問題。 ブランチ"feature/fuga" にも、コミットhogehoge3を反映したい。 このとき、どういう操作をすればいい? feature/fugaにて を再度行えばいい? (つまり、 hogehoge1, hogehoge2, fugafuga1, fugafuga2 から hogehoge1, hogehoge2, hogehoge3, ffuuggaa1, ffuuggaa2 にする) ただ、feature/fugaがローカルにのみ存在している場合はそれでもいいが、 既にリモートにpushされていた場合、コミットのSHA-1が変化してしまい、 同内容のコミットが複数現れることになってしまうのでは…? fugafuga1とffuuggaa1の内容は同じだが、SHA-1が違うので別のコミットとみなされてしまうはず。 …えーと

    Git rebaseの影響で同内容のコミットが量産される件について - Qiita
    n2s
    n2s 2014/06/18
  • 初心者でもわかる!リベースの使い方を解説します | 株式会社LIG(リグ)|DX支援・システム開発・Web制作

    こんにちは、エンジニアの王です。今回は、Git初心者を悩ませるリベースについて解説してみたいと思います。 リベースが初耳 リベースを聞いたことはあるけど、使っていない 不安を抱えながらも、リベースをなんとなく使っている 上記に当てはまる方は、ぜひ読んでくださいね。 リベースで何ができる? コミットが綺麗になる! 以上です! この一言に尽きる! 具体的にどのように綺麗になるかというと…… コミット履歴がわかりやすくなる コミットメッセージを後から変える コミットの順序を後から変える 2つ以上のコミットを1個に統合する 一度コミットした内容を編集する といった具合でしょうか? 整理整頓が好きな方は、ぜひリベースを使いこなしていただきたいと思います! マージとリベース 2つのブランチの変更点を統合するとき、Gitの最も一般的なやり方は、マージとリベースを使うことです。マージは初回で説明したので、

    初心者でもわかる!リベースの使い方を解説します | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
    n2s
    n2s 2014/05/07
  • rebase 直後に、自分が修正していたファイルが変更されたかどうかを調べる - Qiita

    して、 a - b - c - d' - e' -f' になるように rebase したときに、 d,e,f で修正していたファイルが a,b,c で変更されていないかを調べる (f(rebase前) と f'(rebase後) の差分を出す。ただし、diff の対象とするのは a と f で差分があったファイルのみ) 終わり・・・としたいところですが、このままだと汎用的に使えないのでもうちょっとコマンドを一般的にしていきます。 コマンドの一般化 コマンドがみやすいように f' を 指しているブランチが f-dash というブランチ名だとします git diff f-dash@{1} f-dash -- $(git diff --name-only $(git merge-base f-dash@{1} f-dash) f-dash@{1}) 簡単な説明 git diff f-dash@{

    rebase 直後に、自分が修正していたファイルが変更されたかどうかを調べる - Qiita
  • gitリポジトリを公開するための☆過去書き換え☆テクニック | 月と燃素と、ひと匙の砂糖

    ____ /      \ /  _ノ  ヽ、_  \ / o゚((●)) ((●))゚o \  ほんとはgithubで公開したいんだお… |     (__人__)    | \     ` ⌒´     / ____ /      \ /  _ノ  ヽ、_  \ /  o゚⌒   ⌒゚o  \  でもMySQLのパスワードとか |     (__人__)    |   公開できない情報が入ってるんだお… \     ` ⌒´     / ____ /⌒  ⌒\ /( ●)  (●)\ /::::::⌒(__人__)⌒::::: \   だから過去を書き換えるお! |     |r┬-|     | \      `ー'´     / と、いうわけで、書き換えです。 githubにソースコードを置きたい…でも公開できない情報が…。ありそうなのはこんなケース? MySQLのパスワードが書い

  • Pro Git: 6.4 Git のさまざまなツール - 歴史の書き換え

    1. 使い始める 1.1 バージョン管理に関して 1.2 Git略史 1.3 Gitの基 1.4 コマンドライン 1.5 Gitのインストール 1.6 最初のGitの構成 1.7 ヘルプを見る 1.8 まとめ 2. Git の基 2.1 Git リポジトリの取得 2.2 変更内容のリポジトリへの記録 2.3 コミット履歴の閲覧 2.4 作業のやり直し 2.5 リモートでの作業 2.6 タグ 2.7 Git エイリアス 2.8 まとめ 3. Git のブランチ機能 3.1 ブランチとは 3.2 ブランチとマージの基 3.3 ブランチの管理 3.4 ブランチでの作業の流れ 3.5 リモートブランチ 3.6 リベース 3.7 まとめ 4. Gitサーバー 4.1 プロトコル 4.2 サーバー用の Git の取得 4.3 SSH 公開鍵の作成 4.4 サーバーのセットアップ 4.5 Git

  • 複数のマージをまとめてrevertする - Qiita

    参考URL mergeコミットをrevertする git revert で複数コミットを打ち消す 結論 git revert (複数コミットを取消) ↓ git rebase -i (取消コミットを統合) 解説 まず取消たいブランチをチェックアウトする

    複数のマージをまとめてrevertする - Qiita
    n2s
    n2s 2013/10/18
  • git rebaseを使うときのルール | Yakst

    Re: [git pull] drm-next Linus Torvalds Sun, 29 Mar 2009 14:48:18 -0700 (訳注 : Daveのrebaseのやり方が好みでないというLinusに対して) > 2009年5月29日(日曜日) Dave Airlieの発言 > > 今から自分がしようとしているのは、直線じゃないツリーを送ろうとしているだけだ。 > パッチを自分の次のツリーにマージする時はいつでも、そこにそれがあるからだ。 > 自分は、Ericのツリーを自分のツリーに直接プルして、その結果を送ろうとしている。 > きれいなマージ履歴について注意しているとは思っているけど、前に言ったように、 > カーネルツリーに関してのドキュメントが何もない状態では、君がどうしたいのか > 当のところは今の今まで分からないよ。 自分が求めているのは、きれいな履歴だ。でも、それ

    git rebaseを使うときのルール | Yakst
    n2s
    n2s 2013/08/01
    人の履歴、公開レポジトリにpushした履歴をrebaseするな、と。これはよく言われてることですね。
  • git rebase -i をちょっと楽にするエイリアス - Qiita

    いつもいつも git rebase -i HEAD^^ を打つのが めんどくさいので作ってみました。 使用例 git irebase → git rebase -i HEAD~2 git irebase 5 → git rebase -i HEAD~5 数字をつけるとその数さかのぼる git irebase ^^^ → git rebase -i HEAD^^^ ^ や ~ だけの場合、 HEAD からさかのぼる git irebase 2 develop →git rebase -i HEAD~2 develop ブランチ指定も可 詳しくはソースを参照の事。 以下を git-irebase として PATH の通ったディレクトリに置いて使います。 https://github.com/yosugi/git-irebase にも上げておいたので、 お好きな方をどうぞ。 #!/usr/bin

    git rebase -i をちょっと楽にするエイリアス - Qiita
    n2s
    n2s 2013/07/29
  • continuous commit のお供、git rebase を決定的に刷新する最強ツール Uchronie をリリースしました - tomykaira makes love with codes

    2013-07-13 continuous commit のお供、git rebase を決定的に刷新する最強ツール Uchronie をリリースしました Scala Git いままで git rebase -i に何度泣かされたことでしょう。 git は最高のツールですが(他の SCM に勝るという意味ではありません)、あれは非常に出来がわるい。 テストを回すたびに自動コミットする continuous commit のプラクティスを採用している私達にとって、 interactive rebase は頭痛の種でした。 (continuous commit については Continuous Commit (kyon_mm さんの発表資料)、最近の git の使い方について - tomykaira makes love with codes など)。 git-rebase--interact

    n2s
    n2s 2013/07/14