Git ブランチ操作の一般的な使用シナリオ

1.不要な枝を削除する

1. my-pro プロジェクトの下に、テスト用の新しいブランチをいくつか作成します。

git checkout master # HEAD を master ブランチに向ける

git branch testdel #マスターポイントの下に新しいブランチを作成

git checkout testdel #head を testdel ブランチに向ける

#ここで style.css を変更します。たとえば、背景色 background:#d8d8d8 を追加します。

git commit css/style.css -m'just a test commit' #testdel配下でコミット操作を実行

gitブランチのテストをもう一度

git チェックアウト マスター

gitブランチ別のテスト

gitk --all #gitk を使用して現在のブランチ ステータスを視覚化する

複数のブランチの作成とコミット操作の後、ブランチは次の図に示す構造になりました。

2. git branch -d [branch name] コマンドを使用して、指定したブランチを削除します。

Yooye-2:my-pro yooye$ git branch -av #現在のブランチのステータスを表示

anothertest dc7ecf7 で index.html にスタイル ファイルをリンクさせます

change-border-color 413552e ボックスの境界線の色を変更します

* master dc7ecf7 で index.html にスタイル ファイルをリンクさせる

testagain e1e471a ただのテスト

testdel e1e471a ただのテスト

Yooye-2:my-pro yooye$ git checkout master #master ブランチに入る

ブランチ「マスター」に切り替えました

Yooye-2:my-pro yooye$ git branch -d testagain #ブランチを削除するには -d を使用します

エラー: ブランチ 'testagain' は完全にマージされていません。

本当に削除したい場合は、'git branch -D testagain' を実行してください。

Yooye-2:my-pro yooye$ git branch -D testagain #ブランチをもう一度削除するには -D を使用します

ブランチ testagain を削除しました (以前は e1e471a でした) #Delete successfully

Yooye-2:my-pro yooye$ gitk --all #削除後のビジュアル ブランチのステータスを表示する

testagain ポイントを削除した後の状態は次のとおりです。

 

 3. git checkout を使用して testdel ブランチと master ブランチを切り替えると、プロジェクト内の style.css などのコード ファイルがそれに応じて切り替わります。testdel ブランチが削除されると、このブランチで送信されたすべてのコミット操作レコードが削除されます。そのため、ブランチを削除する前にバージョン確認を行う必要があります。

 2.最新のコミットの説明を修正

git commit --amend コマンドを使用して、最新のコミットの説明テキストを変更します。操作プロセスは次のとおりです。

Yooye-2:my-pro yooye$ git checkout testdel #【1】testdel ブランチに入る

ブランチ「testdel」に切り替えました

Yooye-2:my-pro yooye$ git log -1 #【2】最新のコミット記録を確認、これは git log であることに注意 -[番号 1]

commit e1e471a5945ab83673bc56055e3455e9fbec8e61 (HEAD -> testdel)

著者: <[email protected]>

日付: 2019 年 3 月 1 日 (金) 10:26:49 +0800

ただのテスト # [2-1] 修正前の説明文です

Yooye-2:my-pro yooye$ git commit --amend # [3] 修正コマンドを実行し、修正状態に入る 詳細な操作は下記の手順 [4] を参照

Yooye-2:my-pro yooye$ git log -1 #【5】修正成功か確認

commit 1062fa43b85ad7111738d4eaee56436279768757 (HEAD -> testdel)

著者: <[email protected]>

日付: 2019 年 3 月 1 日 (金) 10:26:49 +0800

ただのテストで、この単語を変更しました 【5-1】変更された説明テキスト

Yooye-2:マイプロ yooye$

[4] git commit --amend 修正コマンドを実行し、修正方法は以下のとおりです。

 

 3. 古いコミットの説明情報を修正する

git rebase -i [変更された親コミットの一意の ID] コマンドを使用して、リベース操作に入ります。

[注意]: 親レベルのコミットは、上記のリベース操作に入るために使用され、操作は親レベルの下でコミットに入るために使用されます。

1. rebase 状態ではさまざまな操作をサポートできるため、ここでは、reword (つまり、変更の意味) に変更する必要があるコミットの前に、デフォルトの pick 操作モードを変更する必要があります。次に、2 番目の手順と同じ方法で保存して終了し、次の操作インターフェイスに入ります。

