はじめに
Git stash は、開発者がコミットされていない変更を一時的に保存し、異なるタスク間を切り替えることができる強力な機能です。このチュートリアルでは、Git stash を使用する際のマージコンフリクトの解決方法について包括的な解説を提供し、開発者がコードの変更を効果的に管理し、クリーンで整理された開発ワークフローを維持するのに役立ちます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Git stash は、開発者がコミットされていない変更を一時的に保存し、異なるタスク間を切り替えることができる強力な機能です。このチュートリアルでは、Git stash を使用する際のマージコンフリクトの解決方法について包括的な解説を提供し、開発者がコードの変更を効果的に管理し、クリーンで整理された開発ワークフローを維持するのに役立ちます。
Git stash は、開発者がコミットされていない変更をリポジトリにコミットせずに一時的に保存することができる強力な機能です。これは、ブランチを切り替えたり、更新を取得したりする必要があるが、まだコミットする準備ができていない作業が進行中の場合に特に便利です。
コマンド | 説明 |
---|---|
git stash |
現在の作業ディレクトリの変更を保存します |
git stash list |
保存されているすべての stash を表示します |
git stash apply |
最新の stash を適用します |
git stash pop |
最新の stash を適用して削除します |
git stash drop |
最新の stash を削除します |
## いくつかの変更を作成する
echo "Temporary work in progress" > temp.txt
## 変更を stash する
git stash
## ブランチを切り替えるか、他のタスクを実行する
git checkout another-branch
## 戻って stash した変更を適用する
git stash pop
git stash save "description"
で説明的なメッセージを使用するLabEx は、開発ワークフローの効率を向上させるために stash 技術を習得することをおすすめします。
マージコンフリクトは、Git が2つのコミット間の差分を自動的に解決できない場合に発生します。これは通常、以下のような場合に起こります。
シナリオ | 説明 |
---|---|
行の変更 | 同じ行に異なる変更が加えられた場合 |
ファイルの削除 | 一方のブランチでファイルが削除され、もう一方のブランチで変更された場合 |
ファイルの名前変更 | ファイル構造におけるコンフリクト |
コンフリクトが発生すると、Git はファイルに特殊なマーカーを付けます。
<<<<<<< HEAD
Current branch code
=======
Incoming branch code
>>>>>>> branch-name
## ブランチのマージを試みる
git merge feature-branch
## コンフリクトが発生した場合
## コンフリクトファイルにはコンフリクトマーカーが付けられます
## コンフリクトする変更を作成する
echo "Original content" > file.txt
git add file.txt
git commit -m "Initial commit"
## 異なる変更を持つ2つのブランチを作成する
git checkout -b branch-a
echo "Branch A modification" > file.txt
git commit -am "Branch A change"
git checkout main
git checkout -b branch-b
echo "Branch B modification" > file.txt
git commit -am "Branch B change"
## マージを試みる(コンフリクトが発生します)
git merge branch-a
LabEx は、マージコンフリクトを効率的に処理するための体系的なアプローチを開発することをおすすめします。
スタッシュのマージコンフリクトは、スタッシュした変更を変更された作業ディレクトリに適用する際に、互換性のない変更が生じるときに発生します。
## スタッシュを適用してコンフリクトを検出する
git stash apply
## コンフリクトの状態を確認する
git status
<<<<<<< Updated upstream
Current branch changes
=======
Stashed changes
>>>>>>> Stash changes
戦略 | 説明 | コマンド |
---|---|---|
手動編集 | コンフリクトするファイルを直接編集する | 手動編集 |
スタッシュを維持する | スタッシュした変更を完全に使用する | git checkout --patch |
スタッシュを破棄する | スタッシュした変更を破棄する | git reset HEAD |
## 変更を含むスタッシュを作成する
git stash save "Experimental changes"
## 潜在的なコンフリクトを伴ってスタッシュを適用する
git stash apply
## ファイル内のコンフリクトを手動で解決する
nano conflicted_file.txt
## コンフリクトが解決されたことをマークする
git add conflicted_file.txt
## マージを完了する
git commit -m "Resolved stash merge conflicts"
## マージツールを設定する
git config --global merge.tool vscode
## ビジュアルでコンフリクトを解決する
git mergetool
LabEx は、自信とスキルを築くために、安全な環境でスタッシュのコンフリクト解決を練習することをおすすめします。
スタッシュのマージコンフリクトを解決する方法を理解することは、スムーズな Git ワークフローを維持するために重要です。コンフリクト解決技術を習得することで、開発者は自信を持ってコードの変更を管理し、中断を最小限に抑え、異なるブランチやプロジェクト段階でのシームレスなバージョン管理を確保することができます。