Git学習共有

他人の心の中で自分の体重を過大評価することもあります。それは、私が望むだけでなく、それを楽しみにして、他の人が良いことを願うからです。それは悪い習慣と見なされるべきではありません。それはあなたが失望したり、もっと失われたりするかもしれないということです。さもないと、ゆっくりと適応し、そしてあなたの位置を調整することを学びます。

gitは理解します

1.Gitは分散バージョン管理ソフトウェアです。

a。分散:

b。バージョン管理:大学の論文は何度も改訂され、最終的には多くのバージョンがあります。これはファイルバージョン管理です。

保存されているバージョンが多すぎますが、私が望むものではありません。先に進んでください。

c。ローカルバージョン管理:(現時点では、現在のバージョンは1つだけであり、コマンドを使用して過去のさまざまなバージョンの論文を表示できます)。現時点では、自分でのみ制御でき、次のことができます。 t複数の人でそれを制御する

d。集中型:(中央サーバーがあります)すべての異なるバージョン(SVN)があり、各コンピューターには1つのバージョンしかありません。現在の中央サーバーがダウンしている場合、この時点でコードの整合性が失われる可能性があります。

分散型:集中型とは異なり、各コンピューターはコードのすべてのバージョンのコピーを保存し、メインサーバーはコードの整合性に影響を与えることなくダウンしており、個別の開発を引き続き実行できます。

ソフトウェア:実行するコンピューターにダウンロードしてインストールすることをソフトウェアと呼びます

2.バージョン管理の主な目的は、オンラインの問題を防ぎ、ロールバックを容易にすることです。

3.Gitは個人情報を構成します

git config --global user.email“ [email protected]

git config --global user.name "wangzi"

4.ローカルバージョン管理を実現するためのgit公式ウェブサイトのインストール

①gitを開き、gitが管理するフォルダに入ります

②ウェアハウスのgitinitを初期化して、.gitファイルを生成します。このファイルには、後のバージョン管理に関する情報が含まれ、通常は変更する必要はありません(管理を開始します)。

③gitstatus現在のフォルダ内のファイルのステータスを表示します(赤は管理されていないことを意味します)。赤のファイルは作業領域にあります。

④gitadddemo.txtファイルが緑色に変わり、ファイルが管理されます。すべてを管理する場合は、gitadd。addと入力し、一時ストレージ領域を入力します。

⑤gitcommit-m "v1"最初のバージョン管理コミットを実装した後、ローカルリポジトリであるリポジトリに入ります

⑥gitlog生成されたバージョンを表示します

5.ロールバック

gitlog送信されたレコードのコミット後に長い文字列を表示する

git reset --hard + git_logコマンドの後に戻したいバージョンの情報をコミットします

ロールバック後、gitlogコマンドはロールバックされたレコードを表示しません。gitreflogを入力する必要があります。この時点で、すべてのコミットレコードを表示できます。そのバージョンに戻りたい場合は、gitreset-を実行します。 -hard +バージョン番号(git reflogコマンドその後、すべてのコミットにはバージョン番号があります)

6、ブランチ開発

V1は最もオリジナルのブランチであり、V2は変更され、変更されたコンテンツのみがポインターの形式で保持され、変更されていない形式のスナップショットが保存され、同じ方法でV1とV3を指します。V4と5は、ブランチが作成されたことを示します。

ブランチ開発は、オンラインバグの緊急修正の非常に優れた形式です。

たとえば、v3は現在オンラインコンテンツであり、バグを早急に修正する必要があります。v5は現在開発中です。その後、v4などのv3に基づいて新しいブランチを作成できます。修復が完了したら、V4をマージできます。 V5の継続的な開発に影響を与えることなく、直接オンラインに接続します。

ブランチを作成します:git branch dev

ブランチの切り替え:git checkout dev

ブランチの作成と切り替え:git checkout -b dev

7.バグ修正プロセス:

メインブランチに基づいてブランチバグを作成し、コンテンツコミットを変更し、現在のメインブランチに戻り、バグブランチをマージします。------- gitマージのバグ

修理が完了した後、msaterブランチは正常です。この時点で、ミルをアンロードしてロバを殺し、バグブランチを殺すことができます。-git branch-dバグ

8、github与gitlab

ウェアハウスgitlabをホストするGithubコード(オープンソース、独自のサーバーの構築、独自のウェアハウスの作成、独自のコードの管理)

9、git pull origin dev

git fetch origindev最初にローカルウェアハウスにプルしますgitmerge origin / devリモートからプルされたことを示すには、その前にorigin /を追加する必要があります

10.コードの半分が自宅で開発されているが、リモートでプッシュするのを忘れている状況があります。その後、家に帰ってコードをプルしたところ、プッシュがなかったことがわかりました。現時点では、他の機能を開発してからプッシュし、会社に到着してからコードをプルして競合を解決し、開発を続けることができます。完了してからプッシュします。

11.使用法をリベースする

利点①はgitレコードをより簡潔にすることができます