2. この操作画面では、下図の 1 行目のように、元のコミットの記述内容を変更することができます。次に、保存して終了します。

 

 3. 次の図に示すように、git log --graph を使用して、変更された結果を表示します。

4. 複数の連続したコミット アクションをマージする

前のステップの git log --graph の結果によると、通常の方法で index.html を表示するために上記の 3 つのコミットが実際にあることがわかります。したがって、readme 操作を除いて、他の 3 つのコミットをマージできます。 .

1. git rebase -i [最初に readme を作成したコミットの一意の ID] コマンドを使用して、操作インターフェイスに入ります。これら 3 つのコミットをそのうちの 1 つにマージし、保存して終了し、次のステップに進みます。

pick 789f15c index.html ファイルを追加 #[1] は、他のコミットをこのコミットにマージすることを意味します

squash e7bf7b0 add aaaaaaa style file #【2】merge

squash 4216faf let index.html にスタイルファイルをリンク #【3】merge

# 1bb42bc..4216faf を 1bb42bc にリベース (3 コマンド)

#

# コマンド:

# p, pick <commit> = commit を使用

# r, reword <commit> = commit を使用しますが、commit メッセージを編集します

# e, edit <commit> = コミットを使用しますが、修正のために停止します

# s, squash <commit> = コミットを使用しますが、前のコミットに融合します

# f, fixup <commit> = "squash" と同様ですが、このコミットのログ メッセージは破棄します

# x, exec <command> = シェルを使用してコマンド (行の残り) を実行

# d, drop <commit> = コミットを削除

# l, label <label> = 現在の HEAD に名前を付ける

# t, reset <label> = HEAD をラベルにリセット

# m, マージ [-C <コミット> | -c <コミット>] <ラベル> [# <ワンライン>]

# . 元のマージ コミットを使用してマージ コミットを作成する

# . メッセージ (または、元のマージ コミットがない場合は、1 行)

# . 指定)。-c <commit> を使用して、コミット メッセージを言い換えます。

#

# これらの行は並べ替えることができます。それらは上から下に実行されます。

# ここで行を削除すると、コミットが失われます。

# ただし、すべてを削除すると、リベースは中止されます。

#

#

# 空のコミットはコメントアウトされていることに注意してください

:wq!

2. このマージの説明テキストを入力し、後で表示するために元のコミットの説明テキストを保持します。

# これは最初のコミット メッセージです:

#【1】この合併操作の説明文

index.html ファイルを追加します。 # [2-1] 予約済みの元のコミットの説明テキスト

# これはコミット メッセージです #2:

add aaaaaaa スタイル ファイル # [2-2] 予約済みの元のコミットの説明テキスト

# これはコミット メッセージです #3:

let index.html にスタイルファイルをリンク # [2-3] 予約済みの元のコミットの説明テキスト

# 変更のコミット メッセージを入力してください。行頭

# with '#' は無視され、空のメッセージはコミットを中止します。

#

# 日付: 2019 年 2 月 27 日水曜日 11:42:12 +0800

#

# インタラクティブなリベースが進行中。1bb42bcに

# 最後に実行されたコマンド (3 つのコマンドが実行された):

# スカッシュ e7bf7b0 aaaaaaa スタイル ファイルを追加

# squash 4216faf let index.html でスタイル ファイルをリンク

# コマンドは残っていません。

# 現在、'1bb42bc' のブランチ 'anothertest' をリベースしています。

#

# コミットする変更:

# 新しいファイル: css/style.css

# 新しいファイル: index.html

#

# 追跡されていないファイル:

#js/

#

:wq!

3. git log --graph を使用して、マージされたバージョンのステータスを表示します。

5.不連続なコミットをマージする

1. 前のステップに基づいて、デモンストレーションのために、他のすべてのテスト ブランチを削除し、元のマスター ブランチと、index.html、style.css、および readme.md に関連する 3 つのコミットのみを保持します。

次に、my-pro の下にある readme.md ファイルの内容を変更し、コミット操作を実行します。次に、git log --graph コマンドを使用して、現在のコミット ステータス リストを表示します。

 

 

2. 最初と最後のコミットはすべて readme の送信に関するものであるため、それらをマージする必要があります。git rebase -i [最下位の祖先コミット] を実行する前に、将来の使用のために祖先コミットの ID (例: 1bb42bc) を忘れずにコピーしてください。

