タグ

gitに関するkazutanakaのブックマーク (99)

  • Git の 3-way merge とは具体的にどのようなアルゴリズムですか?

    「way」とは ここでの「way」とは、マージする際に "見て" いる場所のこと。3-way merge は 3 つの場所を見ている。 2-way merge:「マージの起点コミット」「マージさせたいコミット」を見てマージする 3-way merge:「マージの起点コミット」「マージさせたいコミット」「2 つのコミットの最近共通祖先となるコミット」を見てマージする アルゴリズムの概略 ここでは Git のデフォルト・マージ戦略である「recursive」にしたがった 3-way merge のアルゴリズムを書きます。簡単のために省略して書いています。 入力: コミットグラフ。マージの起点としたいコミット X。X にマージしたいコミット Y。 出力: マージできるかどうか。マージできるなら、マージ済みコミット Z を含む新しいコミットグラフ。マージできないなら、コンフリクト箇所。 手順 X

    Git の 3-way merge とは具体的にどのようなアルゴリズムですか?
  • 【開発】スカッシュマージを卒業しプロダクトを加速させるブランチ戦略へ | SocialDog Tech Blog

    こんにちは! 8月からSocialDogにジョインしたあっきーこと上田です!現在はチームリーダーとしてSocialDogの新規開発を仲間たちと励んでいます!開発たのしい〜〜〜!! ところで私はgitが大好きです。なぜ好きなのかを語るとこの記事が終わらないので割愛しますが、 SocialDogにジョインした後、なんと早速gitの運用変更に携わったので、その経緯や何をしたか、またおまけとしてマニアックなgitの活用方法について紹介していきます! スカッシュマージとそのメリットSocialDogでは以下の目的から2年ほどでプルリクエストをスカッシュマージで運用していました。 次のようなメリットがあるためです。 1トピック1コミットになるプルリクエストがマージされたときにコミットが1つになるため、流れが追いやすくなります。 つまりgitのログ検索の操作でハマる時間の削減ができます。 コミットを作る

    【開発】スカッシュマージを卒業しプロダクトを加速させるブランチ戦略へ | SocialDog Tech Blog
  • 3-way mergeについて調べた - Qiita

    今更過ぎるが3-way mergeについて勉強。 結論 2-wayだと片方に削除がある場合、もう片方が追加したとみなされる 適切にマージできなかった場合、削除した機能が残っている。という事態になってしまう 3-wayだと元のファイルがあるため、それぞれの差分がわかり、自動マージでも2-wayのような事態は発生しづらい サンプル データベースに管理者を登録するシステムがあったとする。 (コードはほんっとうに適当) マネージャから自分には管理者以外のユーザも利用できるように認証機能を外すよう依頼された。 同僚には名前とパスワードの重複を防ぐ事を依頼された。 今まで older.rb require 'database' data = Database.new puts "are you admin? [y/N]" unless gets.chomp == 'y' puts "canceled"

    3-way mergeについて調べた - Qiita
  • 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行しかなかった
  • #22 Gitメンテナ 濱野 純 | gihyo.jp

    今回のゲストは、分散バージョン管理システムGitのメンテナで『入門Git』(⁠注1)の著者、濱野純さんです。Linuxカーネルの開発者、Linus Torvaldsさんから引き継いでGitのメンテナになった経緯から、対談スタートです。 (撮影:武田康宏) Gitに関わった経緯 弾:Gitに関わったきっかけは? 濱:2005年の4月にLinuxカーネルのバージョン管理システムとして使われていたBitKeeperが使えなくなる[2]からということで、Linus君がいろいろありものを探したんだけど、使えるものがなくて、誰かがいいのを作ってくれるまでのつなぎというつもりで、とりあえず自分でもコードを書いた、というアナウンスをしました。それをカーネルメーリングリスト(ML)で見ていたんですが、たまたまボクの業がプロジェクトプロジェクトの合間だったんです。なんかおもしろそうなこと始まってるじゃん、

    #22 Gitメンテナ 濱野 純 | gihyo.jp
  • 大きなGitリポジトリをクローンするときの工夫を図解します - DeNA Testing Blog

    こんにちは、SWETでCI/CDチームの前田( @mad_p )です。 SWETではCI/CDチームの一員として、Jenkins運用のサポートや、CI/CD回りのノウハウ蓄積・研究をしています。 はじめに Gitリポジトリをクローンすると、ローカルフォルダにはそのリポジトリの全体がダウンロードされ .git というフォルダに格納されます。ブランチをチェックアウトすると、ブランチ内のファイルがワーキングツリーとして展開されます。この様子を図にするとこのようになります。 この .git とワーキングツリーの使うディスク容量を節約しようというのが今回のお話です。特にJenkinsにおいて、大きめのGitリポジトリをクローンしてくる場合に課題があり、いろいろ工夫してみたので、その結果を紹介します。同じCI/CDチームの加瀬による記事「大規模リポジトリで高速にgit cloneするテクニック」と内容

    大きなGitリポジトリをクローンするときの工夫を図解します - DeNA Testing Blog
  • ソースコードブランチ管理のパターン - Martin Fowler's Bliki (ja)

    https://martinfowler.com/articles/branching-patterns.html 最新のソース管理システムには、ソースコードのブランチを簡単に作成できる強力なツールが用意されています。しかし、最終的にはこれらのブランチをマージしなければならず、多くのチームは混み合ったブランチに対処するのに膨大な時間を費やしています。複数の開発者の作業をインテグレーションし、番リリースまでの道筋を整理することに集中して、チームが効果的にブランチを利用できるようにするためのパターンがいくつかあります。全体的なテーマとしては、ブランチを頻繁にインテグレーションし、最小限の労力で番環境に展開できる健全なメインラインを作ることに注力すべきだということです。 ベースパターン ソースブランチング ✣ メインライン ✣ 健全なブランチ ✣ インテグレーションパターン メインラインイン

  • Gitで日本語長文のdiffをとる方法 - Qiita

    (この記事はここからの転載です) 課題 日語の長文をgitで管理していると、ほんのちょっとの変更でもdiffでは行丸ごと変更されたことになり、変更点がよくわからないことがある。 二泊三日で小説を書く過激なイベントNovelJam 2018参加作品である高橋文樹氏の「オートマティック クリミナル」は、GitHubを使って執筆されている。小説では、git diffの欠点がはっきりでる。高橋氏は参加レポートで、こう書いている。 あと、今回得た重要な知見なのですが、Githubではある程度以上テキストが長くなってくると、数文字の調整で全部差分として判定されたりするので、小説には向いてないかなーと思いました。小説は行の移動とかがよく発生するので、GithubじゃなくてGitとの相性かもしれません。 普通にdiffを取る 確かに、普通にdiffをとるとその通り。コマンドラインで「オートマティック ク

    Gitで日本語長文のdiffをとる方法 - Qiita
  • Gitを一度はあきらめた人のためのわかりやすいスライド9選

    エンジニアの方はすでにGitを使用している方も多いと思いますが、最近ではGitを活用しているデザイナーの方も増えてきました。今回はGit初心者の方にもわかりやすく解説されているスライドをまとめてみました。Gitは使っているけど、うまく活用できていないという方にもオススメです! デザイナのためのGit入門

    Gitを一度はあきらめた人のためのわかりやすいスライド9選
  • 日本語版 : IBM Bluemix

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    日本語版 : IBM Bluemix
  • Cent OS 6.5上で GitLab 6.9.2を動かす - 発声練習

    バージョン管理システムにGitを使い始めて早1年強。研究室にGitHub風なGitフロントエンドが欲しいなと思っているところに以下の記事を見かけたのでインストールしてみる。 アルパカDiary:GitHubクローンのGitLabを5分でインストールした アルパカDiary:続・GitHubクローンのGitLabを5分でインストールした 環境 Cent OS 6.5 GitLabのインストール GitLab Omnibus project: README.mdのインストール手順は以下のとおり。 sudo yum install openssh-server sudo yum install postfix # sendmail or exim is also OK sudo rpm -i gitlab-x.y.z_omnibus-x.el6.x86_64.rpm # this is the

    Cent OS 6.5上で GitLab 6.9.2を動かす - 発声練習
  • 巨大なリポジトリ を Git で上手く扱う方法 | Atlassian Japan 公式ブログ | アトラシアン株式会社

    git は、コードベースの発展過程を記録し、開発者間の協同作業を効率化する強力なツールです。でも、記録対象のリポジトリがとてつもなく巨大なものになったときは何が起こるのでしょうか? この記事では、いくつかの異なる意味での巨大化に正しく対処するためのアイデアと手法を少し紹介してみたいと思います。 二種類の 巨大なリポジトリ よく考えてみると 巨大なリポジトリ が生ずる理由はおおまかに言って二つあります: 非常に長い期間にわたって履歴が積み上げられた (プロジェクトが非常に長い期間継続的に拡大を続けたために開発成果が積み重なった) 場合 巨大でしかも履歴の記録が必要なバイナリ データが存在し、それがコードに反映される場合 その両方の場合 即ち、リポジトリの巨大化は二つの異なる方向に向かって起こることになります。それは、作業ディレクトリのサイズ (即ち直近のコミットのサイズ) の問題と全体の履歴

    巨大なリポジトリ を Git で上手く扱う方法 | Atlassian Japan 公式ブログ | アトラシアン株式会社
  • WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows - 檜山正幸のキマイラ飼育記 (はてなBlog)

    分散バージョン管理システムの利用は拡大しています。そのなかでも最も人気のあるツールはGitでしょう。しかし、GitWindowsで使うのはなかなか困難でした。 Windows向けのGitであるmsysGitは、bashのコンソールを出して、最小限のUnix風コマンドライン環境を提供するものです。これは使いやすくありません。もう一つの選択肢であるTortoise Gitは、Windowsのエクスプローラー(ファイルマネージャ)に統合されたGUIツールですが、僕は「なんか違うな」と感じてました -- これは個人の感性の問題ですが、ファイルマネージャに横付けすることが、分散バージョン管理システムへの良いUIを提供するようには思えないのです。 ところが、最近は事情が大きく変わっています。使いやすいGUIツールとして、2013年6月に正式公開されたSourceTree for Windowsが存在

    WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Git を学ぶ - チュートリアル、ワークフローおよびコマンド | Atlassian

    Git は、元々 Linus Torvalds によって 2005 年に作られた、無料でオープンソースのバージョン管理システムです。他の SVN や CVS といった中央バージョン管理システムと違って、Git は分散型で、すべての開発者がローカル環境で彼らのコードのリポジトリの完全な履歴を持っています。これは、最初のリポジトリのクローン作成に時間がかかりますが、commitblame、diff、merge、log といったこれに続く作業を劇的にスピードアップします。 Git は多くの革新的で強力なワークフローやツールにつながる、リポジトリ履歴のブランチ、マージ、および書き換えに非常に役立ちます。プル リクエストは、チームが Gitランチでコラボレーションを行い、他のコードを効果的に見直すことができる、非常に人気のツールです。Git は現在世界で最も広く使用されているバージョン コント

  • git-flowでもgithub flowでもない、Git本家推奨のワークフロー

    このドキュメントは git.git (訳注: Gitプロジェクトのgitリポジトリ) それ自身で使われているワークフローの要素を書きとめ、 それを使いたいと思わせることを意図しています。 多くのアイデアが一般に適用できますが、 より少人数が参加する小さなプロジェクトで 完全なワークフローを必要とするのは稀です。 私たちはクイックリファレンスのためにひとまとまりの ルール をとりまとめ、 文章でそれぞれのルールへの動機を与えます。 言葉通りにとらないようにしてください; 重視すべきなのは、この文書のようなmanページの記述よりも あなたがそうすべき理由の方です。

  • Gitをバックエンドに使ったプログラマ向きWiki - Gitit - Masatomo Nakano Blog

    Wikiというものはとても便利なんだけど、 大量の文章を書くにはWebブラウザのインターフェースはまだまだ辛い オフラインで使えない(文章書くのは電車が一番) 複数の文章を再構成したり、一括で検索したり、置換したりは、Webだとやっぱりきびしい と言った欠点がある。 とは言え、誰でも気軽に編集できるWikiの魅力も捨てがたい。 そこで、「Wikiではあるんだけど、ローカルでも自分の好きなエディタで簡単に編集できるツールないかなー」と探してみたら、 Gitit というWikiを発見した。 ここ数日、結構な量のドキュメントをGititで書いてみて、わりと満足しているのだけど、検索してもGititの日語の情報があまり出てこないので紹介してみる。 Gititの特徴 コンテンツをGitのレポジトリに保存する。 そのGItレポジトリをcloneして好きなようにいじってからcommit/pushすれば

  • djot

    Djot (/dʒɑt/) Djot is a light markup syntax. It derives most of its features from commonmark, but it fixes a few things that make commonmark's syntax complex and difficult to parse efficiently. It is also much fuller-featured than commonmark, with support for definition lists, footnotes, tables, several new kinds of inline formatting (insert, delete, highlight, superscript, subscript), math, smart

  • Windows7にTortoiseGitをインストールしてGitHubにPushするまで

    「TortoiseGitのインストールからGitHubにPushするまで」をコマンド入力無しで誰にでもわかるようにと思って書きました。 GitHub For Windowsでも良いのですが「職場でTortoiseSVNなら使ったことあるよ。」っていう方にはTortoiseGitが使いやすいかなと思いまして。 「Gitでバージョン管理したい。」というデザイナーの方や「Git教えて。ってデザイナーの人から言われたんだけどGUIはよくわからない。コマンドなら教えてあげられるんだけど…。」というエンジニアの方にぜひ活用して頂けたらと思います。 「TortoiseGit」の具体的な使い方については後日書いていけたらなー。と思います。 誰かの役にたったらいいなと思います。

  • git? tig! | Atlassian Japan 公式ブログ | アトラシアン株式会社

    私は Git の大ファンですが、そのためほとんどの UI (ユーザーインターフェース)、特に IDE に統合されているものに関してはそれほどの大ファンではありません。これらの UI は複雑でややこしいのです。これらはいくつかの一般「VCS」言語をコマンドにマップしようとします。または隠しすぎるので、何が起こっているのか理解しずらくしてしまいます。更にひどい場合: Tcl/Tk で書かれています… 端的に言えば、私はこれらの UI を信頼していません。 コマンドラインは私のためのものです。自分のコマンドラインは好きなので、これは素晴らしいものです。ほとんどいつでも履歴の「グラフィック」ビューを見られることや、コミットを準備している時に少し助けてもらえるのは良いことです。 tig で入力する。tig はテキストモード、 Jonas Fonseca によって書かれた git 用の ncurses

    git? tig! | Atlassian Japan 公式ブログ | アトラシアン株式会社
  • こわくない Git

    8. コミットに入ってる情報 リビジョン (SHA-1 ハッシュ) 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db Author (コミットを作成した人) 例: オープンソースプロジェクトにパッチを送った人 Committer (コミットを適用した人) 例: 受け取ったパッチを取り込んだ人 ファイルのスナップショット (tree) コミットで変更されたファイルを含むツリー(説明は省略) 1つ前のコミットのリビジョン 例: 4717e3cf182610e9e82940ac45abb0d422a76d77 9. コミットに入ってる情報 リビジョン (SHA-1 ハッシュ) 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db Author (コミットを作成した人) 例: オープンソースプロジェクトにパッチを送った人 Co

    こわくない Git