バージョン管理 =================== | ソースコードの変更履歴を保存することで | 変更差分を確認したり、過去のある時点に復元することができます。 GitHub ^^^^^^^^^^^^^^^^^^ | Githubではバージョン管理システムであるGitのリポジトリを作成することができます。 | ソースコードを公開したり、共有したりすることができます。 Githubの使い方 ^^^^^^^^^^^^^^^^^^^^^^^^^ 1. Create a repository ----------------------------------------- | Githubのアカウントを作成して、GUIでGithub上にリポジトリを作成します。 | 非公開にすることもできます。 2. Create a branch ----------------------------------------- | スパコン上にローカルリポジトリを作成します。(git init) | README.mdを作成したことをインデックスに記録します。(git add) | インデックスの状態をローカルリポジトリに記録します。(git commit) | ブランチを作成して、作成したブランチ名に切り替えます。(git branch) | Github上のリポジトリにローカルリポジトリを反映させます。(git push) | .. note:: **SSH** | 公開鍵をGithubに登録するとSSHでGithubと通信できます。 .. code-block:: bash [username@gc016 ~]$mkdir work [username@gc016 ~]$cd work [username@gc016 work]$git init [username@gc016 work]$echo -n > README.md [username@gc016 work]$git add README.md [username@gc016 work]$git commit -m "first commit" [username@gc016 work]$git branch -M main [username@gc016 work]$git remote add origin git@github.com:{アカウント名}/{レポジトリ名}.git [username@gc016 work]$git push -u origin main 3. Clone a repository ----------------------------------------- | Github上のリポジトリをスパコン上にコピーします。 | コピーしたレポジトリに移動します。 .. code-block:: bash [username@gc016 ~]$mkdir work2 [username@gc016 ~]$cd work2 [username@gc016 work2]$git clone git@github.com:{アカウント名}/{レポジトリ名}.git [username@gc016 work2]$cd {レポジトリ名} 4. Pull Request & Merge ----------------------------------------- | コピーしたリポジトリ上でファイルを更新して | devブランチとしてGithubにpushします。 | | Github上でGUIでCompare & pull requestをクリックすることでpull requestを作成します。 | 問題なければMerge pull requestをクリックしてdevブランチの変更をmainブランチに統合します。 .. note:: **アクセス権限** | 開発者に与えるpushやmergeの権限を管理することで | 開発体制を整えることができます。 .. code-block:: bash [username@gc016 {レポジトリ名}]$echo TEST > README.md [username@gc016 {レポジトリ名}]$git add README.md [username@gc016 {レポジトリ名}]$git commit -m "second commit" [username@gc016 {レポジトリ名}]$git branch dev [username@gc016 {レポジトリ名}]$git checkout dev [username@gc016 {レポジトリ名}]$git push -u origin dev 4. Create a tag ------------------------------ | Github上でGUIでReleases -> Choose a tagの順でクリックして新しいタグ名を入力します。 | Create new tag: {タグ名} on publish -> Publish releaseの順にクリックしてreleaseを作成します。 Gitの使い方 ^^^^^^^^^^^^^^^^^^^^^^^^^ 1. Delete a commit ------------------------------ | ローカルでgitで開発しているとき | コミットのみを削除したい場合の例です。 | | まずgit log コマンドでコミット状況を見ます。 .. code-block:: bash commit e2cd2037d0803d3dce6ad67dfb542253c040feb1 (HEAD -> master) Author: author Date: Wed Jun 21 11:30:07 2023 +0900 second commit 75880fdda6dd61555f1c0951885eac8cd87ed7a1 Author: author Date: Wed Jun 21 11:21:54 2023 +0900 first | firstに戻りたい場合は以下のコマンドを実行します。(firstのcommit idを使います。) .. code-block:: bash git reset --soft 75880fdda6dd61555f1c0951885eac8cd87ed7a1 | git logで再度確認します。 .. code-block:: bash commit 75880fdda6dd61555f1c0951885eac8cd87ed7a1 (HEAD -> master) Author: author Date: Wed Jun 21 11:21:54 2023 +0900 first 2. Merge branches and Create a tag --------------------------------------- | リモートレポジトリに移動してmasterブランチにdevブランチをマージした後 | バージョン名を最新のコミットにタグつけします。 .. code-block:: bash cd {リモートレポジトリ} git checkout master git merge dev git tag {バージョン名} {commit id} 3. Copy a remote repository --------------------------------------- | ベアクローンしたレポジトリを複製先にミラープッシュします。 | configを元に戻してworking treeを作成します。 .. code-block:: bash mkdir -p {複製先のリモートレポジトリ}/.git cd {複製先のリモートレポジトリ}/.git git init --bare mkdir {一時ディレクトリ} cd {一時ディレクトリ} git clone --bare {複製元のリモートレポジトリ} cd * git push --mirror {複製先のリモートレポジトリ}/.git cd {複製先のリモートレポジトリ}/.git git config --bool core.bare false git config --bool core.filemode true git config --bool core.logallrefupdates true git checkout dev git checkout master 4. Update a local branch --------------------------------------- | リモートレポジトリの変更をローカルレポジトリに反映させます。 .. code-block:: bash cd {ローカルレポジトリ} git pull {リモートレポジトリ} master | リモートレポジトリ上でコミットを取り消した場合は | git pullできないかもしれません。 | その場合はローカルレポジトリを削除して | 再度git cloneします。