Gitチュートリアル


Gitと{{title}}


Gitの貢献


Git Advanced


Git Undo




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つのブランチをマージする必要があります。

エクササイズで自分をテストする

エクササイズ:

と呼ばれる新しいブランチを作成しますhello-world-images

git