|
この記事は、WeChat公式アカウント「JS日语問」(著者:慧慧)からの転載です。転載の許可については、「JS日语問」公式アカウントまでお問い合わせください。 1. 頭Gitでは、複数のブランチが存在します。ブランチは、基本的にコミットオブジェクトへの可変ポインタです。一方、Headは現在作業中のローカルブランチを指す特別なポインタです。 簡単に言えば、HEAD はあなたが今いる場所を指します。 たとえば、現在マスター ブランチにいる場合、HEAD ポインターはマスター ブランチ ポインターを指します。 次に、`git checkout test` を呼び出して `test` ブランチに切り替えると、次の図に示すように、HEAD は `test` ブランチを指すようになります。 ただし、テスト ブランチで再度コミットすると、HEAD ポインターは引き続きテスト ブランチ ポインターを指し、テスト ブランチ ポインターは最後に作成されたコミットを指します (下の図を参照)。 HEAD ファイルは .git/HEAD ディレクトリに保存されており、その情報から HEAD が別のファイルを指していることがわかります。
ファイルにはハッシュ コードが含まれています。これは、マスター ブランチの最新のコミットに対応するハッシュ コードです。 したがって、ブランチを切り替えると、通常、HEAD ポインターは現在いるブランチを指し、ブランチに新しいコミットを作成すると、ブランチ ポインターは常に現在のブランチの最新のコミットを指します。 したがって、HEAD ポインターはブランチ ポインターにつながり、ブランチ ポインターは最新のコミットにつながります。 II. 作業ツリーとインデックスGit では、実際に作業するディレクトリは作業ツリーまたは作業領域と呼ばれます。 データベースと作業ツリーの間にはインデックスがあります。インデックスは、データベースへの送信準備に使用される領域であり、ステージング領域とも呼ばれます。 Git がコミットを実行すると、作業ツリーの状態がデータベースに直接保存されるのではなく、中間インデックス領域に設定された状態がデータベースに保存されます。 したがって、ファイルを送信するには、まずファイルをインデックス領域に追加する必要があります。 したがって、中間インデックスを使用することで、作業ツリーでの不要なファイルコミットを回避し、ファイルの変更の一部をインデックス領域に追加してコミットすることができます。 III. 相違点その場所から:
参考文献 https://backlog.com/git-tutorial/cn/intro/intro1_4.html https://juejin.cn/post/6844903598522908686 https://www.zsythink.net/archives/3412 |
インタビュアー: Git の HEAD、作業ツリー、インデックスの違いを教えてください。
関連するおすすめ記事
-
-
Subtitld: クロスプラットフォームのオープンソース字幕エディタ
-
Google は、大規模な多次元データの読み書き用に設計された TensorStore をオープンソース化しました。
-
89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">resource ( s )
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 検出キャッシュをクリアしています
2022/07/02 13:17:33 タイムアウト1 分で4つのリソースの待機を開始
2022/07/02 13:17:39 43個のリソースを作成しています( s )
2022/07/02 13:17:39 5分0 秒のタイムアウトで43のリソースの待機を開始
2022/07/02 13:17:40 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:17:42 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
……
2022/07/02 13:19:44 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:38:27 デプロイメントの準備ができていません: argocd / argocd - dex - server 。 1 個のポッドのうち0 個が準備完了です
2022/07/02 13:38:30 リリースインストールに成功しました: argocd / argo - cd - 4.9.11
2022-07-02 13:38:30 ✔ [ 成功] ツール( argocd / default ) の作成が完了しました。
2022 - 07 - 02 13 : 38 : 30 ℹ [ 情報] -------------------------- [ 処理の進行状況: 4/4 。 ] --------------------------
2022 - 07 - 02 13 : 38 : 30 ℹ [ INFO ] 処理中: ( argocdapp / default ) -> 作成...
2022-07-02 13:38:31 ℹ [ INFO ] application . argoproj . io / dtm - test - go が作成されました
2022-07-02 13:38:31 ✔ [ 成功] ツール( argocdapp / default ) の作成が完了しました。
2022-07-02 13:38:31 ℹ [ 情報] -------------------- [ 処理が完了しました。 ] --------------------
2022-07-02 13:38:31 ✔ [ 成功] すべてのプラグインが正常に適用されました。
2022-07-02 13:38:31 ✔ [ 成功] 申請が完了しました。適用プロセス中、実行状態は定義された状態バックエンドストレージに保存されます。例えば、ローカルストレージを使用している場合、実行状態はルートディレクトリのdevstream.stateファイルに保存されます。合計4つのツールチェーンがあり、最初の2つが完了し、最後の2つが認識された場合、最初の2つのプラグインの状態がこのファイルに保存されます。次回の再適用時には、最後の2つのツールチェーンのみを実行する必要があります。
上記で定義したツールチェーンは、最終的に GitHub 上に Golang Web 用のスキャフォールディングされたアプリケーション コード リポジトリを作成します。
GitHub Actions は、CI 操作と Docker イメージの構築に使用されます。
CI プロセスは最終的にイメージを Docker Hub にプッシュします。
その後、ArgoCD が Kubernetes にデプロイされます。
$ kubectl get pods -n argocd
名前準備完了ステータス再起動年齢
argocd - アプリケーション- コントローラー- 0 1 / 1 実行中0 5 分55秒
argocd - アプリケーションセット- コントローラー- 64 d8c477f4 - 2 wrg6 1 / 1 実行中0 5 分55秒
argocd - dex - サーバー- dbdbf5499 - krmfz 1 / 1 実行中0 5 分35秒
argocd - 通知- コントローラー- b67c4bdb4 - 22 t9l 1 / 1 実行中0 5 分55秒
argocd - redis - df9db799b - 8 gbpv 1 / 1 実行中0 5 分55秒
argocd - リポジトリ- サーバー- 56769 cdd47 - zs65j 1 / 1 実行中0 5 分55秒
argocd - サーバー- 7 d4745f689 - w5pp7 1 / 1 実行中0 5 分55秒最後に、ArgoCDを使用してCD操作を実行し、サンプルアプリケーションをKubernetesクラスターにデプロイします。基本的には、ArgoCDアプリケーションオブジェクトを作成します。
$ kubectl アプリケーションを取得- n argocd
名前同期ステータスヘルスステータス
dtm - テスト- go 不明健康ArgoCD を通じて、デプロイされたアプリケーションの詳細を表示することもできます。
最後に、ツールチェーン全体を削除する場合は、`dtm delete` コマンドを実行するだけです。
プロセス全体は非常にスムーズでした(ただし、何らかの理由でGitHubへのアクセスが非常に遅かった点を除けば)。必要なプラグインを設定ファイルで定義するだけで済みます。プラグインの設定方法の詳細については、公式ドキュメント(https://docs.devstream.io/en/latest/plugins/plugins-list/)をご覧ください。
YAML設定ファイルに必要なDevOpsツールを定義するだけで、たった1つのコマンドでDevOpsツールチェーンとSDLCワークフロー全体を構築できます。DevStreamはまさに魔法のツールと言っても過言ではありません。
Git リポジトリ: https://github.com/devstream-io/devstream。
-
Docker の基礎: Docker とは何ですか? なぜこれほど人気があるのですか?
-