GitHub初心者向けハンズオン

に公開

GitHub初心者向けハンズオン

"Claude Sonnet 3.5"を利用して作成しています。
(ちょこちょこ、手動で直してもいますが、大枠はClaudeでの生成です。)
細かい説明はなく、どんどんコマンドを打ってなれるための資料です。

目次

事前準備 プロンプトの変更

ブランチ名をプロンプトに表示するための設定です。Ubuntuでの利用を想定しています。
必須の作業ではありません。

  1. .bashrcファイルを編集します:

    nano ~/.bashrc
    
  2. ファイルの最後に以下の内容を追加します:

    parse_git_branch() {
         git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
    }
    
    export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\[\033[01;33m\]\$(parse_git_branch)\[\033[00m\]\$ "
    
  3. ファイルを保存し、閉じます(nanoの場合、Ctrl+X, Y, Enterの順に押します)。

  4. 変更を反映させます:

    source ~/.bashrc
    

    確認:手順2.4で初めてのコミットを行った際に、プロンプトにブランチ名が表示されます。
    それまでプロンプトに変化はないため、2.4まで進めてください。

Gitの初期設定とリポジトリの作成

  1. Gitの初期設定を行う(個人の情報に合わせて設定してください):

    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"
    git config --global init.defaultBranch main
    

    確認:git config --listで設定を確認

  2. 新しいローカルリポジトリを作成し、初期化する:

    mkdir my-project
    cd my-project
    git init
    

    確認:ls -laで.gitディレクトリを確認

  3. README.mdファイルを作成し、内容を追加:

    echo "# My Project" > README.md
    

    確認:cat README.mdで内容を確認

  4. 変更をステージングエリアに追加し、初めてのコミットを作成:

    git add README.md
    git commit -m "Initial commit: Add README.md"
    

    確認:git logでコミット履歴を確認

  5. GitHubウェブサイトで新しいリモートリポジトリ(my-project)を作成。
    メモ:GitHubウェブサイトに手順7でリンクするレポジトリがないと手順8で行うpushが失敗します。

  6. GitHub内で作成したリポジトリをローカルリポジトリとリンク:

    git remote add origin https://github.com/yourusername/my-project.git
    

    注意:yourusernameは,GitHubのアカウント名になります。
    確認:git remote -vでリモート設定を確認

  7. GitHub認証の設定(Personal Access Tokenを使用)と作成したREADME.txtのプッシュ:

    • GitHubでPersonal Access Tokenを生成(Push時のパスーワードとして使用します。)
    • Generate a personal access token on GitHub (右上のアカウントアイコン > Settings > Developer settings > Personal access tokens > Tokens (Classic)).
    • Generate New Tokens(Classic), repoをチェックしてトークン生成 (ghp_で始まるトークン)
    • 生成したトークンを使用してプッシュ:
      git push -u origin main
      

    メモ:ユーザ名はGitHubのアカウント名、パスワードは生成したTokenを利用
    確認:GitHubウェブサイトでリポジトリにファイルが同期されているか確認

ブランチの操作

  1. 新しいブランチ「feature」を作成し切り替え:

    git checkout -b feature
    

    確認:git branchで現在のブランチを確認

  2. 「feature.txt」ファイルを作成しコミット:

    echo "This is a new feature" > feature.txt
    git add feature.txt
    git commit -m "Add feature.txt"
    

    確認:git logでコミット履歴を確認

  3. メインブランチに戻り、「feature」ブランチをマージ:

    git checkout main
    

    確認:lsでfeature.txtがまだmainブランチにないことを確認。

    git merge feature
    

    確認:マージ後lsで'feature.txt'作成されいてることを確認。
    確認:git logでマージコミットを確認

コンフリクト競合の解決

  1. 「conflict.txt」ファイルを作成しコミット:

    echo "Original content" > conflict.txt
    git add conflict.txt
    git commit -m "Add conflict.txt"
    
  2. 新ブランチ「conflict-branch」を作成し内容を変更:

    git checkout -b conflict-branch
    echo "Content from conflict-branch" > conflict.txt
    git commit -am "Update conflict.txt in conflict-branch"
    
  3. メインブランチで同ファイルを別内容で更新:

    git checkout main
    echo "Content from main branch" > conflict.txt
    git commit -am "Update conflict.txt in main branch"
    
  4. コンフリクト(競合)を解決:

    git merge conflict-branch
    # コンフリクトが発生したconflict.txtを開き、マーカー間の内容を確認・編集してコンフリクトを解決
    git add conflict.txt
    git commit -m "Resolve merge conflict in conflict.txt"
    

    確認:git statusでコンフリクト解決を確認、cat conflict.txtで最終内容を確認

リベースの実践

  1. 「feature-branch」を作成し変更を加える:

    git checkout -b feature-branch
    echo "Feature 1" > feature1.txt
    git add feature1.txt
    git commit -m "Add feature 1"
    echo "Feature 2" > feature2.txt
    git add feature2.txt
    git commit -m "Add feature 2"
    
  2. メインブランチで別の変更を加える:

    git checkout main
    echo "Main branch update" > main-update.txt
    git add main-update.txt
    git commit -m "Update main branch"
    
  3. feature-branchをリベース:

    git checkout feature-branch
    git rebase main
    

    確認:git logでリベース後の履歴を確認

    注意:rebaseはコミット履歴を書き換えるため、公開されたブランチでの使用は避けましょう。主にローカルでの作業や、個人的なブランチの整理に使用します。

プルリクエストの作成と管理

  1. 新ブランチ「pull-request-demo」を作成:

    git checkout -b pull-request-demo
    echo "Pull request demo" > pr-demo.txt
    git add pr-demo.txt
    git commit -m "Add pull request demo file"
    git push -u origin pull-request-demo
    
  2. GitHubウェブサイトでプルリクエストを作成

  3. プルリクエストをレビュー、コメント追加

  4. プルリクエストをマージ(GitHubウェブサイト上で)

  5. ローカルリポジトリを更新:

    git checkout main
    git pull origin main
    

    確認:git logでマージされたコミットを確認、lsで'pr-demo.txt'の存在を確認

リモートファイルの削除

  1. テスト用のファイルを作成してコミット:

    echo "This file will be deleted" > file_to_delete.txt
    git add file_to_delete.txt
    git commit -m "Add file_to_delete.txt"
    git push origin main
    

    確認:GitHubウェブサイトでfile_to_delete.txtが追加されたことを確認

  2. ファイルを削除し、その変更をコミット:

    git rm file_to_delete.txt
    git commit -m "Remove file_to_delete.txt"
    

    確認:git statusで削除がコミットされたことを確認

  3. 変更をリモートリポジトリにプッシュ:

    git push origin main
    

    確認:GitHubウェブサイトでfile_to_delete.txtが削除されたことを確認

  4. (オプション)既に手動で削除したファイルの場合:

    git add -u
    git commit -m "Remove manually deleted files"
    git push origin main
    

    確認:git statusで全ての変更が反映されたことを確認

    注意:この操作はファイルをリポジトリの履歴から完全に削除するものではありません。履歴からも完全に削除する必要がある場合(機密情報の誤コミットなど)は、より高度な操作が必要となります。

ブランチの削除

  1. ローカルブランチの削除(git branchでブランチ情報確認):

    git branch -d feature
    git branch -d conflict-branch
    git branch -d feature-branch
    git branch -d pull-request-demo
    

    注意:マージされていないブランチは-Dオプションで強制削除

  2. リモートブランチの削除:

    git push origin --delete feature
    git push origin --delete conflict-branch
    git push origin --delete feature-branch
    git push origin --delete pull-request-demo
    
  3. (参考情報)全ローカルブランチの一括削除(main除く):

    git branch | grep -v "main" | xargs git branch -D
    

リモート接続の切断と再接続

  1. リモート接続の切断:

    git remote remove origin
    
  2. リモート接続の再確立:

    git remote add origin https://github.com/yourusername/my-project.git
    

    確認:git remote -vで接続を確認

  3. 認証情報のリセット(必要に応じて):

    git config --global --unset credential.helper
    

トレーニング環境のクリーンアップ

トレーニング終了時に環境をクリーンアップするには、以下の手順を実行します:

  1. プロジェクトディレクトリに移動:

    cd my-project
    

    確認 pwdでmy-projetctディレクトリ内にいるのか、ls -laで.gitディレクトリがあるかを確認

  2. Gitリポジトリの情報を削除:

    rm -rf .git
    
  3. 親ディレクトリに移動:

    cd ..
    
  4. プロジェクトディレクトリを削除:
    注意:この操作は取り返しがつきません。重要なデータがある場合は、事前にバックアップを取ってください

    rm -rf my-project
    

    メモ: GitHub上のレポジトリも、レポジトリ内の'Setting' > 'Denger Zone'> 'Delete this repository'で削除してください。

まとめ

このハンズオンを通じて、Gitの基本的な操作からGitHubを使用した協調作業の流れまでを学びました。実際のプロジェクトでこれらの知識を活用し、効率的なバージョン管理と協調作業を行いましょう。

継続的な学習と実践が、Git/GitHubのスキル向上につながります。わからないことがあれば、公式ドキュメントやコミュニティフォーラムを活用してください。

Happy coding!

Discussion