最初に
TortoiseGitとは
TortoiseGitは、Windows用の強力なGitクライアントで、Gitの操作を直感的に行えるように設計されています。TortoiseGitは、Windowsエクスプローラーと統合されており、右クリックメニューから直接Gitの操作を行うことができるため、コマンドラインを使うことなく、簡単にリポジトリの管理やファイルのバージョン管理を行うことができます。
TortoiseSVNに慣れている人には親しみのあるユーザーインターフェースになっています。
TortoiseGit内部では Git for Windows をコマンド実行しています。
TortoiseGitの特徴と利点
- 直感的なインターフェース: Windowsエクスプローラーと統合されており、Gitの操作が右クリックメニューから簡単に行えます。
- 強力な視覚ツール: コミットの履歴やブランチの構造を視覚的に表示するツールが搭載されており、複雑なプロジェクトでも状態を把握しやすくなっています。
- 高度な機能: スタッシュ、チェリーピック、リベースなどの高度なGit操作をサポートしており、プロフェッショナルな開発者にも十分な機能を提供します。
他のGitクライアントとの比較
TortoiseGitは、他のGitクライアントと比べても非常に優れたユーザーインターフェースと機能を持っています。例えば、コマンドラインツールである Git Bashと比べると、TortoiseGitは操作が視覚的で直感的であるため、特にGit初心者にとって使いやすいです。また、SourceTreeや GitKrakenなどの他のGUIクライアントとも比較されることが多いですが、TortoiseGitはWindowsとの親和性が高く、軽量で動作が高速な点が強みです。
本記事を作成した環境
OS: Windows 10
Git for Windows: 2.46.0 64bit
TortoiseGit: 2.16.0.0 64bit
TortoiseGit LanguagePack: 2.16.0.0 64bit
Gitサーバー(リモート側)
GitのサーバーにはGitHub系とGitLab系があります。
今回はGitHubを使っています。
アカウント
GitHubにアカウントを作成しログインする
https://github.com/ で「Sign in」か「Sign up」をクリック。
リポジトリ
GitHubのリポジトリを作成する
「New repository」をクリック。
もしくは「Repositories」タブで「New」をクリック。
「Create a new repositories」ページで任意の値を入力し「Create a new repository」をクリック。
- インターネットに公開して良いオープンな情報のみであればPublic、個人情報を含んでいたり仕事で使うファイルを含む場合はPrivate。GitHubのPrivateリポジトリから情報が漏れたという事件は起きていないので信頼してる。
- VisualStudioの開発を行う場合、「Add .gitignore」に「VisualStudio」を指定すると、余計なファイルがGitに登録されなくて便利。
- 誰でも利用して良ければライセンスは「MIT License」。
GitHubのリポジトリに共同作業するユーザーを追加する
「Settings > Collaborators」ページで「Add people」をクリック。
ブランチ
リモートブランチを作成する
ブランチの作成はローカル側で行います。
新しいブランチを作成する
作成したローカルブランチをリモート側へ反映する(プッシュ)
リモート側にプッシュ済みのブランチを確認する
「Repositories」タブで任意のリポジトリをクリック。
「Code」タブで「Branches」をクリック。
「Branches」ページで確認できる。
リモート側のブランチ名を変更
「Repositories」タブで任意のリポジトリをクリック。
「Code」タブで「Branches」タブをクリック。
任意のブランチの「Rename branch」をクリック。
新しいブランチ名を入力し「Rename branch」をクリック。
リモート側のブランチを削除する
「Repositories」タブで任意のリポジトリをクリック。
「Code」タブで「Branches」タブをクリック。
削除するブランチのゴミ箱アイコンをクリック。
リモート側のブランチ間でソースコードを比較する
「Repositories」タブで任意のリポジトリをクリック。
「Code」タブで「Branches」タブをクリック。
main以外の任意のブランチをクリック。
※最初にmainブランチを選択すると他ブランチと比較できない。
「Code」タブで「Contribute > Compare」をクリック。
「Comparing changes」ページで、履歴の違いやソースコードの違いを確認できる。
デフォルトではmainブランチと比較した結果が表示される。
比較対象のブランチは任意に変更できる。
プルリクエスト(マージリクエスト)
mainブランチへプッシュできる権限を管理者のみに制限している場合、制限ユーザーは自分の作業ブランチをGitHubへプルした後、GitHub上で作業ブランチをmainブランチへマージするプルリクエストを作成する。
管理者はプルリクエストの内容をレビューし、問題無ければプルリクエストを承認し、制限ユーザーの作業ブランチをmainブランチへマージする。
※プルリクエスト(マージリクエスト)は、VSS/CVS/SVNには無かったソースコード管理のワークフロー。開発者それぞれがmainブランチへ直接コミット/プッシュする小規模プロジェクトでは、プルリクエストは使わない。
※GitHubは「プルリクエスト」、GitLabは「マージリクエスト」と呼称している。
プルリクエストを作成する(マージリクエストを作成する)
※プルリクエスト作成は制限ユーザー側で行う作業。
「Pull requests」タブで「New pull request」をクリック。
「Comparing changes」ページの「Create pull request」をクリックしてもプルリクエストを作成できる。
「Open a pull request」ページで任意の値を入力し「Create pull request」をクリック。
通常はmainブランチかリリース対象のブランチに対してプルリクエストを作成する。
プルリクエストを承認する(マージリクエストを承認する)
プルリクエストの承認は管理ユーザー側で行う作業。
「Pull requests」タブで承認するプルリクエストをクリック。
プルリクエストの内容に問題が無ければ「Merge pull requests」をクリック。
確認画面で「Confirm merge」をクリック。
mainブランチにマージされた。
プルリクエストを取り下げる(マージリクエストを取り下げる)
「Repositories」タブで任意のリポジトリをクリック。
「Pull requests」タブをクリック。
取り下げるプルリクエストをクリック。
「Close pull request」をクリック。
プルリクエストが取り下げられた。
タグ
タグを作成する
タグの作成はローカル側で行う。
特定のコミットやマージをした時点のタグを作成する
タグを削除する
「Code」タブで「Tags」をクリック。
任意のタグで「Delete tag」をクリック。
確認MSGで「Delete this tag」をクリック。
Gitクライアント(ローカル側)
TortoiseGitをダウンロード
https://tortoisegit.org/download/ から、TortoiseGit本体のインストーラーと、Language Packのインストーラーをダウンロード。
TortoiseGitをインストール
TortoiseGit本体のインストーラー(TortoiseGit-2.16.0.0-64bit.msi)を実行。
※古いTortoiseGit本体が既にインストール済みでも上書きインストール可。
「Next」をクリック。
「Next」をクリック。
デフォルト値のまま「Next」をクリック。
「Install」をクリック。
デフォルト値のまま「OK」をクリック。
インストール後、初期セットアップ ウィザードを起動する。
「Run first start wizard」を選択し「Finish」をクリック。
ここまで進んだら、TortoiseGit本体のセットアップ ウィザードはそのままにして、LanguagePackを先にインストールする。
LanguagePackのインストーラー(TortoiseGit-LanguagePack-2.16.0.0-64bit-ja.msi)を実行。
※古いLanguagePackが既にインストール済みでも上書きインストール可。
「次へ」をクリック。
デフォルト値のまま「OK」をクリック。
確認MSGで「OK」をクリック。
LanguagePackのインストールが終わったら、TortoiseGit本体のセットアップ ウィザードに戻り「Refresh」をクリック。LanguagePackの選択肢が追加されている。
Languegeで「日本語」を選択し「次へ」をクリック。
「次へ」をクリック。
ここまで進んだら、TortoiseGit本体のセットアップ ウィザードはそのままにして、最新の Git for Windowsをダウンロードし先にインストールする。
https://gitforwindows.org/からインストーラーをダウンロード。
ダウンロードしたインストーラー(Git-2.46.0-64-bit.exe)を実行。
オプションは全てデフォルトで問題ない。
※古いGit for Windowsが既にインストール済みでも上書きインストール可。
「Next」をクリック。
デフォルト値のまま「Next」をクリック。
確認MSGで「はい」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Next」をクリック。
デフォルト値のまま「Install」をクリック。
デフォルト値のまま「Finish」をクリック。
Git for Windows のインストールが終わったら、TortoiseGit本体のセットアップ ウィザードに戻り「次へ」をクリック。
「名前」「メール」に任意の値を入力し「次へ」をクリック。
デフォルト値のまま「完了」をクリック。
TortoiseGit操作
クローン
GitHubリポジトリをローカルフォルダに展開する(クローン)(チェックアウト)
「Repositories」タブで任意のリポジトリをクリック。
「Code」を開きURLをコピー。
※事前にクローンするGitHubリポジトリのURLをコピーする。
Windowsエクスプローラーで任意のフォルダを右クリックし「Gitクローン(複製)」を選択。
「Gitクローン」画面で任意の値を入力し「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
ローカルの現在ブランチが「main」になっていることを確認できる。
プル
ローカルにリモート側の最新履歴を反映する(プル)
クローンしたフォルダを右クリックし「Git同期」を選択。
「Git同期」画面で「プル」をクリック。
「Git同期」画面で「閉じる」をクリック。
同期(プル)した際にローカル側の修正とリモート側の修正が競合(confrict)した場合は競合を解消する
クローンしたフォルダを右クリックし「Git同期」を選択。
「Git同期」画面で「プル」をクリック。
確認MSGで「OK」をクリック。
「Git同期」画面で競合しているファイルを1つずつダブルクリック。
「TortoiseGitMerge」画面の下ウィンドウに赤で表示されている競合行を右クリックし、「左のテキストブロックを使用」(MERGE_HEAD)のリモートブランチ側を採用するか、「右のテキストブロックを使用」(HEAD)のローカルブランチ側を採用するか、両方のブランチを採用するか選択する。
「左のテキストブロックを使用」(MERGE_HEAD)のリモートブランチ側を採用した状態。
「ctrl + s」キーを押すか「保存」をクリックし編集した結果を保存する。
確認MSGで「解決済みとする」をクリック。
「Git同期」画面で競合した全ファイルの編集が終わったら「閉じる」をクリック。
全ての競合が解消したら、VisualStudioなどでビルドエラーが発生していないか、実行時に不具合が発生していないか確認してから、下記コミットを行う。
クローンしたフォルダを右クリックし「Gitコミット」を選択。
確認MSGで「OK」をクリック。
「コミット」画面で「コミット」をクリック。
確認MSGで「無視」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
競合したソースコードを Visual Studio Code で編集し競合(confrict)を解消する
「Git同期」画面で競合したファイルを右クリックし「プログラムを指定して開く」を選択。
「Visual Studio Code」を選択し「OK」をクリック。
VSCode画面で「<<<<<<<」「>>>>>>>」を検索し、競合箇所を直接編集し保存するか、「マージエディターで解決」をクリック。
「マージエディターで解決」をクリックした場合、どちらのソースコードを採用するか選択、もしくは下部ウィンドウで直接編集し、競合を解消したら「マージの完了」をクリック。
フェッチ
リモート側の全ブランチの更新履歴をローカルに取り込む(フェッチ)
「同期」「プル」だと現在ブランチのみリモート側の更新履歴をローカルに取り込みます。全ブランチでリモート側の更新履歴をローカルに取り込みたい場合は「フェッチ」が必要です。
クローンしたフォルダを右クリックし「フェッチ」を選択。
「フェッチ」画面で「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
リモート側で削除済みのブランチをローカルから消す
クローンしたフォルダを右クリックし「フェッチ」を選択。
「フェッチ」画面で「リモートに無いブランチを削除」を選択状態にし「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
履歴
ローカル側ブランチの更新履歴を確認する
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面で任意の履歴、任意のファイルをクリック。
「TortoiseGitMerge」画面で変更箇所を確認できる。
リモート側ブランチの更新履歴を確認する
※この作業で確認できるリモート側ブランチの履歴は、ローカルに取り込んだ履歴なので、事前にフェッチを行いリモート側の最新履歴をローカルへ反映しておくのが望ましい。
リモート側の全ブランチの更新履歴をローカルに取り込む(フェッチ)
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面でブランチ名をクリック。
「refブラウザ」画面で「remotes」配下の任意のブランチをダブルクリック。
「ログメッセージ」画面に表示されているブランチ名が「remotes」配下のブランチに変り、リモート側ブランチの履歴を確認できる。
任意のファイルをクリックすると「TortoiseGitMerge」画面で変更箇所を確認できる。
ブランチ
新しいブランチを作成する
クローンしたフォルダを右クリックし「ブランチを作成」を選択。
「ブランチを作成」画面で任意の値を入力し「OK」をクリック。
※通常は「基点」で最新のmainブランチから新しいブランチ(作業ブランチ)を派生させ、作業ブランチで新機能を実装する。
※現在ブランチを作成したブランチへ即切り替える場合は「新しいブランチに切り替える」を選択。
右クリックで作成したブランチに切り替わっていることを確認できる。
※作成されたのはローカルブランチ。この段階ではローカルにブランチが作成されただけで、リモート側にはまだ作成されていない。リモート側へ反映するにはプッシュが必要。
作成したローカルブランチをリモート側へ反映する(プッシュ)
現在ブランチをローカル側の別ブランチへ切り替える
クローンしたフォルダを右クリックし「切り替え/チェックアウト」を選択。
「切り替え/チェックアウト」画面で切り替え先のブランチを選択し「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
現在ブランチが切り替わっていることを確認できる。
現在ブランチをリモート側の別ブランチへ切り替える
クローンしたフォルダを右クリックし「切り替え/チェックアウト」を選択。
「切り替え/チェックアウト」画面でブランチのボタンをクリック。
「refブラウザ」画面で「remotes」配下の任意のブランチをダブルクリック。
「切り替え/チェックアウト」画面で任意の値を入力し「OK」をクリック。
※リモート側のブランチへ切り替える場合、同期用のローカルブランチが必要です。
※これまでに切り替えたことのないブランチであれば「新しいブランチを作成」を選択。
※これまでに切り替えたことがあり、ローカルに既に同期用ブランチがあれば「既存のブランチがあれば上書きする」を選択。
※ローカルブランチのコミット履歴を破棄し、リモート側と同じ状態にしたい場合は「作業ツリーの変更を上書きする(force)」を選択。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
特定のコミットやマージをしたその時点に切り替える
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面で任意の履歴を右クリックし「ここへ切り替え/チェックアウト」を選択。
「切り替え/チェックアウト」画面で任意の値を入力し「OK」をクリック。
指定したコミットと同期用のローカルブランチ名はデフォルト入力される。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
現在ブランチは同期用のローカルブランチに切り替わっている。
「ログメッセージ」画面でログを確認すると、選択した履歴以降の作業は無くなっている。
ローカルのどのブランチがリモートのどのブランチと対応付けされているのか確認する
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面で「heads」を選択。
「ブランチ名」がローカルブランチ、「追跡対象のブランチ」がリモートブランチ。
ローカルのブランチ名を変更
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面で任意のローカルブランチを選択し「F2」キーを押すと「ブランチ名」を編集できる。
「refブラウザ」画面でブランチ名が変更されたことを確認できる。
リモートのブランチ名を変更
リモート側のブランチ名の変更はGitHub(GitLab)のWEBサイト上で行います。
リモート側のブランチ名を変更
ローカルのブランチを削除
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面で「heads」配下にある任意のブランチを右クリックし「ブランチを削除」を選択。
確認MSGで「はい」をクリック。
「refブラウザ」画面でブランチが削除されたことを確認できる。
※プッシュする必要はない。
リモートのブランチを削除
※大文字小文字が区別されず、TortoiseGitからリモートブランチを削除しても、GitHub(GitLab)から削除されない場合、リモートブランチの削除はGitHub(GitLab)管理画面から行う。
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面で「remotes」「tags」配下にあるブランチを右クリックし「リモートブランチを削除」を選択。
確認MSGで「はい」をクリック。
「refブラウザ」画面でブランチが削除されたことを確認できる。
コミット
現在ブランチにファイルを追加変更してコミットする
Gitクローンしたフォルダにファイルを作成。
クローンしたフォルダを右クリックし「Gitコミット」を選択。
「コミット」画面で任意の値を入力し「コミット」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
複数のコミット履歴を1つのコミット履歴に集約する
ローカルブランチで細かくコミットしていた履歴を、リモート側へ反映する前に1つのコミットに集約すると、他の人がコミット履歴の内容を把握し易くなる。
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面で1つに纏めたいコミット履歴を右クリックし「一つのコミットに集約」を選択。
※集約できるコミットは、ローカルブランチのマージ履歴後のコミットのみ。マージを跨いだコミットを集約する場合は、新しいブランチを作成し、チェリーピックで必要なコミットを取得した後、取得したコミットを集約する必要がある。
「コミット」画面で任意の値を入力し「コミット」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
「ログメッセージ」画面で履歴が1つに集約されたことを確認できる。
※コミットを集約した後のプッシュは「強制(force)」を選択しないとエラーになる。
修正したソースコードの差分を確認する
クローンしたフォルダを右クリックし「差分」を選択。
「作業ツリー」画面でファイルをダブルクリック。
「TortoiseGitMerge」画面で差分が表示される。
※修正後(右枠)は直接編集し保存できる。
※ソースコードの差分を見る際は「全空白類の変更を無視」にしておくと見易い。
修正したソースコードがリモート側のソースコードと競合(confrict)した場合は競合を解消する
クローンしたフォルダを右クリックし「Gitコミット」を選択。
「コミット」画面で任意の値を入力し「コミット」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
クローンしたフォルダを右クリックし「プッシュ」を選択。
「プッシュ」画面で「OK」をクリック。
「Gitコマンド実行中」画面で「プル」をクリック。
※リモート側の履歴がローカルブランチに反映されていない場合、「error: failed to push some refs to」エラーになる。
「プル」画面で「OK」をクリック。
確認MSGで「OK」をクリック。
※リモート側のローカル側との競合はプルのタイミングで発生する。
※プルした際、リモート側の修正箇所がローカル側の修正箇所と違う行であれば、TortoiseGitが自動でマージしてくれるので競合しない。
※同じ行が修正されていた場合、競合が発生し「Automatic merge failed; fix conflicts and then commit the result. 」エラーになる。
「Gitコマンド実行中」画面で「競合を解決」をクリック。
「競合の解決」画面で競合しているファイルをダブルクリック。
「TortoiseGitMerge」画面の下ウィンドウに赤で表示されている競合行を右クリックし、「左のテキストブロックを使用」(MERGE_HEAD)のリモートブランチ側を採用するか、「右のテキストブロックを使用」(HEAD)のローカルブランチ側を採用するか、両方のブランチを採用するか選択する。
※「左のテキストブロックを使用」(MERGE_HEAD)のリモートブランチ側を採用した場合。
競合箇所に対処したら「ctrl + s」キーを押すか「保存」をクリック。
確認MSGで「解決済みとする」をクリック。
「競合の解決」画面から競合を解消したファイルは消える。
「競合の解決」画面で競合しているファイルが無くなくなるまで、ファイル単位にこの作業を繰り返す。
全ての競合が解消したら、VisualStudioなどでビルドエラーが発生していないか、実行時に不具合が発生していないか確認してからコミットする。
クローンしたフォルダを右クリックし「Gitコミット」を選択。
確認MSGで「OK」をクリック。
「コミット」画面で「コミット」をクリック。
確認MSGで「無視」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「プッシュ」をクリック。
※競合解消済みのソースコードをプッシュしリモートブランチへ反映する。
「プッシュ」画面で任意の値を入力し「OK」をクリック。
「Gitコマンド実行中」画面で「閉じる」をクリック。
特定のコミットを取り消す(Revert)
※修正したソースコードがリモート側のソースコードと競合(confrict)した場合は競合を解消する のように競合(confrict)を解消しプッシュしたMerge履歴をリバート(Revert)してはいけない。競合箇所以外の他の人の修正も取消(Revert)される事故が発生する。
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面で「このコミットの変更を戻す」を選択。
確認MSGで「はい」をクリック。
確認MSGで「OK」をクリック。
クローンしたフォルダを右クリックし「Gitコミット」を選択。
「コミット」画面で「コミット」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
取り消し(Revert)したコミットは他の修正と同様に、「ログメッセージ」画面の履歴に追加される。
プッシュ
作成したローカルブランチをリモート側へ反映する(プッシュ)
クローンしたフォルダを右クリックし「プッシュ」を選択。
「プッシュ」画面でリモート側のブランチ名を入力し「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
ローカルブランチがリモートに反映されているか確認する
事前にフェッチしローカルをリモートの最新状態に更新しておく。
リモート側の全ブランチの更新履歴をローカルに取り込む(フェッチ)
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面で「remotes」配下を選択し、ブランチが追加されていることを確認。
現在ブランチの変更をリモート側へ反映する(プッシュ)
クローンしたフォルダを右クリックし「プッシュ」を選択。
「プッシュ」画面で任意の値を入力し「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
現在ブランチの変更がリモート側に反映されているか確認する
クローンしたフォルダを右クリックし「ログを表示」を選択。
※「ログメッセージ」画面でデフォルトで表示されるコミット履歴はローカルブランチの履歴。
「ログメッセージ」画面でブランチ名をクリック。
「refブラウザ」画面で「remotes」配下の任意のブランチをダブルクリック。
「ログメッセージ」画面でリモートブランチの履歴を確認できる。
現在ブランチをリモート側へ別ブランチとしてバックアップする
クローンしたフォルダを右クリックし「プッシュ」を選択。
「プッシュ」画面でリモート側に存在しないブランチ名をリモートに入力し「OK」クリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
GitHubにバックアップされているか確認。
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面で「remotes」配下にブランチが追加されている。
プッシュ時のパスに階層を指定しブランチを種類ごとに纏める
クローンしたフォルダを右クリックし「プッシュ」を選択。
「プッシュ」画面でリモートに「/」区切りのパスを入力し「OK」をクリック。
※「/」区切りにするだけで階層構造にできる。存在しないパスは自動で作成される。
※mainブランチにマージ予定の機能を個別に実装しリモート側へプッシュする場合、「feature」の下に纏めるのが一般的。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面でブランチが階層化されているのを確認できる。
プッシュしたコミットのプルリクエストを作成する(マージリクエストを作成する)
プルリクエストの作成は GitHubサーバ側で行います。
プルリクエストを作成する(マージリクエストを作成する)
タグ
特定のコミットやマージをした時点のタグを作成する
現在ブランチをタグを作成したいブランチに切り替える。通常はmainブランチ。
現在ブランチをローカル側の別ブランチへ切り替える
ローカルブランチを最新の状態にする。
ローカルにリモート側の最新履歴を反映する(プル)
リモート側の全ブランチの更新履歴をローカルに取り込む(フェッチ)
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面で任意の履歴を右クリックし「このバージョンでタグを作成」を選択。
「タグを作成」画面で任意の値を入力し「OK」をクリック。
「ログメッセージ」画面で履歴にタグが追加される。
クローンしたフォルダを右クリックし「プッシュ」を選択。
「プッシュ」画面で「タグを含める」を選択し「OK」をクリック。
「Gitコマンド実行中」画面で「閉じる」をクリック。
Gitサーバ側の「Code」ページで作成されたタグを確認できる。
作成されたタグを確認する
クローンしたフォルダを右クリックし「refブラウザ」を選択。
「refブラウザ」画面で「tags」配下にブランチが追加されている。
タグを削除
タグの削除はリモート側で行う。
タグを削除する
マージ
現在ブランチへ別ブランチをマージする
クローンしたフォルダを右クリックし「マージ」を選択。
「マージ」画面で現在ブランチ(Current branch)にマージする元ブランチ(From)を選択し「OK」をクリック。
※マージを実行する際は、「recursive」「ignore-all-space」オプションを指定すると、空白の数の違いで競合が発生することは無くなりマージが楽になる。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面でマージ先のログにマージ元のログが追加されているのを確認できる。
※今回のケースだとマージしたフォルダに、マージ元のファイルが追加されているのを確認できる。
チェリーピック
別ブランチの一部コミットを現在ブランチへ反映する(チェリーピック)
※mainブランチに対してマージリクエストを作成する際、コミット履歴が綺麗になるように、最新mainブランチから新しいブランチを作成し、作業ブランチから必要なコミット履歴のみをチェリーピックで新しいブランチへ反映した後、チェリーピックしたコミット履歴を集約し、新しいブランチからマージリクエストを出すとレビューし易いマージリクエストが出来る。
※リベースよりチェリーピックの方が分かり易い。
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面でブランチ名をクリック。
「refブラウザ」画面で履歴を取り込みたいブランチをダブルクリック。
※ローカルブランチ、リモートブランチ、どちらも可。
「ログメッセージ」画面で任意の履歴を右クリックし「このコミットをチェリーピック(採用)」を選択。
「チェリーピック(採用)」画面で「続行」をクリック。
「チェリーピック(採用)」画面で「終了」をクリック。
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面でチェリーピックされた履歴を確認できる。
別のリポジトリのブランチから一部コミットを現在ブランチへ反映する(チェリーピック)
※パッケージ製品に追加された一部機能を、個別のカスタマイズ案件へ反映する際、パッケージ製品のリポジトリから、カスタマイズ案件のリポジトリへ該当する履歴をチェリーピックする。
コピー元リポジトリのURLを事前にコピーしておく。
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面でブランチ名をクリック。
「refブラウザ」画面で「remotes」を右クリックし「リモートを管理」を選択。
「リモート設定」画面でリモート名を入力、コピーしたURLをペーストし「OK」をクリック。
確認MSGで「はい」をクリック。
確認MSGで「はい」をクリック。
「フェッチ」画面で「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
「refブラウザ」画面で「F5」キーを押すと追加したリポジトリが表示される。
「refブラウザ」画面で追加されたリポジトリのブランチをダブルクリック。
「ログメッセージ」画面でそのブランチの履歴からチェリーピックするコミットを右クリックし「このコミットをチェリーピック(採用)」を選択。
「チェリーピック(採用)」画面で「続行」をクリック。
「チェリーピック(採用)」画面で「終了」をクリック。
クローンしたフォルダを右クリックし「ログを表示」を選択。
「ログメッセージ」画面で現在ブランチに別リポジトリからチェリーピックしたコミットが反映されていることを確認できる。
スタッシュ
リモート側の変更を取り込む(プル)前にローカルの修正を退避(スタッシュ)し、プルが終わった後に退避した修正を復元する
ローカル環境に合わせて修正した開発中ソフトウェアの環境設定ファイルが、リモート側にコミットされている環境設定ファイルと一致しない場合などで、プル時にスタッシュを使う。
※ローカルにコミットしていない修正がある状態で、リモート側の履歴を取り込む(プル)と「error: Your local changes to the following files would be overwritten by merge. Please commit your changes or stash them before you merge.」エラーになる。
コミットしていない修正をスタッシュへ隠す
クローンしたフォルダを右クリックし「スタッシュへ変更を隠す」を選択。
「スタッシュ」画面で任意の値を入力し「OK」をクリック。
「Gitコマンド実行中」画面でエラーが無いことを確認し「閉じる」をクリック。
未コミットの修正をスタッシュへ隠したのでプルする
クローンしたフォルダを右クリックし「Git同期」を選択。
「Git同期」画面で「プル」をクリック。
プル実行後に「Git同期」画面で「閉じる」をクリック。
プルが終わったので退避(スタッシュ)していた修正を復元する
クローンしたフォルダを右クリックし「隠した変更を戻す」を選択。
確認MSGで「はい」をクリック。
「作業ツリー」画面で「OK」をクリック。
コメント