【概要把握】Git/Githubを初めて触る人が抑えておくべき基本の概念や触り方を広くカバー(学生、エンジニア/技術者、研究者用)【初学者向け】

Поділитися
Вставка
  • Опубліковано 16 жов 2024
  • 本日は、初心者のためのGitおよびGithubについてのチュートリアルです.
    大学生、高専生、エンジニア、研究者がまず初めに単語や概念を知っておくことで、調べやすい、理解しやすくなることを目指した動画です.
    基本的なGitやGithubの概念、その操作の概要の理解を中心として解説しています.
    Gitで元に戻す方法(checkoutやreset)はもちろん、ブランチやマージの概念、リモート追跡ブランチ、リモートブランチ、ローカルブランチ、そういった作業で頭離前に必要となる概念を抑えます。またGitがどのように変更履歴を管理しているかやGithubでのプルリクの流れなども解説しています。
    この動画で、Gitがどのようにしてコミットを管理して他とのマージを行っているか、インデックスやステージングの操作とは何か、フェッチとプルの違いや各コマンドの省略などを把握できるはずです.
    25分で全て簡単に抑えられるようにわかりやすく解説します.
    【リンク】
    【概要把握】Part1 : Ubuntuを初めて触る人が抑えておくべき基本の概念や触り方を広くカバー(学生、エンジニア/技術者、研究者用)【初学者向け】
    • 【概要把握】Part1 : Ubuntuを初...
    【概要速修】コミュニティーノートはどうやってノートを評価するのかざっくり仕組みやアルゴリズムを知る(MatrixFactorization)【機械学習解説動画】
    • 【概要速修】コミュニティーノートはどうやって...
    ThothChildrenの解説記事 : 隠れマルコフモデル
    www.thothchildr... #ThothChildren
    【数分解説|眺めて理解】高速フーリエ変換 FFT: 離散フーリエ変換を回転因子の特性を活かしてコンピュータでの計算を高速にし計算量をNlogNにする手法.【高速フーリエ変換4/4】
    • 【数分解説|眺めて理解】高速フーリエ変換 F...
    【数分解説】離散フーリエ変換: 離散的周期的な時間領域と周波数領域の間を双方に変換. 周波数とその強さを求める. コンピュータでの計算を可能にする手法【高速フーリエ変換3/4】
    • 【数分解説】離散フーリエ変換: 離散的周期...
    【数分解説】フーリエ変換: 時間領域と周波数領域の間を双方に変換. 周波数とその強さを求める. 複素フーリエ級数展開の導出から【高速フーリエ変換2/4】
    • 【数分解説】フーリエ変換: 時間領域と周波...
    【数分解説】フーリエ級数展開: ほぼ全ての関数を重み付けしたsin関数とcos関数等の三角関数の和で表現し周波数の分析を行う. 特定の区間を繰り返す周期関数が対象.【高速フーリエ変換1/4】
    • 【数分解説】フーリエ級数展開: ほぼ全ての関...
    【概要速修】Stable Diffusion(テキストから画像生成)はどうやって実現するのかざっくり仕組みを知る(DiffusionModel,Deep Learninig)【機械学習解説動画】
    • 【概要速修】Stable Diffusion...
    ThothChildren - エンジニアをサポートするサイト
    www.thothchildr...
    【概要速修】ロボットの作り方、仕組みをさっと知りたい【初心者向け】
    • 【概要速修】ロボットの作り方、仕組みをさっと...
    【概要速修】C言語やC++がコンパイルされて実行される仕組みをさっと知りたい. なぜ異なるOSで実行できないかなど【初心者向け】
    • 【概要速修】C言語やC++がコンパイルされて...
    【概要速修】JavaScriptはどう動く?仕組みをさっと知りたい【初心者向け】
    • 【概要速修】JavaScriptはどう動く?...
    【概要速修】Webサービスの全体の仕組みをさっと知りたい【初心者向け】
    • 【概要速修】Webサービスの全体の仕組みをさ...
    【概要速修】JPEGファイルとは何か、画像の圧縮される仕組みをさっと知りたい. 画像のフーリエ変換のイメージやハフマン符号など【JPEG圧縮】
    • 【概要速修】JPEGファイルとは何か、画像の...
    【即実践】Webブラウザでできる最新DeepLearning物体検出(ml5.js)【Web / DeepLearning / TensorFlow / Javascript /HTML】
    • 【即実践】Webブラウザでできる最新Deep...
    【実践】Webブラウザでできるエッジ抽出画像処理(OpenCV.js)【Web / OpenCV.js / Javascript /HTML】
    • 【実践】Webブラウザでできるエッジ抽出画像...
    【Git解説一部抜粋】
    ブランチはコミットの履歴かが一本道になるのではなく複数に枝分かれします。複数人で作業する時に個々人の作業がぶつからないように活用したり、異なった作業をそれぞれの履歴の中に残す場面で使用します。各ブランチで作業してコミットするとそれぞれの履歴が追加されていきます。ブランチは枝分かれした履歴の最新のコミットを指す概念です。作業を分けたい時には、各ブランチの名前を自分でつけて作成し、不要となったら削除ができます。
    その今どのブランチで作業しているかどこにいるかが重要になるため、今いるコミットやブランチを指すHEADという概念があります。現在はmainブランチを指している状態です。
    常にヘッドが指すコミットの状態にフォルダやファイルは変更されます。HEADがブランチをさしていないときはDetached Headと呼びます。この状態でコミットするとそのコミットはどのブランチからも刺されていないためそのコミットには戻れなくなってしまいます。新しいブランチを作る必要があります。ブランチ名を指定してチェックアウトを実行します。新しいコミットを作った上でブランチを作るとこのようにヘッドが移動します。
    では元のメインにヘッドを戻します。別のブランチに移動する時も移動先のブランチを指定してチェックアウトを使います。ブランチを変更したことで左下のファイルも変化します。ブランチを作って作業を終えると最終的に元の履歴に反映、統合していく必要があります。この作業をマージと呼びます。後ほど詳細を確認します。
    gitにはタグという概念があります。タグは特定のコミットに結びつけることができます。例えばリリースしたバージョンの時のコミットを記録しておき、不具合発生時にそのバージョンに戻って原因を解析するなどが可能となります。
    それではマージについて詳しく学びましょう。
    マージはブランチを統合する作業です。二つのブランチでそれぞれのファイルの変更を見て特に変更が被った箇所出なければ、そのまま新しい履歴、マージコミットを作ります。
    もし異なる人が同じファイルを編集していた場合はどちらが正しいか、二つの変更をどう取り入れれば良いかわかりません。この状態をコンフリクトと呼びます。このように二つのブランチでそれぞれ同じファイルに変更が入った場合は、プログラマで修正してからコミットする必要が出てきます。
    最後に特殊ケースとしてファストフォワードを紹介します。
    マージは二つのブランチが統合される時にマージコミットが作成されますが、片方のブランチから生やした後で特に変更がなければ、そのままマージコミットを作らずにブランチが指すコミットを変えるだけにすることができる方式です。
    ローカルブランチは先ほどブランチのところで紹介した作業している履歴を示すブランチです。
    一方でリモート追跡ブランチはリモートレポジトリでのブランチをコピーした特殊なブランチで、基本的に自動的に作られるブランチです。ローカルブランチは対応するリモートブランチを上流ブランチとして結びつけて、リモートブランチの更新時に更新されるように設定します。上流ブランチが設定されていれば以後のコマンドで引数を省略できます。しかし、実際にデータをコピーする元はこのリモート追跡ブランチになります。
    まずレポジトリをコピーする処理、フォークを行い自分のレポジトリを用意します。
    これをクローンして作業して、プッシュしても誰にも迷惑をかけません。
    この状態にした上で本家のレポジトリに変更を取り入れてもらうために、すなわちプルしてもらうために、プルリクエストと呼ばれる操作をWeb上で行います。プルリクを作成すると自分の入れて欲しい変更に関する内容を確認できるページが用意され、元のプログラムの開発者がレビューすることができます。もしレビューしてOKとなったらプルしてマージしてもらえます。もし問題点があれば自分の変更を修正して再度みてもらうか、諦めるかになります。
    このコミットにメインブランチがさしており、このメインブランチをヘッドが指しています。コミットデータは必ずその時のデータの状態を表すツリーデータを指しており、これはフォルダなどを示す概念になっています。この下に二つのファイルがあり、そのファイルを指すブロブデータがあります。今回は二つファイルがあるので二つのブロブファイルがります。このデータ全てにコミット同様にIDが振られて格納されています。
    この状態の.gitフォルダの中をみてみましょう。
    objectsフォルダには複数のデータが格納されていますが、先ほどのIDの先頭二文字のフォルダの中に該当するファイルがそれぞれ置かれています。
    またコミットを指すブランチやHEADはそれぞれはファイルになっており、mainは今のコミットの番号を記載、ヘッドはmainブランチを参照していることをファイルに書いています。
    ---
    リテラシー学習アプリSukunabikoもAppStoreで公開中!!!
    apps.apple.com...
    アプリを作るアプリLokiもAppStoreで公開中!!!
    apps.apple.com...
    ずんだモンボイスで話そうSeshatVaoiceもAppStoreで公開中!!!
    apps.apple.com...
    ずんだもんなどの声の動画にしようSeshatもAppStoreで公開中!!!
    apps.apple.com...

КОМЕНТАРІ •