GitHub初心者向けハンズオン
GitHub初心者向けハンズオン
"Claude Sonnet 3.5"を利用して作成しています。
(ちょこちょこ、手動で直してもいますが、大枠はClaudeでの生成です。)
細かい説明はなく、どんどんコマンドを打ってなれるための資料です。
目次
- 事前準備 プロンプトの変更
- Gitの初期設定とリポジトリの作成
- ブランチの操作
- コンフリクト競合の解決
- リベースの実践
- プルリクエストの作成と管理
- リモートファイルの削除
- ブランチの削除
- リモート接続の切断と再接続
- トレーニング環境のクリーンアップ
- まとめ
事前準備 プロンプトの変更
ブランチ名をプロンプトに表示するための設定です。Ubuntuでの利用を想定しています。
必須の作業ではありません。
-
.bashrcファイルを編集します:
nano ~/.bashrc -
ファイルの最後に以下の内容を追加します:
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\]\$ " -
ファイルを保存し、閉じます(nanoの場合、Ctrl+X, Y, Enterの順に押します)。
-
変更を反映させます:
source ~/.bashrc確認:手順2.4で初めてのコミットを行った際に、プロンプトにブランチ名が表示されます。
それまでプロンプトに変化はないため、2.4まで進めてください。
Gitの初期設定とリポジトリの作成
-
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で設定を確認 -
新しいローカルリポジトリを作成し、初期化する:
mkdir my-project cd my-project git init確認:
ls -laで.gitディレクトリを確認 -
README.mdファイルを作成し、内容を追加:
echo "# My Project" > README.md確認:
cat README.mdで内容を確認 -
変更をステージングエリアに追加し、初めてのコミットを作成:
git add README.md git commit -m "Initial commit: Add README.md"確認:
git logでコミット履歴を確認 -
GitHubウェブサイトで新しいリモートリポジトリ(my-project)を作成。
メモ:GitHubウェブサイトに手順7でリンクするレポジトリがないと手順8で行うpushが失敗します。 -
GitHub内で作成したリポジトリをローカルリポジトリとリンク:
git remote add origin https://github.com/yourusername/my-project.git注意:yourusernameは,GitHubのアカウント名になります。
確認:git remote -vでリモート設定を確認 -
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ウェブサイトでリポジトリにファイルが同期されているか確認
ブランチの操作
-
新しいブランチ「feature」を作成し切り替え:
git checkout -b feature確認:
git branchで現在のブランチを確認 -
「feature.txt」ファイルを作成しコミット:
echo "This is a new feature" > feature.txt git add feature.txt git commit -m "Add feature.txt"確認:
git logでコミット履歴を確認 -
メインブランチに戻り、「feature」ブランチをマージ:
git checkout main確認:
lsでfeature.txtがまだmainブランチにないことを確認。git merge feature確認:マージ後
lsで'feature.txt'作成されいてることを確認。
確認:git logでマージコミットを確認
コンフリクト競合の解決
-
「conflict.txt」ファイルを作成しコミット:
echo "Original content" > conflict.txt git add conflict.txt git commit -m "Add conflict.txt" -
新ブランチ「conflict-branch」を作成し内容を変更:
git checkout -b conflict-branch echo "Content from conflict-branch" > conflict.txt git commit -am "Update conflict.txt in conflict-branch" -
メインブランチで同ファイルを別内容で更新:
git checkout main echo "Content from main branch" > conflict.txt git commit -am "Update conflict.txt in main branch" -
コンフリクト(競合)を解決:
git merge conflict-branch # コンフリクトが発生したconflict.txtを開き、マーカー間の内容を確認・編集してコンフリクトを解決 git add conflict.txt git commit -m "Resolve merge conflict in conflict.txt"確認:
git statusでコンフリクト解決を確認、cat conflict.txtで最終内容を確認
リベースの実践
-
「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" -
メインブランチで別の変更を加える:
git checkout main echo "Main branch update" > main-update.txt git add main-update.txt git commit -m "Update main branch" -
feature-branchをリベース:
git checkout feature-branch git rebase main確認:
git logでリベース後の履歴を確認注意:rebaseはコミット履歴を書き換えるため、公開されたブランチでの使用は避けましょう。主にローカルでの作業や、個人的なブランチの整理に使用します。
プルリクエストの作成と管理
-
新ブランチ「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 -
GitHubウェブサイトでプルリクエストを作成
-
プルリクエストをレビュー、コメント追加
-
プルリクエストをマージ(GitHubウェブサイト上で)
-
ローカルリポジトリを更新:
git checkout main git pull origin main確認:
git logでマージされたコミットを確認、lsで'pr-demo.txt'の存在を確認
リモートファイルの削除
-
テスト用のファイルを作成してコミット:
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が追加されたことを確認 -
ファイルを削除し、その変更をコミット:
git rm file_to_delete.txt git commit -m "Remove file_to_delete.txt"確認:
git statusで削除がコミットされたことを確認 -
変更をリモートリポジトリにプッシュ:
git push origin main確認:GitHubウェブサイトで
file_to_delete.txtが削除されたことを確認 -
(オプション)既に手動で削除したファイルの場合:
git add -u git commit -m "Remove manually deleted files" git push origin main確認:
git statusで全ての変更が反映されたことを確認注意:この操作はファイルをリポジトリの履歴から完全に削除するものではありません。履歴からも完全に削除する必要がある場合(機密情報の誤コミットなど)は、より高度な操作が必要となります。
ブランチの削除
-
ローカルブランチの削除(git branchでブランチ情報確認):
git branch -d feature git branch -d conflict-branch git branch -d feature-branch git branch -d pull-request-demo注意:マージされていないブランチは
-Dオプションで強制削除 -
リモートブランチの削除:
git push origin --delete feature git push origin --delete conflict-branch git push origin --delete feature-branch git push origin --delete pull-request-demo -
(参考情報)全ローカルブランチの一括削除(main除く):
git branch | grep -v "main" | xargs git branch -D
リモート接続の切断と再接続
-
リモート接続の切断:
git remote remove origin -
リモート接続の再確立:
git remote add origin https://github.com/yourusername/my-project.git確認:
git remote -vで接続を確認 -
認証情報のリセット(必要に応じて):
git config --global --unset credential.helper
トレーニング環境のクリーンアップ
トレーニング終了時に環境をクリーンアップするには、以下の手順を実行します:
-
プロジェクトディレクトリに移動:
cd my-project確認 pwdでmy-projetctディレクトリ内にいるのか、ls -laで.gitディレクトリがあるかを確認
-
Gitリポジトリの情報を削除:
rm -rf .git -
親ディレクトリに移動:
cd .. -
プロジェクトディレクトリを削除:
注意:この操作は取り返しがつきません。重要なデータがある場合は、事前にバックアップを取ってくださいrm -rf my-projectメモ: GitHub上のレポジトリも、レポジトリ内の'Setting' > 'Denger Zone'> 'Delete this repository'で削除してください。
まとめ
このハンズオンを通じて、Gitの基本的な操作からGitHubを使用した協調作業の流れまでを学びました。実際のプロジェクトでこれらの知識を活用し、効率的なバージョン管理と協調作業を行いましょう。
継続的な学習と実践が、Git/GitHubのスキル向上につながります。わからないことがあれば、公式ドキュメントやコミュニティフォーラムを活用してください。
Happy coding!
Discussion