複数のローカル送信レコードを1つのレコードに結合します(リモートウェアハウスに送信された場合、リベースマージはお勧めしません。より面倒になります)

git rebase -i HEAD〜2は、現在の最新のレコードを前の2つの送信済みレコードまたはgit rebase -i +バージョン番号とマージすることを意味します

シナリオ②-gitpullコマンドは通常フォークを生成します。フォークを回避するには、次のコマンドを入力します。gitfetch origin dev then git rebase origin / dev競合がある場合は、最初に解決してからgit rebase --continue

シナリオ③-ブランチ開発、複数のフォーク、フォークしたくない場合は、リベースを使用できます

12.比較を超えて複数の競合ソフトウェアを解決する

git config --local merge.tool aaa

git config --local mergetool.path 'ソフトウェアインストールディレクトリ'

git config --local mergetool.keepBackup falseは、競合が解決された後、バックアップファイルが保存されないことを意味します

競合を解決するためのアプリケーションソフトウェア:git mergetool

13.グラフィック表示を記録します:git log --graph --pretty = format: "%h%s"

タグ仕様

Gitタグは主に、特定のコード送信後に生成されたバージョンID番号にラベルを付けるために使用されます

マスターをマージした後、各プロジェクトにタグを付ける必要があります

製作:GIC2021-01-21

テスト環境:k8s_test_20210111

タグのコメントはできるだけ明確にする必要があります

タグコマンド操作:

ローカルタグを表示する git tag

ローカルで呼び出すtag git tag 1-25

ローカルタグを削除する git tag -d 1-25

作成されたタグはローカルにのみ保存され、リモートに自動的にプッシュされることはありません。したがって、間違ったラベルをローカルで安全に削除できます。

タグにメモを追加します— git tag V1 -m "first version“

タグをリモートにプッシュする場合は、コマンドを使用します git push origin 1-25

複数のローカルタグをリモートにプッシュする git push origin --tags

タグを削除します。リモートにプッシュされている場合は、最初にローカルを削除してから、リモートを削除できます。 git push origin :refs/tags/1-25

タグを削除するか、以下を使用します。 git push origin :111

タグに対応するコードに切り替えます。git checkout <tagname>

タグに対応するコードを編集する場合は、ブランチを作成してからタグを切り替える必要があります。 git checkout -b <branch-name> <tagname>

タグの使用シナリオ:

mc-serviceは1-22からオンラインになり、タグを変更します:GIC2021-01-22

新しいコンテンツユーザー情報取得タグ:GIC2021-01-26が1.26にリリースされました。オンラインプロセス中にコードにバグが見つかりました。現時点では、次の2つの方法があります。

1つは、バグを修正してオンラインの新しいラウンドを開始することです。この場合、所要時間は比較的長くなる可能性があり、問題を迅速かつオンラインで解決する必要があります。

もう1つは、既存のタグGIC2021-01-22を使用して直接ロールバックすることです。タグの下のコードを本番環境にデプロイしてから、バグを注意深く修正してオンラインで再起動します。

リモートコードをプルする:

1.デスクトップツールをダウンロードし、ここでgitbashを開きます

2.フォルダーを作成し、フォルダーを入力して、ウェアハウスを初期化しますmkdir test / cd test / git init

3.リモートウェアハウスgitremote add origin <リモートウェアハウスアドレス>を関連付けます

4.リモートウェアハウスコードをプルするgitpull originmasterまたはgitclone <clone address>このコマンドはウェアハウスを初期化する必要はなく、コードをローカルに直接クローンすることができます

支店運営:

ローカルブランチを表示する:gitブランチ

リモートブランチを表示する:git branch -r

ローカルブランチとリモートブランチを表示する:git branch -a

すべてのブランチをローカルにプルします:git fetch(これを行うためのリモートブランチが見つからない場合があります)

ローカルブランチにバインドされたリモートブランチを表示します:git branch -vv

リモートブランチをバインドします:git branch --set-upstream-to = origin / master

ローカルブランチを作成します:git branch <ブランチ名>

ブランチの作成と切り替え:git checkout -b <ブランチ名>

ローカルブランチをリモートにプッシュします:git push origin test:test

ローカルブランチを削除します:git branch -D <ブランチ名>

リモートブランチを削除します。gitpushorigin--delete <ブランチ名>

ブランチの名前を変更します。gitbranch-m<元の名前> <新しい名前>

すべてのローカル変更を一時記憶域に送信します:gitadd。

ローカルファイルを送信します(ファイル名を追加します):git add test.py

ステージング領域をローカルブランチに送信します:git commit -m "備考"

ローカルブランチをリモートに送信します:git push

git stash操作:

現在の進行状況を保存し、コミットされていないすべての変更(一時的および非一時的を含む)を保存して、現在の作業ディレクトリを後で復元できるようにします。

git stash

各stashにメッセージを追加してバージョンを記録し、git stashsaveを使用してgitstashコマンドを置き換えることをお勧めします。例は次のとおりです。

