Menu
Coddy logo textTech

Git プレイグラウンド

コードスニペットを書いて、実行して、共有できます - セットアップ不要。

Git ターミナル
user$ git init
user$ echo "hello" > app.txt
user$ git add app.txt
user$ git commit -m "Add app.txt"
user$ git checkout -b feature
user$ echo "new feature" >> app.txt
user$ git commit -am "Work on feature"
user$ git checkout main
user$ echo "fix" > fix.txt
user$ git add fix.txt
user$ git commit -m "Hotfix on main"
user$ git merge feature
user$
リポジトリブランチ main
git log --oneline --graph --all

このステップ後のコミット

  • ea85bd9 Merge branch 'feature' (HEAD -> main) <- f5363c6, 47b6cfb
  • 47b6cfb Work on feature (feature) <- b2134da
  • f5363c6 Hotfix on main <- b2134da
  • b2134da Add app.txt
  • 作業ツリーはクリーンです

実行するたびにスクリプト全体を再生し、各行の後でリポジトリのスナップショットを取ります。ステップをクリックすると、その時点のグラフが表示されます。

よく使う Git コマンドを試す

この端末では Git も動きます。用意されたワークフローをプロンプトに読み込み、「実行」を押して各コマンドの動作を確認し、理解したいコマンドの完全なガイドを開きましょう。

リポジトリを作成して最初のコミットをするリポジトリを初期化し、ファイルをステージして、コミットし、状態を確認します。
  1. git init
  2. git config user.name "You"
  3. git config user.email "you@example.com"
  4. echo "# My Project" > README.md
  5. git add README.md
  6. git commit -m "Initial commit"
  7. git status
  8. git log --oneline
ブランチを作成してマージするブランチを切り、変更を加えてコミットし、そのブランチを main にマージします。
  1. git init
  2. echo "hello" > app.txt
  3. git add app.txt
  4. git commit -m "Add app.txt"
  5. git checkout -b feature
  6. echo "new feature" >> app.txt
  7. git commit -am "Work on feature"
  8. git checkout -
  9. git merge feature
  10. git log --oneline --graph
直前のコミットを取り消す後悔するコミットを作成し、変更を残したまま取り消します。
  1. git init
  2. echo "v1" > notes.txt
  3. git add notes.txt
  4. git commit -m "Add notes.txt"
  5. echo "v2" >> notes.txt
  6. git commit -am "Oops, wrong message"
  7. git reset --soft HEAD~1
  8. git status
  9. git commit -m "Update notes.txt"
  10. git log --oneline

コミットグラフがリアルタイムで動くオンライン Git プレイグラウンド

JavaScript による模倣ではなく、隔離された Linux ターミナルで本物の git を動かす無料の Git プレイグラウンドです。左側にコマンドを入力し - git initgit addgit commitgit branchgit mergegit rebasegit reset - 実行を押すと、右側のリポジトリパネルがスクリプトの 1 行ごとにコミットグラフ、ブランチ、HEAD、ワークツリーを描き直します。Git をオンラインで練習し、各コマンドが何をしたのかを実際に目で確かめる最速の方法です。

実行のたびにスクリプト全体が空のフォルダから再生され、各ステートメントの後にリポジトリのスナップショットが記録されます。だから任意のステップをクリックすれば、その瞬間のグラフをそのまま見られます。git reset が置き去りにしたコミットも薄く表示されたまま残るので、取り消しが何を取り消したのかが分かります。インストール不要、アカウント不要、あなたのリポジトリには一切触れません。

この Git プレイグラウンドが違う理由

  • 本物の Git、本物の出力: サンドボックスは Linux 上で本物の git バイナリを実行するため、エラーメッセージも git log --graphgit status もフラグも、手元のマシンと同じように動きます。作者がモデル化したコマンドしか知らない Git シミュレーターとは違います。 意図的な違いが 1 つだけあります。作者情報とコミット日時は固定されているため、ハッシュは実行のたびに同じになります。
  • 1 行ごとに更新されるコミットグラフ: ブランチはレーン、マージは曲線、HEAD と各 ref はコミット上のラベルとして描かれ、さらに git status から読み取ったステージ済み・変更済み・追跡外・コンフリクト中のファイルも表示されます。ステップをクリックすればセッションの履歴を行き来できます。
  • みんながよく検索するコマンドを練習: コミットの取り消し、コミットの squash、main への rebase、cherry-pick、stash、マージコンフリクトの解決、安全な force-push。下にある既成のワークフローを読み込むか、Git コマンドリファレンスの任意のページで「ライブで試す」を押してください。
  • ネットワークなしでリモートを練習: ローカルの bare リポジトリを作り、origin として追加して、git pushgit fetchgit pullgit clone を試せます。グラフには origin/mainmain の隣で動く様子が出ます。
  • 決定的な実行: 日時と作者情報が固定されているので、同じスクリプトからは常に同じコミットハッシュが得られます。スクリプトを友達に共有すれば、二人とも同じグラフを見られます。

