検索
ホームページ開発ツールGit3 つの動きで完了します!クリーンな 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 サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Git vs. Github:バージョンコントロールとコードホスティングGit vs. Github:バージョンコントロールとコードホスティングApr 11, 2025 am 11:33 AM

Gitはバージョン制御システムであり、GithubはGitベースのコードホスティングプラットフォームです。 GITは、コードバージョンを管理し、ローカル操作をサポートするために使用されます。 GitHubは、問題の追跡やPullRequestなどのオンラインコラボレーションツールを提供しています。

簡単な言葉でGitとは何ですか?簡単な言葉でGitとは何ですか?Apr 09, 2025 am 12:12 AM

GITは、開発者がファイルの変更を追跡し、協力してコードバージョンを管理するのに役立つオープンソース分散バージョン制御システムです。そのコア関数には、1)レコードコードの変更、2)以前のバージョンへのフォールバック、3)共同開発、4)並列開発のためのブランチの作成と管理。

gitはgithubと同じですか?gitはgithubと同じですか?Apr 08, 2025 am 12:13 AM

gitとgithubは同じものではありません。 Gitはバージョン制御システムであり、GithubはGitベースのコードホスティングプラットフォームです。 GITはコードバージョンの管理に使用され、GitHubはオンラインコラボレーション環境を提供します。

HTMLにGitHubを使用する方法は?HTMLにGitHubを使用する方法は?Apr 07, 2025 am 12:13 AM

GitHubを使用してHTMLプロジェクトを管理する理由は、バージョン制御、共同開発、作品の提示のためのプラットフォームを提供するためです。特定の手順には次のものが含まれます。1。gitリポジトリの作成と初期化、2。htmlファイルを追加および送信します。3。githubにプッシュ、4。githubpagesを使用してWebページを展開します。さらに、GitHubは、HTMLプロジェクトの最適化とコラボレーションを支援するために、コードレビュー、発行、およびPullRequest機能もサポートしています。

gitまたはgithubから始めるべきですか?gitまたはgithubから始めるべきですか?Apr 06, 2025 am 12:09 AM

GITから始めることは、バージョン制御原則を深く理解するためにより適しており、GitHubから始めることは、コラボレーションとコードホスティングに焦点を当てるのに適しています。 1.GITは、コードバージョン履歴の管理に役立つ分散バージョン制御システムです。 2。Githubは、Gitに基づいたオンラインプラットフォームであり、コードホスティングとコラボレーション機能を提供します。

MicrosoftはGitまたはGithubを所有していますか?MicrosoftはGitまたはGithubを所有していますか?Apr 05, 2025 am 12:20 AM

MicrosoftはGitを所有していませんが、Githubを所有しています。 1.GITは、2005年にLinus Torvazによって作成された分散バージョン制御システムです。2。Githubは、GITに基づくオンラインコードホスティングプラットフォームです。 2008年に設立され、2018年にMicrosoftに買収されました。

履歴書にgitまたはgithubを置くべきですか?履歴書にgitまたはgithubを置くべきですか?Apr 04, 2025 am 12:04 AM

履歴書では、ポジションの要件と個人的な経験に基づいて、GitまたはGithubを作成することを選択する必要があります。 1.位置にGITスキルが必要な場合は、Gitを強調表示します。 2。ポジションがコミュニティの参加を評価する場合は、Githubを表示します。 3.使用経験とプロジェクトのケースを詳細に説明し、完全な文で終了してください。

GitlabがGithubよりも優れているのはなぜですか?GitlabがGithubよりも優れているのはなぜですか?Apr 03, 2025 am 12:08 AM

GitLabは、完全なDevOpsツールチェーンと強力なCI/CD機能を提供するため、一部の開発者やチームにとって優れています。 1。GITLABのCI/CD機能はプラットフォーム内に統合されており、コードの提出から展開までの完全なプロセス自動化をサポートします。 2。そのサーバー側のレンダリングテクノロジーは、大規模なプロジェクトのページの読み込み速度を改善します。 3。Gitlabの許可管理システムはより柔軟であり、細粒の制御をサポートしています。

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール