Wilhel

Wilhel

バージョン管理(Git)

Git のコマンドラインインターフェース#

Pro Git 日本語版: https://git-scm.com/book/ja/v2

基礎#

  • git help <command>: git コマンドのヘルプ情報を取得
  • git init: 新しい git リポジトリを作成し、そのデータは .git という名前のディレクトリに保存される
  • git status: 現在のリポジトリの状態を表示
  • git add <filename>: ファイルをステージングエリアに追加
  • git commit: 新しいコミットを作成
  • git log: 履歴ログを表示
  • git log --all --graph --decorate: 履歴を視覚化(有向非循環グラフ)
  • git diff <filename>: ステージングエリアのファイルとの違いを表示
  • git diff <revision> <filename>: 特定のファイルの 2 つのバージョン間の違いを表示
  • git checkout <revision>: HEAD と現在のブランチを更新

ブランチとマージ#

  • git branch: ブランチを表示
  • git branch <name>: ブランチを作成
  • git checkout -b <name>: ブランチを作成し、そのブランチに切り替え
    • git branch <name>; git checkout <name> と同等
  • git merge <revision>: 現在のブランチにマージ
  • git mergetool: ツールを使用してマージコンフリクトを処理
  • git rebase: 一連のパッチを新しいベースにリベース

リモート操作#

  • git remote: リモートを一覧表示
  • git remote add <name> <url>: リモートを追加
  • git push <remote> <local branch>:<remote branch>: オブジェクトをリモートに送信し、リモートの参照を更新
  • git branch --set-upstream-to=<remote>/<remote branch>: ローカルとリモートブランチの関連付けを作成
  • git fetch: リモートからオブジェクト / インデックスを取得
  • git pull: git fetch; git merge と同等
  • git clone: リモートからリポジトリをダウンロード

取り消し#

  • git commit --amend: コミットの内容または情報を編集
  • git reset HEAD <file>: ステージングされたファイルを復元
  • git checkout -- <file>: 変更を破棄
  • git restore: git2.32 以降のバージョンで git reset の多くの取り消し操作を置き換える

Git 高度な操作#

  • git config: Git は 高度にカスタマイズ可能な ツール
  • git clone --depth=1: シャロークローン(shallow clone)、完全なバージョン履歴情報を含まない
  • git add -p: インタラクティブなステージング
  • git rebase -i: インタラクティブなリベース
  • git blame: 最後に特定の行を変更した人を確認
  • git stash: 作業ディレクトリの変更内容を一時的に削除
  • git bisect: 二分探索を使用して履歴を検索
  • .gitignore追跡しないファイルを指定

雑多#

  • グラフィカルユーザーインターフェース: Git の グラフィカルユーザーインターフェースクライアント は多数ありますが、私たちはこれらのグラフィカルユーザーインターフェースクライアントを使用せず、コマンドラインインターフェースを選択します
  • シェル統合: Git ステータスをシェルに統合すると非常に便利です。(zshbash)。Oh My Zshのようなフレームワークには一般的にこの機能が統合されています
  • エディタ統合: 上記と同様に、Git をエディタに統合することには多くの利点があります。fugitive.vim は Vim で Git を統合するための一般的なプラグインです
  • ワークフロー: データモデルといくつかの基本コマンドについて説明しましたが、大規模プロジェクトを行う際のいくつかの慣習についてはまだ議論していません ( 多くの 異なる アプローチ)
  • GitHub: Git は GitHub と同じではありません。 GitHub では、他のプロジェクトにコードを貢献するために プルリクエスト(pull request) と呼ばれる方法を使用する必要があります
  • 他の Git プロバイダー: GitHub は唯一ではありません。 GitLab や BitBucket のようなプラットフォームもあります。

リソース#

  • Pro Git 、強く推奨!最初の 5 章を学ぶことで、Git のデータモデルを理解しているため、ほとんどのテクニックをスムーズに使用できるようになります。後の章では多くの興味深い高度なテーマが提供されています。(Pro Git 日本語版);
  • Oh Shit, Git!?! 、Git エラーからの回復方法を簡潔に紹介;
  • Git for Computer Scientists 、Git のデータモデルを簡潔に紹介し、この記事と比較して少量の擬似コードと多くの美しい画像を含む;
  • Git from the Bottom Up Git の実装の詳細を詳しく説明し、データモデルに限定されない。興味のある方はぜひご覧ください;
  • How to explain git in simple words
  • Learn Git Branching ブラウザベースのゲームを通じて Git を学ぶ;

課題#

  1. もし以前に Git を使用したことがない場合は、 Pro Git の最初の数章を読むことをお勧めします。または、 Learn Git Branching のようなチュートリアルを完了してください。Git コマンドとデータモデルに関連する内容に重点を置いてください;
  2. このコースのウェブサイトのリポジトリをフォークする
    1. バージョン履歴を視覚化して探索する
      Git log --all --graph --decorate
      
    2. 誰が最後に README.md ファイルを変更しましたか?(ヒント:git log コマンドを使用し、適切なパラメータを追加)
      git log -1 README.md
      
      • -x オプション:最新の x 回のコミットまたは特定のファイルのバージョン情報を表示
    3. 最後に _config.yml ファイルの collections: 行を変更したときのコミットメッセージは何ですか?(ヒント:git blame と git show を使用)
      git blame _config.yml | grep collections
      git show --pretty=format:"%s" a88b4eac | head -1
      git log --pretty=format:"%s" a88b4eac -1
      
  3. Git を使用する際の一般的なエラーは、Git に管理されるべきではない大きなファイルをコミットすることや、機密情報を含むファイルを Git にコミットすることです。リポジトリにファイルを追加し、コミットメッセージを追加してから、履歴から削除してみてください ( この記事が役立つかもしれません);
    1. まず、いくつかの機密情報をコミットする
      echo "password123">my_password
      git add .
      git commit -m "add password123 to file"
      git log HEAD
      
    2. git filter-branch を使用してコミット履歴を消去
        git filter-branch --force --index-filter\
        'git rm --cached --ignore-unmatch ./my_password' \
        --prune-empty --tag-name-filter cat -- --all
      
  4. GitHub からリポジトリをクローンし、いくつかのファイルを変更します。git stash を使用すると何が起こりますか?git log --all --oneline を実行すると何が表示されますか?git stash pop コマンドを使用して git stash 操作を元に戻すとき、このテクニックはいつ使用されますか?
  5. 他のコマンドラインツールと同様に、Git も ~/.gitconfig という名前の設定ファイル(またはドットファイル)を提供します。~/.gitconfig にエイリアスを作成し、git graph を実行すると、git log --all --graph --decorate --oneline の出力結果が得られるようにしてください;
  6. git config --global core.excludesfile ~/.gitignore_global を実行することで、~/.gitignore_global にグローバル無視ルールを作成できます。システムやエディタの一時ファイル(例:.DS_Store)を自動的に無視するようにグローバル gitignore ファイルを設定してください;
  7. このコースのウェブサイトのリポジトリをクローンし、スペルミスや改善点がないか探し、GitHub でプルリクエスト(Pull Request)を作成してください;
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。