Git プレイグラウンドで試してみること

  • ブランチとマージ: git checkout -b feature でブランチを切ってコミットし、main に戻ってそこでもコミットしてから git merge feature を実行し、マージコミットが 2 本のレーンをつなぐ様子を見てみましょう。
  • 安全に取り消す: 後悔するコミットをしてから git reset --soft HEAD~1 を実行し、コミットがグラフから薄れていく一方で変更がステージ済みファイルとして戻ってくるのを確認します。続けて git revert も試して比べてみてください。
  • rebase と merge の比較: 同じ 2 ブランチの履歴を 2 回作り、一方を git merge、もう一方を git rebase main で仕上げて、2 つのグラフの形を並べて比べます。
  • わざとマージコンフリクトを起こす: 2 つのブランチで同じ行を変更してマージし、ファイルがコンフリクト行に現れるのを見ます。修正して git addgit commit を実行すれば、コンフリクトが解消されます。

Git プレイグラウンド FAQ

この Git プレイグラウンドは無料ですか?
はい。Git プレイグラウンドは無料で、登録もインストールも不要です。ページを開き、コマンドを入力して、実行を押すだけです。
これは本物の Git ですか、それともシミュレーションですか?
本物の Git です。実行のたびに、隔離された Linux コンテナ内の本物の git バイナリでスクリプトが実行されるため、コマンド、フラグ、出力、エラーメッセージはローカルで見えるものと一致します。意図的に追加しているものが 2 つあります。デフォルトの作者情報 (ローカルと同じように、あなた自身の git config user.name で上書きできます) と、固定されたコミット日時です。これによりコミットハッシュが毎回同じになります。実行の途中で入力を求めることはできないので、git rebase -i のような対話的なコマンドにはスクリプトで指定したエディターが必要です - 例で方法を紹介しています。
コミットグラフはどう動いていますか?
スクリプトの各ステートメントの後に、サンドボックスがリポジトリのコミット、ref、HEAD、stash 一覧、git status を記録します。ページはそのスナップショットからグラフを描きます。ブランチごとに 1 レーン、マージは曲線、各 ref はラベルです。ステップ番号をクリックすると、その行の直後のリポジトリの状態を見られます。 非常に長いセッションでは、それ以前のプロンプトは最後の状態だけが記録され、ステップの帯には実際に記録された状態だけが表示されます。
ここでブランチ、マージ、rebase を練習できますか?
はい、グラフはまさにそのためにあります。ブランチを作ってコミットし、マージ、rebase、cherry-pick、reset、revert を実行して、各操作が図をどう変えるかを確かめてください。裏側で本物の Git が動く、実践的なブランチ学習ゲームの代わりになります。
git push、pull、fetch、clone は使えますか?
ローカルのリモートに対してなら使えます。サンドボックスにはネットワークアクセスがないため、git clone https://… はインターネットに到達できません。サブフォルダに bare リポジトリを作り (git init --bare remote.git)、origin として追加すれば、そこに push、fetch、pull、clone できます。リモート追跡ブランチは GitHub のときと同じようにグラフに現れます。
作業は実行のあいだ保持されますか?
いいえ。実行のたびに空のフォルダから始まり、スクリプト全体が再生されます。それこそがタイムラインを可能にしている仕組みです。コマンドはプロンプトに残しておき (Shift+Enter で行を追加)、最初のスクリプトに戻すにはリセットを使ってください。
オンライン Linux ターミナルとは何が違いますか?
同じサンドボックスのターミナル (Git もそこで動きます) に、リポジトリパネルを足したものです。Linux ターミナルのページはシェルのコマンドやスクリプト向けで、このページは 1 行ごとにコミットグラフとワークツリーの状態が記録されるようにセッションを組み立てています。
Git をゼロから教えるコースはありますか?
はい。Coddy の無料 Git コースは git init からブランチ、マージ、rebase、リモートまで、採点付きの演習で進みます。また Git コマンドリファレンスの各コマンドページには「ライブで試す」ボタンがあり、実行できるサンプル付きでこのプレイグラウンドが開きます。