操作ウィンドウに入ったら、次のコードに示すように操作を実行して、保存して終了します。

pick 1bb42bc8 #[1] この文は、別の readme 操作の commit 操作をマージするために、私たちが新たに追加したものです。

squash 702dcbf 私は本当の readme.md ファイルです # [2] この行はもともと一番下にありました。これに移動し、ピックを squash に変更しました

pick 2b2e247 コンビを組もうとしている、うん!

# 1bb42bc..702dcbf を 1bb42bc にリベース (2 コマンド)

#

# コマンド: 削除された多くのコマンド プロンプトがここにありました

# これらの行は並べ替えることができます。それらは上から下に実行されます。

# ここで行を削除すると、コミットが失われます。

# ただし、すべてを削除すると、リベースは中止されます。

#

:wq!

3. 保存して終了した後にリマインダー ブランチが連続していない場合は、git rebase --continue を使用して次のステップに進むことができます。

6. 一時保存領域と HEAD に含まれるファイルの違いを比較する

1. my-pro ウェアハウスの index.html の内容を修正します。

2. git add 操作を実行します。

3. git diff -cached を使用して、一時ストレージ領域と HEAD に含まれるファイルの違いを表示します。

Yooye-2:my-pro yooye$ git diff --cached #【1】比較コマンド実行

差分 --git a/index.html b/index.html

インデックス 084901f..ec530c2 100644

--- a/index.html

+++ b/index.html

@@ -5,7 +5,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<link rel="stylesheet" href="css/style.css">

- <title>Document</title> #【2-1】変更前のHEADが指していた古い内容

+ <title>Git を学ぶ</title> #【2-2】変更後の git add で一時保存領域に追加された内容

</head>

<本体>

<div class="box"></div>

7. 作業域と一時記憶域に含まれるファイルの違いを比較する

1. 前のステップに基づいて、style.css ファイルを調整してみましょう (背景を追加するなど)。その後、git add 操作を実行しません。このとき、編集した style.css ファイルへの変更は、ワークスペース。

2. git diff コマンドを実行して、ワークスペースと以前にサブミットされたステージング領域ファイルの違いを表示します。

Yooye-2:my-pro yooye$ git diff

差分 --git a/css/style.css b/css/style.css

インデックス 20ce14c..488853c 100644

--- a/css/style.css

+++ b/css/style.css

@@ -2,4 +2,5 @@

幅: 100px;

高さ: 100px;

ボーダー: 1px ベタの赤。

+ 背景: ピンク;

}

\ ファイルの最後に改行を入れない

Yooye-2:マイプロ yooye$

3. 一時ストレージ領域に送信する前に複数のファイルが変更されているが、readme.md などの特定のファイルの変更のみを表示したい場合は、次のコマンドを使用できます。

git diff -- readme.md

8. 一時記憶域の内容を HEAD と同じに戻す

使用シナリオでは、6番目のステップでindex.htmlを変更し、git addで一時保存領域に送信します.この時点で後悔した場合は、git reset HEADコマンドを使用して元の状態に戻すことができます.頭。テスト プロセスは次のとおりです。

Yooye-2:my-pro yooye$ git status # [1] 復元前にコミットステータスを確認する

支店長で

コミットする変更:

(「git reset HEAD <file>...」を使用してステージングを解除します)

modified:index.html #【2-1】既に一時保存領域にある

コミットのためにステージングされていない変更:

(コミットされる内容を更新するには、「git add <file>...」を使用します)

(「git checkout -- <file>...」を使用して、作業ディレクトリの変更を破棄します)

modified: css/style.css #【2-2】一時保存領域にない

変更: readme.md

Yooye-2:my-pro yooye$ git reset HEAD #【3】一時保存領域の内容を復元

リセット後のステージングされていない変更:

M css/style.css

M index.html

M readme.md

Yooye-2:my-pro yooye$ git ステータス

支店長で

コミットのためにステージングされていない変更:

(コミットされる内容を更新するには、「git add <file>...」を使用します)

(「git checkout -- <file>...」を使用して、作業ディレクトリの変更を破棄します)

modified: css/style.css #【4】一時保存領域にない

変更: index.html

変更: readme.md

コミットに追加された変更はありません (「git add」および/または「git commit -a」を使用)

 

おすすめ

転載: blog.csdn.net/longz_org_cn/article/details/130010863