Gitブランチ
Gitブランチでの作業
Gitでは、abranch
はメインリポジトリの新しい/別のバージョンです。
大規模なプロジェクトがあり、そのプロジェクトのデザインを更新する必要があるとします。
Gitの有無にかかわらず、それはどのように機能しますか?
Gitなし:
- ライブバージョンへの影響を避けるために、関連するすべてのファイルのコピーを作成します
- デザインの操作を開始し、コードが他のファイルのコードに依存していることを確認します。これも変更する必要があります。
- 依存ファイルのコピーも作成します。すべてのファイル依存関係が正しいファイル名を参照していることを確認してください
- 緊急!プロジェクトのどこかに無関係のエラーがあり、できるだけ早く修正する必要があります。
- 作業中のコピーの名前をメモして、すべてのファイルを保存します
- 無関係なエラーに取り組み、コードを更新して修正します
- デザインに戻り、そこで作業を終了します
- コードをコピーするか、ファイルの名前を変更して、更新されたデザインがライブバージョンになるようにします
- (2週間後、修正前にファイルをコピーしたため、新しいデザインバージョンでは無関係のエラーが修正されなかったことがわかります)
Gitの場合:
- new-designという新しいブランチを使用して、メインブランチに影響を与えることなくコードを直接編集します
- 緊急!プロジェクトのどこかに無関係のエラーがあり、できるだけ早く修正する必要があります。
- small-error-fixというメインプロジェクトから新しいブランチを作成します
- 無関係なエラーを修正し、small-error-fixブランチをメインブランチとマージします
- 新しいデザインのブランチに戻り、そこで作業を終了します
- new-designブランチをmainとマージします(欠落していた小さなエラー修正についてアラートを受け取ります)
ブランチを使用すると、メインブランチに影響を与えることなく、プロジェクトのさまざまな部分で作業できます。
作業が完了すると、ブランチをメインプロジェクトにマージできます。
ブランチを切り替えて、互いに干渉することなく異なるプロジェクトで作業することもできます。
Gitでの分岐は非常に軽量で高速です!
新しいGitブランチ
ページにいくつかの新機能を追加しましょうindex.html
。
私たちはローカルリポジトリで作業しており、メインプロジェクトを妨害したり破壊したりしたくありません。
だから私たちは新しいものを作成しますbranch
:
例
git branch hello-world-images
今、私たちは「 」branch
と呼ばれる新しいを作成しましたhello-world-images
新しいものを作成したことを確認しましょうbranch
:
例
git branch
hello-world-images
* master
「hello-world-images」という名前の新しいブランチが表示されますが、*
横にあるの
master
は、現在そのブランチにいることを示していbranch
ます。
checkout
をチェックアウトするために使用されるコマンドbranch
です。現在の
から、コマンドの最後に指定されたものに移動します。branch
例
git checkout hello-world-images
Switched to branch 'hello-world-images'
これで、現在のワークスペースをマスターブランチから新しいブランチに移動しました
branch
お気に入りのエディターを開き、いくつかの変更を加えます。
この例では、画像(img_hello_world.jpg)を作業フォルダーに追加し、
index.html
ファイルにコード行を追加しました。
例
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link
rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello
world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from
Space"
style="width:100%;max-width:960px"></div>
<p>This is the first
file in my new Git Repo.</p>
<p>A new line in our file!</p>
</body>
</html>
ファイルに変更を加え、作業ディレクトリ(と同じディレクトリ)に新しいファイルを追加しましたmain
branch
。
次に、現在のステータスを確認しますbranch
。
例
git status
On branch hello-world-images
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
img_hello_world.jpg
no changes added to commit (use "git add" and/or "git commit -a")
それでは、ここで何が起こるかを見てみましょう。
- index.htmlに変更がありますが、ファイルはステージングされていません
commit
img_hello_world.jpg
ではありませんtracked
したがって、このために両方のファイルをステージング環境に追加する必要があります
branch
。
例
git add --all
--all
個々のファイル名の代わりに使用すると、変更された(新規、変更、および削除された)すべてのファイルがステージングされます。
status
の
チェックbranch
:
例
git status
On branch hello-world-images
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: img_hello_world.jpg
modified: index.html
私たちは自分たちの変化に満足しています。branch
だから私たちはそれらを:にコミットします
例
git commit -m "Added image to Hello World"
[hello-world-images 0312c55] Added image to Hello World
2 files changed, 1 insertion(+)
create mode 100644 img_hello_world.jpg
branch
これで、マスターとは異なる新しいができましたbranch
。
注:-b
onオプションを使用するcheckout
と、新しいブランチが作成され、存在しない場合はそのブランチに移動します
ブランチ間の切り替え
それでは、さまざまなブランチでの作業がいかに迅速かつ簡単で、どれほどうまく機能するかを見てみましょう。
現在、支店にいhello-world-images
ます。このブランチに画像を追加したので、現在のディレクトリにあるファイルを一覧表示しましょう。
例
ls
README.md bluestyle.css img_hello_world.jpg index.html
新しいファイルを確認できimg_hello_world.jpg
ます。htmlファイルを開くと、コードが変更されていることがわかります。すべてが本来あるべき姿です。
では、ブランチをに変更するとどうなるか見てみましょう master
例
git checkout master
Switched to branch 'master'
新しいイメージはこのブランチの一部ではありません。現在のディレクトリ内のファイルを再度一覧表示します。
例
ls
README.md bluestyle.css index.html
img_hello_world.jpg
もうありません!また、htmlファイルを開くと、コードが変更前の状態に戻っていることがわかります。
ブランチでの作業がいかに簡単か見てみましょう。そして、これによりどのようにさまざまなことに取り組むことができますか?
緊急支部
ここで、hello-world-imagesがまだ終わっていないが、マスターのエラーを修正する必要があると想像してください。
マスターを直接いじりたくないし、hello-world-imagesをいじりたくない。まだ終わっていないからだ。
そこで、緊急事態に対処するための新しいブランチを作成します。
例
git checkout -b emergency-fix
Switched to a new branch 'emergency-fix'
これで、masterから新しいブランチを作成し、それに変更しました。他のブランチを邪魔することなく、エラーを安全に修正できます。
架空のエラーを修正しましょう:
例
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link
rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello
world!</h1>
<p>This is the first
file in my new Git Repo.</p>
<p>This line is here to show how
merging works.</p>
</body>
</html>
このファイルに変更を加えたので、それらの変更をマスターブランチに取得する必要があります。
ステータスを確認します。
例
git status
On branch emergency-fix
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
ファイルをステージングし、コミットします。
例
git add index.html
git commit -m "updated index.html with emergency fix"
[emergency-fix dfa79db] updated index.html with emergency fix
1 file changed, 1 insertion(+), 1 deletion(-)
これでマスターの修正の準備ができたので、2つのブランチをマージする必要があります。