目次
つまり、これは、
ここで、n は最後のいくつかの送信を表します。上記の機能 1 には 3 つの送信があるため、使用できます:
ホームページ 開発ツール Git 3 つの動きで完了します!クリーンな Git コミット記録を維持する

3 つの動きで完了します!クリーンな Git コミット記録を維持する

Feb 22, 2022 pm 06:01 PM
git

この記事では、「git commit –amend」、「git rebase -i」、「rebase」など、クリーンな Git コミット レコードを維持するための知識を提供します。質問です。皆さんのお役に立てば幸いです。

3 つの動きで完了します!クリーンな Git コミット記録を維持する

## 推奨される学習: 「

Git チュートリアル

誰もが、標準化された簡潔な方法でコードを記述する方法を学習しています

しかし、コードを標準化して簡潔にする方法を学ぶことはほとんどありません。現在、ソースコード管理ツールとして Git は基本的に誰もが使用しています。Git は柔軟性に優れています。さまざまなワークフローに応じてコードを送信/マージします。この柔軟性が適切に制御されていないと、多くの問題も発生します最もよくある問題は、Git ログの履歴が乱雑であることです。これは本当に老婦人の足の包帯のようで、臭くて長いです。私は個人的にこの種のログが嫌いです

#この問題の根本原因自由にコードを提出しています。

3 つの動きで完了します!クリーンな Git コミット記録を維持するコードは送信されましたが、保存する方法はありますか? 3 つのヒントで問題を完全に解決できます

git commit –amend を上手に活用しましょう

このコマンドのヘルプ ドキュメントは次のように説明されています:

--amend               amend previous commit
ログイン後にコピー

つまり、これは、

最後の送信

を変更するのに役立ちます。送信したメッセージだけでなく、送信したファイルも変更でき、最終的に最後のコミット ID を置き換えることができます。特定の送信中に特定のファイルを見逃す可能性があります。再度送信すると、役に立たないコミット ID が存在する可能性があります。全員がこれを行うと、git ログは徐々に乱雑になり、完全な関数を追跡できなくなります

次のように仮定します。このようなログ情報がある

