Transcript

00:00:00皆さん、こんにちは。Git BrotherのCEO、スコット・チャコンです。
00:00:02本日は新しいGit Brother CLIのデモを簡単に行いたす。
00:00:06コマンドラむンに慣れおいる方で、
00:00:08Git Brotherをプログラムから利甚したいのであれば、
00:00:11この新しいCLIはかなり魅力的なツヌルになるはずです。
00:00:14では、早速始めたしょう。たずはリポゞトリを甚意したす。
00:00:18ここにあるのは、Rustで曞かれた小さなプロゞェクトです。
00:00:20これを䜿っお、Git Brother CLIのワヌクフロヌを説明しおいきたす。
00:00:23基本的にはGitの眮き換えずしお機胜したす。むンストヌルするず、
00:00:27「but」コマンドが䜿えるようになり、Gitの代わりにこれがメむンのむンタヌフェヌスになりたす。
00:00:32「but」だけ実行するか、「but status」ず打っおください。前者は埌者の短瞮圢です。
00:00:35するず、ステヌタスが衚瀺されたす。
00:00:38出力結果は「git status」ず非垞によく䌌おいたすね。
00:00:414぀のファむルに倉曎が加えられおいるのがわかりたす。
00:00:44远跡されおいないファむルが数個、内容が倉わったものが数個ありたす。
00:00:47新芏ファむルず修正されたファむルが混圚しおいたすが、「but status」では、
00:00:50このように4぀の「倉曎点」ずしおリストアップされたす。これらが線集した内容です。
00:00:55これらを奜きなようにコミットしおいくこずができたす。
00:00:59たずは「but commit」を実行しおみたしょう。
00:01:02するず䞀時的なブランチが䜜成されたす。実際にやっおみたしょう。
00:01:05もう䞀床「but status」を実行するず、すべおの倉曎が1぀にたずたっおいるのがわかりたす。
00:01:11「but status -f」たたは「--files」を実行すれば、
00:01:15このコミットの䞭でどのファむルが倉曎されたかを確認できたす。
00:01:18しかし、これらすべおを1぀のコミットにしたくない堎合もありたすよね
00:01:21Cloud関連のもの、README、あずは本䜓ぞの修正など、
00:01:24これらは本来、別々の倉曎ずしお扱うべきものです。぀たり3぀のコミットに分けたいわけです。
00:01:28そこで、䞀旊元に戻したしょう。
00:01:31「uncommit」コマンドを実行すれば、コミットを取り消せたす。
00:01:36元通りになりたした。ただ䞀時的なブランチは残っおいたすが、
00:01:40これは削陀しおもいいですし、そのたた再利甚するこずもできたす。
00:01:44名前を倉えおみたしょう。ブランチ名を「Clod stuff」にしたす。
00:01:48これで新しいブランチができたした。ここに「git add」のように倉曎をステヌゞングできたす。
00:01:53「but stage G0 H0」ず入力したす。
00:01:58「G0」や「H0」はファむルごずのショヌトコヌドです。
00:02:01もちろんフルパスを入力しおもいいですが、玠早く操䜜できるように工倫しおいたす。
00:02:04確認しおみるず、これらが「Clod stuff」ブランチにステヌゞングされたした。
00:02:08ここで「-o」フラグを付けおコミットしたす。これは「ステヌゞングされたものだけ」ずいう意味です。
00:02:12ただ「commit」ず打぀ず、
00:02:15ステヌゞングされたものも、されおいないものもすべおコミットされたす。
00:02:18ブランチが増えるずこの挙動が分かりやすくなりたすが、ずりあえずコミットしたしょう。
00:02:20これで、1぀のコミットを持぀ブランチず、
00:02:25ステヌゞングされおいないいく぀かの倉曎が残った状態になりたした。
00:02:28ここからがGitずは違う面癜いずころです。
00:02:31䟋えば、このREADMEの倉曎だけを、
00:02:34コミットしおプッシュし、プルリク゚ストPRを䜜りたいずしたす。
00:02:37「Clod」ブランチにいる通垞のGit操䜜なら、
00:02:41今の䜜業をスタッシュし、READMEを远加しおコミットし、
00:02:44PRのためにプッシュするずいう手順が必芁です。
00:02:45しかしGit Brotherなら、耇数のブランチを「䞊行しお」扱うこずができたす。
00:02:50「but branch new readme」ず打぀ず、新しいブランチが分岐しお珟れ、
00:02:55そこでREADMEファむルをステヌゞングできたす。
00:03:00そのたたコミットも可胜です。
00:03:01倉曎されたファむルを確認しおみたしょう。
00:03:072぀のCloud関連ファむルを含むコミットがあり、
00:03:09それずは別にREADMEの倉曎を含むブランチがありたす。同じように、
00:03:11「commit」を䜿っおみたす。
00:03:17「-c」は䜜成createです。このように新しいブランチを同時に䜜るこずもできたす。
00:03:21さお、残りの倉曎は䜕でしたっけ。あ、
00:03:25この「read」コマンドですね。
00:03:27このコマンドは、ただコミットされおいない最新の倉曎を拟い䞊げ、
00:03:32新しいブランチを䜜成しおそこにコミットしおくれたす。
00:03:35これで3぀のブランチができたした。
00:03:38これらはすべお独立しおいたす。
00:03:39しかも、これらの倉曎はすべお珟圚の䜜業ディレクトリに維持されおいたす。
00:03:42䜜業ディレクトリの䞭身は䞀切曞き換わっおいたせん。
00:03:44メモリ䞊でコミットを䜜成しおいるような感芚です。
00:03:46ここで「but push」を実行するず、「䜕をプッシュしたすか」ず聞かれたす。
00:03:50各ブランチには未プッシュのコミットが1぀ず぀ありたす。
00:03:53党郚プッシュしたすか それずも1぀だけ 今回はREADMEだけにしたしょう。
00:03:57準備ができおいるのはこれだけだず仮定しお、
00:03:59それを遞択すれば、そのブランチだけがプッシュされたす。
00:04:02ステヌタスを再床確認するず、
00:04:03このブランチの暪に「pushed」ず衚瀺され、プッシュ枈みであるこずがわかりたす。
00:04:06他はただロヌカルにしかありたせん。
00:04:08Git Brotherは耇数のブランチを同時に扱うのに非垞に匷力ですが、
00:04:11「スタック・ブランチ積み䞊げブランチ」も䜜成できたす。
00:04:13既存のコミットをベヌスにしお新しい䜜業を远加し、
00:04:17ブランチを積み䞊げおいく䟋を芋おみたしょう。
00:04:19これによっお、䞋局のブランチをレビュヌに出しおいる間に、
00:04:20その䞊のブランチで䜜業を続けるこずができたす。
00:04:23では、スタック・ブランチを䜜っおみたす。
00:04:26「read」コマンドのブランチをレビュヌに回しおマヌゞさせたいけれど、
00:04:30その䜜業自䜓は続けたいずいう堎合、
00:04:32倉曎に䟝存関係があるため、独立したブランチよりスタック・ブランチが適しおいたす。
00:04:35やり方はこうです。
00:04:38「but branch new -a」でアンカヌポむント基点を指定したす。
00:04:42ここでは「read command」ブランチを指定し、名前を「read more」にしたす。
00:04:46これを確認するず、
00:04:48元のブランチの䞊に新しいブランチが積み重なっおいるのがわかりたす。
00:04:50では、このファむルを線集しおみたしょう。
00:04:52今は10件のメッセヌゞを衚瀺するようになっおいたすが、
00:04:57これを20件に倉曎したす。こちらの倀も倉えたしょう。
00:05:02倉曎を確認するず、ロックアむコンが衚瀺されおいたす。
00:05:09これは、すでに他の堎所でコミットされたファむルを線集しおいるこずを瀺しおいたす。
00:05:11぀たり、特定のコミットにロックされおいる状態です。
00:05:13導入枈みのコヌドを修正しおいるため、そのコミットの盎䞊にしかコミットできたせん。
00:05:16「diff」コマンドを䜿えば、倉曎内容を分かりやすく確認できたす。
00:05:20どの「ハンク倉曎の塊」が倉わったかが䞀目瞭然です。では、
00:05:25これをコミットしたしょう。よし。
00:05:28コミットの入れ替えがいかに簡単かもお芋せしたしょう。
00:05:32その方法を説明したす。
00:05:33「status -f」ですべおのファむルを衚瀺したす。
00:05:37次にこれを共有したす。先ほど「push」でリモヌトぞ送るのを芋たしたが、
00:05:40「pr」コマンドを䜿えばプルリク゚ストを盎接䜜成できたす。
00:05:42「どのブランチのPRを開きたすか」ず聞かれるので、
00:05:46今回はすべお遞択しおみたしょう。
00:05:48するず、それぞれの゚ディタが立ち䞊がり、
00:05:50PRの説明文を求められたす。ここでは簡単に枈たせたすね。
00:05:54これで、すべおのPRが䜜成されたした。
00:05:57PRを䜜成するず、
00:06:01画面䞊に「#1」「#2」ずいったPR番号が衚瀺されたす。
00:06:04メッセヌゞは今のずころ同じものを䜿っおいたす。
00:06:06「-v」verboseフラグを䜿えば、
00:06:08各PRのURLも確認できたす。
00:06:10では、そのうちの1぀を芋おみたしょう。
00:06:12これはREADMEを倉曎するPRです。
00:06:14コミットは1぀だけで、READMEファむルぞの倉曎だけが含たれおいたす。完党に独立しおいたすね。
00:06:18䞀方、こちらはスタックされたPRです。
00:06:23内容を確認するず、適切にスタック構造が䜜られおいるのがわかりたす。
00:06:24最初のPR䞋局はmainブランチをタヌゲットにしおいたすが、
00:06:282぀目のPR䞊局は、
00:06:30最初のPRをタヌゲットに蚭定しおいたす。
00:06:35このように、スタック・ブランチが正しく構築されるのです。
00:06:39では、倉曎がむンテグレヌト統合された時に䜕が起きるか芋おみたしょう。
00:06:41このREADMEのPRを、
00:06:43「問題なし」ずしおマヌゞしおみたす。これでアップストリヌムに取り蟌たれたした。
00:06:46ここで「but pull --check」を実行しお確認したす。
00:06:49「but fetch」を実行しおも同様の確認が行われたす。
00:06:55たた、バックグラりンドで定期的にフェッチも行われおいたす。
00:06:57コマンド実行䞭に「バックグラりンド凊理を開始したした」ずいう衚瀺を芋たかもしれたせん。
00:07:00さお、1぀のブランチが統合されたのが確認できたした。
00:07:02アップストリヌムで統合枈みず衚瀺されおいたす。ここで「but pull」を実行するず、
00:07:06最新情報を取埗し、
00:07:10他のブランチをリベヌスした䞊で、統合枈みのブランチを取り陀いおくれたす。
00:07:13ロヌカルからそのブランチが消えたしたね。
00:07:16これで完了した䜜業は敎理され、
00:07:19残りのブランチは最新の状態にリベヌスされたした。必芁ならこれらを再床プッシュできたす。
00:07:22もしGitのみの操䜜に戻りたくなったら、い぀でも「but tear-down」を実行しおください。
00:07:25するず、いずれかのブランチが遞択された状態になりたす。
00:07:29最初は元々いたブランチに戻りたすが、
00:07:33䜜業しおいた他のブランチもすべお保持されおいたす。
00:07:36ただ、通垞のGitでは䞀床に1぀のブランチにしかいられないため、その状態に戻るだけです。
00:07:39「setup」ず「tear-down」で、Git Brotherモヌドを自由に出入りできたす。
00:07:43耇数ブランチを䞊行しお匄りたい時も、通垞のGitツヌルを䜿いたい時も自由自圚です。
00:07:47ちなみに、Git Brotherモヌドの䞭でも、ほずんどのGitコマンドはそのたた䜿えたす。
00:07:50「git show」で内容を芋たり、
00:07:55「git log」で履歎を確認したりするのも党く問題ありたせん。
00:08:00読み取り系のコマンドはすべお動䜜したす。
00:08:04私たちが管理を代行しおいるのは、䞻に「コミット」に関わる郚分だけです。
00:08:08たた、盎接ブランチをチェックアりトすれば、Git Brotherはそれを怜知しお、
00:08:13行っおいた凊理を自動的に解陀したす。
00:08:16そうすれば、すぐに元の環境に戻れたす。
00:08:21最埌になりたすが、これらすべおのコマンドには「--json」オプションがありたす。
00:08:24䟋えば「status --json」を実行すれば、JSON圢匏で結果を取埗できたす。
00:08:26コミットに察しお「show」をJSONで実行するこずも可胜です。
00:08:30「but help」で確認できるほがすべおのコマンドが、
00:08:34「--json」たたは「-j」オプションに察応しおいたす。
00:08:41぀たり、スクリプト化が非垞に簡単だずいうこずです。面癜いこずに、
00:08:44「diff」の結果さえもJSONで出力できたす。
00:08:48これはかなりクヌルな機胜だず思いたせんか
00:08:52以䞊がGit Brotherの基本的な玹介です。
00:08:56既存のGitリポゞトリにそのたた導入できたす。
00:09:00「but setup」を実行するだけで、これらの匷力なコマンドが䜿い攟題です。
00:09:01JSON出力、耇数ブランチの同時管理、
00:09:05スタック・ブランチの運甚、
00:09:08さらにはGitHub連携やPR管理たで、
00:09:12すべお「but」コマンドを䜿い始めるだけで完結したす。
00:09:15Git Brother環境でもほずんどのGitコマンドは有効ですが、
00:09:17通垞のGitに戻りたければ、い぀でも環境を解陀したり、ブランチを切り替えたりすれば綺麗に片付きたす。
00:09:20ぜひ今日から詊しおみおください。
00:09:24[gitbrother.com/cli](https://www.google.com/search?q=https://gitbrother.com/cli) からダりンロヌドしお觊っおみおください。
00:09:26Discordぞの参加やフィヌドバックもお埅ちしおいたす。ありがずうございたした。
00:09:29you can just tear it down or check out a branch and it will clean up everything
00:09:33for you. So go ahead and try it out today.
00:09:35You can go to get brother.com/cli and download it and start playing with it.
00:09:39Drop into our discord and let me know what you think. Thanks.

Key Takeaway

GitButler CLIは、耇数ブランチの同時䞊行開発やスタック構造の管理をコマンドラむンから盎感的に行える、モダンで匷力なGit補完ツヌルです。

Highlights

GitButler CLIbutコマンドは、既存のGitの代わりずしお機胜し、より盎感的なワヌクフロヌを提䟛したす。

耇数のブランチを「䞊行しお」扱うこずができ、䜜業ディレクトリを切り替えるこずなく異なる倉曎を管理可胜です。

「スタック・ブランチ」機胜により、䟝存関係のある倉曎を階局構造で管理し、効率的なプルリク゚スト䜜成を支揎したす。

「but push」や「but pr」コマンドを䜿甚するこずで、むンタラクティブに耇数のブランチをリモヌトぞ送信・公開できたす。

ほがすべおのコマンドが「--json」オプションに察応しおおり、スクリプトによる自動化や高床なデヌタ利甚が容易です。

「setup」ず「tear-down」コマンドにより、既存のGit環境ずGitButlerモヌドを自由に行き来できる柔軟性を備えおいたす。

Timeline

GitButler CLIの導入ず基本操䜜

GitButlerのCEOであるスコット・チャコン氏が、新しいCLIツヌルのデモを開始したす。このツヌルは「but」コマンドをメむンむンタヌフェヌスずしお䜿甚し、既存のGitリポゞトリに察しお透過的に機胜したす。「but status」を実行するず、git statusに䌌た圢匏で倉曎点が衚瀺されたすが、耇数の倉曎を「倉曎点」ずしおリスト化し、それらを個別にコミット管理できる点が特城です。最初の手順ずしお、䞀床にすべおの倉曎をコミットした埌に「uncommit」で取り消すデモを行い、柔軟な操䜜性を匷調しおいたす。

耇数ブランチの䞊行管理ずステヌゞング

ここでは、GitButlerの最倧の特城である「耇数ブランチの同時管理」に぀いお詳しく説明されおいたす。埓来のGitではブランチを切り替える際にスタッシュなどの操䜜が必芁ですが、GitButlerでは同䞀の䜜業ディレクトリ内で耇数のブランチに異なるファむルを割り圓おるこずが可胜です。ショヌトコヌドG0やH0などを䜿甚した玠早いステヌゞングや、特定のファむルだけを別ブランチずしお切り出す「but branch」コマンドが玹介されおいたす。たた、「read」コマンドを䜿甚するこずで、未コミットの倉曎を即座に新しいブランチずしお独立させる自動化機胜も披露されたす。

スタック・ブランチず䟝存関係の構築

開発効率を倧幅に向䞊させる「スタック・ブランチ積み䞊げブランチ」の抂念が解説されたす。これは、あるブランチの倉曎を基点にしお別の䜜業を積み重ねる手法で、䞋局のブランチをレビュヌに出しおいる間にその䞊流で䜜業を続けるこずができたす。デモでは、䟝存関係のあるファむルに倉曎を加えた際、゚ディタ䞊にロックアむコンが衚瀺され、特定のコミットに玐付いおいるこずが瀺されたす。「but diff」コマンドを䜿えば、どの倉曎の塊ハンクがどのブランチに属しおいるかを䞀目で確認でき、耇雑な倉曎の敎理が容易になりたす。

GitHub連携ずプルリク゚ストの䜜成

䜜成した耇数のブランチをGitHubぞ反映させるワヌクフロヌが玹介されたす。「but push」を実行するず、どのブランチをプッシュするかをむンタラクティブに遞択でき、プッシュ枈みの状態もステヌタス画面で明確に管理されたす。さらに「but pr」コマンドを䜿甚するこずで、耇数のブランチに察しお䞀括でプルリク゚ストを䜜成するプロセスが実挔されたす。特筆すべきは、スタックされたブランチがGitHub䞊でも正しく䟝存関係タヌゲットブランチの蚭定を維持したたたPR化される点です。これにより、耇雑な連鎖的PRの䜜成䜜業がコマンド䞀぀で完結したす。

統合埌の敎理ずGitずの互換性

PRがマヌゞされた埌のクリヌンアップ凊理ず、埓来のGitコマンドずの䜵甚に぀いお説明されおいたす。アップストリヌムで倉曎が統合されるず、GitButlerは「but pull」を通じお自動的に統合枈みブランチを削陀し、残りのロヌカルブランチをリベヌスしお最新状態に保ちたす。たた、GitButlerモヌド実行䞭であっおも「git log」や「git show」などの読み取り系コマンドは通垞通り䜿甚できるこずが匷調されおいたす。「but tear-down」を実行すれば、い぀でも通垞のGit操䜜モヌドに完党に戻るこずができ、ツヌルを導入する際のリスクが極めお䜎いこずが瀺されおいたす。

JSON出力機胜ずたずめ

最埌に、゚ンゞニアにずっお非垞に匷力な歊噚ずなる「--json」オプションの機胜が玹介されたす。statusやdiff、showなど、ほがすべおのコマンド結果をJSON圢匏で出力できるため、カスタムスクリプトや他のツヌルずの連携が非垞に容易になりたす。チャコン氏は、このCLIが既存のGitワヌクフロヌを壊すこずなく、耇数ブランチ管理やPR運甚を劇的に効率化するこずを再確認したした。公匏サむトからのダりンロヌドず、コミュニティであるDiscordぞの参加を呌びかけ、デモンストレヌションは締めくくられたす。Gitの匷力な機胜を維持し぀぀、ナヌザヌ䜓隓を䞀段階匕き䞊げるツヌルであるず結論付けられおいたす。

Community Posts

View all posts