Gitの概要と利用方法

Gitの導入と基本的な使い方

# サーバー側でAPIを作成し、機能を実装した後、会社ではそのコードをリモートリポジトリにプッシュする必要があります。

# チームでの共同開発を行う際には、バージョン管理ソフトウェアとしてSVNやGitが使用されます。

# インストール手順:
    - https://git-scm.com/downloads
    - インストーラーの指示に従ってインストール
    - インストール後に任意のフォルダで右クリックすると「Git GUI here」および「Git Bash here」が表示されれば正常にインストールされています。

PyCharmにおけるGit設定

# GitHubやGiteeなどのオープンソースプラットフォームからプロジェクトをダウンロードする場合、
# PyCharmを使って直接クローンすることも可能です。
# PyCharmの設定画面でGitの実行ファイルパスを指定します。

# オープンソースプロジェクトを取得する際は、VCS -> Get from Version Control -> URLを入力してCloneします。

SVN、Git、GitHub、Gitee、GitLabの違い

# SVN:中央集権型のバージョン管理システム。サーバーが必要で、サーバーが停止すると使用不可。
# Git:分散型のバージョン管理システム。各クライアントがサーバーとして機能可能。サーバー障害時でも管理可能。
# GitHub:世界最大のオープンソースリポジトリ。コードを公開する場合に使用。
# Gitee:中国最大のオープンソースリポジトリ。プライベートリポジトリには有料プランが必要。
# GitLab:企業内部向けのリモートリポジトリ。運用チームが構築・保守します。

Gitの作業フロー

# フローの流れ:
    1. Gitによって管理されるファイルに変更(追加、削除、編集)があると、赤色で表示されます。
    2. 変更内容をステージングエリアに移動させると緑色になります。
    3. ステージングエリアからバージョン管理システムにコミットすることで、過去の状態に戻すことが可能になります。
    
    4. バージョン管理システムの内容をリモートリポジトリにプッシュして統合管理します。
    5. ローカル環境からリモートのコードを取得できます。
    6. ローカルのコードをリモートにプッシュできます。

# 注意事項:
    """
    1) 赤い変更点がある場合、addコマンドを実行
    2) 全ての変更が緑色になった場合のみcommitを実行
    3) バージョン管理されたファイルのみ、履歴を遡ることができます。
    """

Gitの基本コマンド

初期化

プロジェクトのルートディレクトリでコマンドプロンプトを開き、git initを実行すると、現在のフォルダがGitリポジトリになります。

状態確認

IDEのコンソールまたは右クリックメニューのGit Bashでgit statusを実行します。

ユーザー情報の設定【ローカル設定優先、次にグローバル設定、どちらもない場合はエラー】

ローカル設定:現在のリポジトリのみ適用される。.git/configファイルに記録されます。
        git config user.name 'liuqingzheng'
        git config user.email '616564099@qq.com'
グローバル設定:すべてのリポジトリで共通。C:\Users\ユーザー名\.gitconfigに記録されます。
        git config --global user.name 'lqz'
        git config --global user.email '306334678@qq.com'

作業ディレクトリの内容をステージングエリアへ移動

コードを修正後、git statusを実行するとファイル名が赤くなります。その後、git add <ファイル名>または.(すべてのファイル)を実行することで、変更内容をステージングエリアに移動します。

ステージングエリアからバージョン管理へコミット【コメント必須】

ステージングエリアの内容をバージョン管理にコミットします。git commit -m 'コメント'で実行します。

バージョン履歴の確認【ローカルのバージョン一覧】

詳細表示:git log
簡易表示:git reflog

作業ディレクトリの変更を取り消す

git checkout . で変更前の状態に戻します。

ステージングエリアの内容を作業ディレクトリに戻す

git reset HEAD でステージングエリアから作業ディレクトリに戻します。

バージョン管理からステージングエリアに戻す

git reset --soft 前のバージョン番号 で戻します。

バージョン管理から作業ディレクトリに戻す

git reset --バージョン番号
git reset --mixed バージョン番号
git add . と git commit -m '' の操作を取り消します。

バージョン管理された最終状態に戻す

git reset --hard バージョン番号 で指定されたバージョンに直接戻ります。

重要なコマンド一覧

    git init
    git status   # git status -s で簡略表示
    git log
    git reflog
    git add .
    git commit -m ''
    git reset --hard バージョン番号

Gitによる無視ファイルの設定

# プロジェクト内には.pyファイルやnode_modules、.ideaなど、Gitで管理したくないものがあります。これらを除外するために.gitignoreファイルを作成します。

# 手順:
    1. リポジトリのルートディレクトリに.gitignoreという名前のファイルを作成します(拡張子なし)。
    2. ファイルやディレクトリを指定して除外します。
    3. 構文例:

        """
        ファイル名:すべてのディレクトリ内の同名ファイルを除外
        /ファイル名:リポジトリルート直下のファイルのみを除外

        例:
        a.txt:プロジェクト内のすべてのa.txtを除外
        /a.txt:ルートディレクトリのa.txtのみを除外
        /b/a.txt:ルートディレクトリ内のbディレクトリのa.txtのみを除外
        *x*:名前にxが含まれるファイルを除外(*は0個以上の文字列)
        空ディレクトリはプッシュされませんが、空のパッケージはプッシュ可能です。
        """

