3 つの動きで完了します!クリーンな Git コミット記録を維持する
この記事では、「git commit –amend」、「git rebase -i」、「rebase」など、クリーンな Git コミット レコードを維持するための知識を提供します。質問です。皆さんのお役に立てば幸いです。
Git チュートリアル 」
しかし、コードを標準化して簡潔にする方法を学ぶことはほとんどありません。現在、ソースコード管理ツールとして Git は基本的に誰もが使用しています。Git は柔軟性に優れています。さまざまなワークフローに応じてコードを送信/マージします。この柔軟性が適切に制御されていないと、多くの問題も発生します最もよくある問題は、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 のバフ ボーナスを使用すると、より強力になりますうまく活用してください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 を送信し、コードをマージできます。
ここでは git pullorigin main --rebase を使用して、メインを切り替え、最新のコンテンツをプルしてから元に戻すプロセスを省略します。これは 1 ステップで実行されます。その背後にある原則はすべて上の図に示されています。
リベースの使用には、従わなければならない黄金律があります。これについては以前にも述べたので、詳細は説明しません。
##概要これらの 3 つのヒントについて, みんなの git ログは非常に明確になると思います。まだ知らない場合は、間違いなく使用できます。グループのメンバーが知らない場合は、間違いなく宣伝できます。この種のリポジトリはより健全に見えます。 推奨学習: 「Git チュートリアル》
以上が3 つの動きで完了します!クリーンな Git コミット記録を維持するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

Deepseekai ToolユーザーガイドとFAQ Deepseekは、強力なAIインテリジェントツールです。 FAQ:異なるアクセス方法の違い:Webバージョン、アプリバージョン、API呼び出しの間に機能に違いはありません。アプリは、Webバージョンのラッパーにすぎません。ローカル展開は蒸留モデルを使用します。これは、DeepSeek-R1のフルバージョンよりもわずかに劣っていますが、32ビットモデルには理論的には90%のフルバージョン機能があります。居酒屋とは何ですか? Sillytavernは、APIまたはOllamaを介してAIモデルを呼び出す必要があるフロントエンドインターフェイスです。壊れた制限とは何ですか

グレイスケール投資:機関投資家が機関や投資家にデジタル通貨投資サービスを提供するための機関投資家が入国します。同社はいくつかの暗号信託を立ち上げました。これは広範な市場の注目を集めていますが、これらの資金のトークン価格に対する影響は大きく異なります。この記事では、Grayscaleの主要なCrypto Trust Fundsの一部を詳細に紹介します。 Grayscale Major Crypto Trust Fundsは、Grayscale Investment(2013年にDigitalCurrencyGroupによって設立された)で利用可能なさまざまなCrypto Asset Trust Fundsを管理し、機関投資家と順応の高い個人を提供する投資チャネルを提供します。その主な資金には、ZCASH(ZEC)、SOL、

トップマーケットメーカーのキャッスル証券のビットコインマーケットメーカーへの参入は、ビットコイン市場の成熟度の象徴であり、将来の資産価格設定力を競うための従来の金融勢力の重要なステップです。ブルームバーグによると、2月25日、シタデル証券は暗号通貨の流動性プロバイダーになろうとしています。同社は、Coinbaseglobal、Binanceholdings、Crypto.comが運営する取引所など、さまざまな取引所でマーケットメーカーのリストに参加することを目指していると、この問題に精通している人々は述べています。取引所によって承認されると、当社は当初、米国外にマーケットメーカーチームを設立することを計画していました。この動きは標識だけではありません

ElizaOSV2:AIのエンパワーメントAIは、補助ツールから独立したエンティティに進化しています。この記事では、ElizaOSV2の主要な革新と、AI主導の将来の経済をどのように形成するかについて説明します。 AIオートメーション:Elizaosを独立して操作することは、もともとWeb3オートメーションに焦点を当てたAIフレームワークでした。 V1バージョンを使用すると、AIはスマートコントラクトとブロックチェーンデータと対話できますが、V2バージョンは大幅なパフォーマンスの改善を実現します。単純な指示を実行する代わりに、AIはワークフローを独立して管理し、ビジネスを運営し、財務戦略を開発することができます。アーキテクチャのアップグレード:強化a

上海ジョトン大学、上海アイラブ、および香港中国大学の研究者は、Visual Language Big Model(LVLM)のパフォーマンスを大幅に改善するために少量のデータのみを必要とする視覚RFT(視覚エンハンスメントファインチューニング)オープンソースプロジェクトを開始しました。 Visual-RFTは、DeepSeek-R1のルールベースの強化学習アプローチとOpenAIの強化微調整(RFT)パラダイムを巧みに組み合わせて、このアプローチをテキストフィールドから視野に拡張しました。視覚的サブカテゴリ化やオブジェクト検出などのタスクの対応するルール報酬を設計することにより、Visual-RFTは、テキスト、数学的推論、その他のフィールドに限定されているDeepSeek-R1メソッドの制限を克服し、LVLMトレーニングの新しい方法を提供します。 Vis

毎週の観察:ビットコインを蓄えている企業 - 醸造の変化毎週のメモの見落とされがちな市場動向をよく指摘します。 MicroStrategyの動きは厳しい例です。多くの人は、「マイクロストラテジーとマイケルセイリャーはすでによく知られていますが、これは真実ですが、多くの投資家はそれを特別なケースと見なし、その背後にあるより深い市場の力を無視しています。このビューは片側です。ここ数ヶ月の予備資産としてのビットコインの採用に関する詳細な研究は、これが孤立したケースではなく、出現している主要な傾向であることを示しています。今後12〜18か月で、何百もの企業が訴訟を起こし、大量のビットコインを購入すると予測しています