保存されているものをすべて表示:

git stash list ----ここに画像の説明を挿入します
指定された進行状況を復元します(リストから削除されません):

git stash apply + stash @ {}:

最新の進捗状況を復元すると、リストから最新の進捗状況が削除されます。

git stash pop

すべてのストレージをクリアする

git stash clear

特定のストレージをクリアする

git stash drop stash @ {}:

gitロールバック操作:

ローカル倉庫にプッシュし、送信したくない、最後に送信されたバージョンに戻る

1.ソフト①ローカルライブラリのHEADポインタを移動します

これは、ロールバック後、ローカルライブラリのポインタのみが移動され、一時ストレージ領域とローカルコードは変更されないことを意味します。

また、前回ローカルライブラリに送信したコードは緑色です。つまり、送信されていません。

2.混合①ローカルライブラリのHEADポインタを移動します

②一時保管場所をリセットする

つまり、ロールバック後、ローカルライブラリのポインタが移動するだけでなく、一時記憶域もなくなります。つまり、前回一時記憶域に追加したファイルを再度追加する必要があります。

3.ハード①ローカルライブラリのHEADポインタを移動します

②一時保管場所をリセットする

③作業エリアのリセット

これは、ロールバック後、ローカルコードがロールバックバージョンのコードであることを意味します

順番に4回コミットし、送信情報をメモします------------------ ここに画像の説明を挿入します
git log送信レコードを表示し、最新のコミットを示します----- - ここに画像の説明を挿入します
gitのリセットは--hard <コミット番号> ------------------------------- ここに画像の説明を挿入します
Gitに再びログインしていないがあることがわかりました444のより多くのコミットレコード、コードはより多くの3334ですここに画像の説明を挿入しますここに画像の説明を挿入します

①ローカルライブラリのHEADポインタを移動します

②作業エリアのリセット

これは、ロールバック後、ローカルコードがロールバックバージョンのコードであり、一時ストレージ領域のファイルが引き続き保存されることを意味します。

リベース操作:

code_reviewを容易にするために、複数の送信レコードを1つの送信に結合します

git rebase -i <特定のコミットのコミット>

git logを使用して、現在のコミットレコードを表示し
ここに画像の説明を挿入します
、コマンドgit rebase -i 02ee740b49912baf2ed7275c983124b131d87bfc(以前のコミットはマージされます。このコミットを除く)を実行して次のページに移動します。選択とは、現在のコミットを選択することを意味します。コミットし、最初に入力します。2つのページでローカルマージの後にコミットレコードを入力し、保存して終了し、再度gitログを作成すると、マージは成功します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
git push -fリモートに強制的にプッシュすると、マージが成功します。
ここに画像の説明を挿入します
リベース操作には特定のリスクがあり、以前の送信レコードの一部が上書きされます。操作用に新しいブランチを作成することをお勧めします。次に、問題がなければ、新しく作成されたブランチのすべてのコミットをマージしてから、マスターにマージします。

マージ操作:

現在のブランチマスター

git merge branch_test ----ブランチbranch_testをマスターにマージすると、図1に示すように、マージによる操作でフォークが生成されます。フォークを生成したくない場合は、次のようにリベースを使用できます。図2、コマンドはgit rebase <branch name>です。競合が解決された後、git rebase--continueの場合
ここに画像の説明を挿入します
ここに画像の説明を挿入します

ブランチ開発ワークフロー:

データベースのユーザー名やパスワードの変更など、新しいリクエストを受け取った場合の通常のプロセスは次のとおりです。

プロジェクトのマスターブランチに切り替えます:git checkout master

最新のコードをプルします:git pull origin master

新しいブランチを作成し、新しく作成されたブランチに切り替えます。gitcheckout -b feature / update_database_username_pwd(ブランチ名は通常feature /で始まり、その後に対応する機能名が続きます)

新しく作成されたブランチを変更し、完了後にリモートにプッシュします:gitadd。/Gitcommit -m“ update_finish” / git push orgin feature / update_database_username_pwd:feature / update_database_username_pwd

現在のコードをマスターにマージします:git checkout master / git merge feature / update_database_username_pwd

code_reviewの関連するコードレビューの同僚にマージリクエストを送信します。

コードが承認されたら、マスターにタグを付けます。タグ標準は各プロジェクトの前のタグを参照し、起動前のテストが実行されます。

問題がなければ、通常どおりオンラインになります。ロールバックが発生した場合は、以前のバージョンのタグを提供する必要があります。これは、時間内にロールバックするために、オンラインになる前に事前に準備する必要があります。

オンラインバグには緊急修復プロセスが必要です。

ブランチを作成して名前を付けると、わずかな違いがあります。名前は次のとおりです。hotfix/ + "修復されたコンテンツの概要"

残りのプロセスは、ブランチ開発中のプロセスと同じです。

おすすめ

転載: blog.csdn.net/qq_37304462/article/details/113215951