* 98a75af (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2
* 119f86e feat: [JIRA123] add feature 1.1
* 5dd0ad3 feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit
ログイン後にコピー

最後のログ メッセージを変更するとします。次のコマンドを使用できます。

git commit --amend -m "feat: [JIRA123] add feature 1.2 and 1.3"
ログイン後にコピー

ログ情報をもう一度見てみましょう。が見つかりました。古いコミット ID 98a75af を新しいコミット ID 5e354d1 に置き換え、メッセージを変更しました。ノードは追加しませんでした。

* 5e354d1 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2 and 1.3
* 119f86e feat: [JIRA123] add feature 1.1
* 5dd0ad3 feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit
ログイン後にコピー

これで、リポジトリ内のファイルは次のようになります:

.
├── README.md
└── feat1.txt

0 directories, 2 files
ログイン後にコピー

機能 1.3 を送信したときに、構成ファイル config.yaml を忘れて、ログを変更したり、新しいコミット ID を追加したくなかったとします。その場合、次のコマンドは非常に簡単に使用できます

echo "feature 1.3 config info" > config.yaml
git add .
git commit --amend --no-edit
ログイン後にコピー

git commit -- amend --no-edit は魂です。現在のリポジトリ ファイルを見てみましょう:

.
├── README.md
├── config.yaml
└── feat1.txt

0 directories, 3 files
ログイン後にコピー

git log を見てみましょう

* 247572e (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2 and 1.3
* 119f86e feat: [JIRA123] add feature 1.1
* 5dd0ad3 feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit
ログイン後にコピー

このテクニックを理解すると、すべての提出物に有効な情報が含まれていることを確認できます。プロセスを説明する図は次のようになります:

--no-edit のバフ ボーナスを使用すると、より強力になります

3 つの動きで完了します!クリーンな Git コミット記録を維持するうまく活用してくださいgit rebase -i

上記のログはすべて feature1 の開発中にあることがわかります。feature ブランチをメイン ブランチにマージする前に、ログ コミット ノードのマージを続行する必要があります。これが使用されます

git rebase -i HEAD~n
ログイン後にコピー

ここで、n は最後のいくつかの送信を表します。上記の機能 1 には 3 つの送信があるため、使用できます:

git rebase -i HEAD~3
ログイン後にコピー

実行後、vim エディターが次の内容で表示されます:

 1 pick 5dd0ad3 feat: [JIRA123] add feature 1
 2 pick 119f86e feat: [JIRA123] add feature 1.1
 3 pick 247572e feat: [JIRA123] add feature 1.2 and 1.3
 4
 5 # Rebase c69f53d..247572e onto c69f53d (3 commands)
 6 #
 7 # Commands:
 8 # p, pick <commit> = use commit
 9 # r, reword <commit> = use commit, but edit the commit message
10 # e, edit <commit> = use commit, but stop for amending
11 # s, squash <commit> = use commit, but meld into previous commit
12 # f, fixup <commit> = like "squash", but discard this commit's log message
13 # x, exec <command> = run command (the rest of the line) using shell
14 # d, drop <commit> = remove commit
15 # l, label <label> = label current HEAD with a name
16 # t, reset <label> = reset HEAD to a label
17 # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
18 # .       create a merge commit using the original merge commit's
19 # .       message (or the oneline, if no original merge commit was
20 # .       specified). Use -c <commit> to reword the commit message.
21 #
22 # These lines can be re-ordered; they are executed from top to bottom.
23 #
24 # If you remove a line here THAT COMMIT WILL BE LOST.
25 #
26 #   However, if you remove everything, the rebase will be aborted.
27 #
28 #
29 # Note that empty commits are commented out</commit></oneline></label></commit></commit></label></label></commit></command></commit></commit></commit></commit></commit>
ログイン後にコピー

コミット ID をマージするために最も一般的に使用される方法は、squash と fixup です。前者にはコミット メッセージが含まれますが、後者には含まれていません。ここでは fixup を使用し、終了するには :wq を使用してください。

1 pick 5dd0ad3 feat: [JIRA123] add feature 1
2 fixup 119f86e feat: [JIRA123] add feature 1.1
3 fixup 247572e feat: [JIRA123] add feature 1.2 and 1.3
ログイン後にコピー

しましょうもう一度ログを見てください、非常に明確です

* 41cd711 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit
ログイン後にコピー

リベースをうまく活用してください

上記の機能 1 は完全に開発されており、メイン ブランチも他の人によって更新されています。コードの競合を防ぐために、フィーチャーをメイン ブランチに戻します。最初にメイン ブランチの内容をフィーチャーにマージする必要があります。マージ コマンドを使用すると、追加のマージ ノードが存在し、変曲点も存在します。ログ履歴は直線的ではないため、ここでは機能ブランチで rebase コマンドを使用できます##

git pull origin main --rebase
ログイン後にコピー

pull コマンドは自動的にマージに役立ちますが、ここではリベースの形式で、log

* d40daa6 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1
* 446f463 (origin/main, origin/HEAD) Create main.properties
* c69f53d (origin/feature/JIRA123-amend-test, main) Initial commit
ログイン後にコピー

の feature1 関数を見てみましょう。メインの上部の送信ノードは依然として線形のままです。次に、コードをプッシュし、PR を送信し、コードをマージできます。 3 つの動きで完了します!クリーンな Git コミット記録を維持する

マージとリベースの違いを簡単に説明します:

ここでは git pullorigin main --rebase を使用して、メインを切り替え、最新のコンテンツをプルしてから元に戻すプロセスを省略します。これは 1 ステップで実行されます。その背後にある原則はすべて上の図に示されています。

リベースの使用には、従わなければならない黄金律があります。これについては以前にも述べたので、詳細は説明しません。

##概要

これらの 3 つのヒントについて, みんなの git ログは非常に明確になると思います。まだ知らない場合は、間違いなく使用できます。グループのメンバーが知らない場合は、間違いなく宣伝できます。この種のリポジトリはより健全に見えます。

推奨学習: 「

Git チュートリアル

以上が3 つの動きで完了します!クリーンな Git コミット記録を維持するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Gitプロジェクトをローカルにダウンロードする方法 Gitプロジェクトをローカルにダウンロードする方法 Apr 17, 2025 pm 04:36 PM

gitを介してローカルにプロジェクトをダウンロードするには、次の手順に従ってください。gitをインストールします。プロジェクトディレクトリに移動します。次のコマンドを使用してリモートリポジトリのクローニング:git clone https://github.com/username/repository-name.git

gitでコードを更新する方法 gitでコードを更新する方法 Apr 17, 2025 pm 04:45 PM

GITコードを更新する手順:コードをチェックしてください:gitクローンhttps://github.com/username/repo.git最新の変更を取得:gitフェッチマージの変更:gitマージオリジン/マスタープッシュ変更(オプション):gitプッシュオリジンマスター

gitでコードをマージする方法 gitでコードをマージする方法 Apr 17, 2025 pm 04:39 PM

gitコードマージプロセス:競合を避けるために最新の変更を引き出します。マージするブランチに切り替えます。マージを開始し、ブランチをマージするように指定します。競合のマージ(ある場合)を解決します。ステージングとコミットマージ、コミットメッセージを提供します。

gitコミットの使用方法 gitコミットの使用方法 Apr 17, 2025 pm 03:57 PM

GITコミットは、プロジェクトの現在の状態のスナップショットを保存するために、ファイルの変更をGITリポジトリに記録するコマンドです。使用方法は次のとおりです。一時的なストレージエリアに変更を追加する簡潔で有益な提出メッセージを書き込み、送信メッセージを保存して終了して送信を完了します。

PHPプロジェクトで効率的な検索問題を解決する方法は?タイプセンスはあなたがそれを達成するのに役立ちます! PHPプロジェクトで効率的な検索問題を解決する方法は?タイプセンスはあなたがそれを達成するのに役立ちます! Apr 17, 2025 pm 08:15 PM

eコマースのウェブサイトを開発するとき、私は困難な問題に遭遇しました:大量の製品データで効率的な検索機能を達成する方法は?従来のデータベース検索は非効率的であり、ユーザーエクスペリエンスが低いです。いくつかの調査の後、私は検索エンジンタイプセンスを発見し、公式のPHPクライアントタイプセンス/タイプセンス-PHPを通じてこの問題を解決し、検索パフォーマンスを大幅に改善しました。

Gitダウンロードがアクティブでない場合はどうすればよいですか Gitダウンロードがアクティブでない場合はどうすればよいですか Apr 17, 2025 pm 04:54 PM

解決:gitのダウンロード速度が遅い場合、次の手順を実行できます。ネットワーク接続を確認し、接続方法を切り替えてみてください。 GIT構成の最適化:ポストバッファーサイズ(Git Config -Global HTTP.Postbuffer 524288000)を増やし、低速制限(GIT Config -Global HTTP.LowsPeedLimit 1000)を減らします。 Gitプロキシ(Git-ProxyやGit-LFS-Proxyなど)を使用します。別のGitクライアント(SourcetreeやGithubデスクトップなど)を使用してみてください。防火を確認してください

GITでリポジトリを削除する方法 GITでリポジトリを削除する方法 Apr 17, 2025 pm 04:03 PM

gitリポジトリを削除するには、次の手順に従ってください。削除するリポジトリを確認します。リポジトリのローカル削除:RM -RFコマンドを使用して、フォルダーを削除します。倉庫をリモートで削除する:倉庫の設定に移動し、「倉庫の削除」オプションを見つけて、操作を確認します。

Gitでローカルコードを更新する方法 Gitでローカルコードを更新する方法 Apr 17, 2025 pm 04:48 PM

ローカルGitコードを更新する方法は? Git Fetchを使用して、リモートリポジトリから最新の変更を引き出します。 Git Merge Origin/&lt;リモートブランチ名&gt;を使用して、地元のブランチへのリモート変更をマージします。合併から生じる競合を解決します。 Git Commit -M "Merge Branch&lt; Remote Branch Name&GT;"を使用してください。マージの変更を送信し、更新を適用します。

See all articles