複数ブランチでの開発

# 会社で3人が同じプロジェクト(例:ルフィ)を同時に開発している場合、一部の機能が完成しテスト環境にデプロイされた後、他のメンバーが継続的に開発を進めます。
# ブランチを使用することで、効率的な協働開発とバージョン管理が可能になります。

# ブランチ操作:
    - ブランチの一覧表示:
        git branch  # *と緑色のものが現在のブランチ
    - 新規作成:
        git branch dev
    - 切り替え:
        git checkout dev
    - 削除:
        git branch -d dev  # 他のブランチから実行する必要あり
    - マージ:
        masterブランチにdevをマージする場合:
        git checkout master
        git merge dev

    - リモートブランチの確認:
        git branch -a

リモートリポジトリとの連携

# GitHub:アクセス速度が遅い
# Gitee:中国のサービスで高速。会社でよく使われます。
# GitLab:社内用のリポジトリ。管理チームが構築します。

# Gitee:全員がアカウント登録後、リポジトリを作成し、コードをプッシュします。
# リモートリポジトリの作成:
    - 名前だけ入力し、他は空白
    - オープンソースライセンス:GPL、Apache
        - GPL:自由に使用・修正可能だが、改変したコードは公開義務がある
        - Apache:商用利用可能だが、使用したことを明示する必要がある

# ローカルコードをリモートにプッシュする手順:
    - ローカルに既存のリポジトリがあり、リモートは空の場合
    - ユーザー情報を設定(Contributors欄でアイコン表示に必要)
        git config --global user.name "liuqingzheng"
        git config --global user.email "306334678@qq.com"

    - 既存リポジトリにリモートリポジトリを追加
        git remote add origin https://gitee.com/liuqingzheng/lqz.git
    - ローカルコードをプッシュ
        git push origin master  # ローカルのmasterをoriginにプッシュ
    - 最初のプッシュ時は認証が必要(ID/パスワード)
    - 後は認証なしでプッシュ可能(資格情報管理で設定変更可)

リモートリポジトリへのプッシュ(非空リポジトリ)

# 1. リモートリポジトリluffy_apiを作成(空でない)
# 2. git clone https://gitee.com/liuqingzheng/luffy_api.git でリモートをローカルにクローン
# 3. プロジェクトコードをluffy_apiフォルダにコピー(.gitはコピーしない)
# 4. git add .
# 5. git commit -m '初期化'
# 6. git push origin master

# 今後の開発手順:
    - git add .
    - git commit -m '機能完了:xxxファイルを修正'
    - git pull origin master  # リモート更新を取得(衝突防止)
    - git push origin master  # リモートにプッシュ

SSHによるリモート接続と共同開発

# HTTPSではなく、SSHを使ったリモート接続が一般的です。
# HTTPS vs SSH:
    - HTTPS:ユーザー名とパスワードを入力し、認証情報として保存
    - SSH:公開鍵・秘密鍵のペアを設定

# SSH設定手順:
    - https://gitee.com/help/articles/4181 を参考に設定
    - コマンドプロンプトで以下を実行すると、C:\Users\ユーザー\.sshに鍵が生成されます。
        ssh-keygen -t ed25519 -C "メールアドレス"
    - 生成されたファイル:
        id_ed25519  # 秘密鍵(絶対に漏れない)
        id_ed25519.pub  # 公開鍵(誰にでも渡せる)

    - 公開鍵をGiteeに登録
    - これでSSH接続が可能になり、認証なしでプッシュ・プルが可能になります。

# 今後の操作手順:
    - HTTPS接続を削除:git remote remove origin
    - SSH接続を追加:git remote add bxf git@gitee.com:shangxin0v0/luffy.git
    - git pull bxf master  # SSH経由でプル
    - git push bxf master  # SSH経由でプッシュ

共同開発の手順

# 全員がGiteeアカウントを持っている場合、ルフィプロジェクトを共同開発します。
# 管理者はプロジェクトの開発者を追加します。

# あなたがプロジェクトのクローンを取得し、開発開始:
    - git clone git@gitee.com:liuqingzheng/luffy_api.git
    - PyCharmで開発を開始
    - git add .
    - git commit -m '新しい機能追加'
    - git pull origin master
    - git push origin master

コンフリクトの解決方法

複数人での同じブランチでの開発でコンフリクト

複数人が同じファイルの同じ箇所を編集し、一方が先にプッシュした場合、もう一方のプッシュ時にコンフリクトが発生します。
この場合、まずプルして変更内容を比較し、どちらのコードを残すか判断します。
同じ機能であれば、より良い方を残して、不要なコードを削除します。

ブランチマージ時のコンフリクト

masterブランチとdevブランチで同じ行を編集した場合、マージ時にコンフリクトが発生します。
Gitは両方の変更を表示し、手動で選択・統合する必要があります。
オンラインでのマージでも同様です。

PyCharmでのGit操作

リモートからのクローン

ステージング

コミット

プッシュ

プル

ブランチ操作

ログ確認

ローカルとバージョン管理の比較

詳細表示

バージョン管理のURLとユーザー名確認

タグ: Git version control repository branch merge

6月17日 23:44 投稿