GitLabの登録

GitLabの登録を済ませておきます.また,プロジェクトを作成しておきます.中身は空で大丈夫です.このプロジェクトを後でWindowsにクローンします.

Git for Windowsのインストール

Git for Windowsをこちらのサイトからダウンロードし,インストールします.基本的にデフォルトのままでよいと思いますが,Adjusting your PATH environmentUse Git from Git Bash onlyを選んでおくとより安全です.

Gitの初期設定

Git Bashを立ち上げ,以下の初期設定を行います.ただし,エディタは秀丸を使用しています.user.nameおよびuser.emailにはGitLabに登録したものを入力します.ダブルクオーテーションマークも必要です.

git config --global core.editor "'/C/Program Files (x86)/Hidemaru/Hidemaru.exe' //fu8"
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git config --global core.quotepath false

SSHの設定と公開鍵のGitLABへの登録

Git BashのカレントディレクトリをGit for Windowsをインストールしたディレクトリ下のGit/usr/binに,以下のように移動します.

cd "/C/Program Files/Git/usr/bin"

先と同じメールアドレスを用い,SSHキーを生成します.Enter passphraseはパスワードの設定ですが,簡便性のため無しとしました.

ssh-keygen -t rsa -C 'your@email.com'

GitLabのツールバーの右端にある丸いマークをクリックし,settingsをクリックします.左端メニューのSSH Keysをクリックします.すると,Add an SSH keyが現れますので,Keyのフォームに公開鍵をコピーし,Titleに適当な名称を付け,Add keyをクリックします.なお,公開鍵は通常以下に作成されているはずです.これをエディタで開き,すべてコピーし(最後にメールアドレスが付きましたがこれもコピー),GitLabのKeyフォームに貼り付けます.

C:\Users\username\.ssh\id_rsa.pub

GitLabのプロジェクトのクローン

GitLabのプロジェクトをローカルにクローンする方法です.Git Bashでクローンするディレクトリに移動します.クローンするとこのディレクトリの中にプロジェクトの短縮名で新たなディレクトリが作成されます.
クローンするGitLabのプロジェクトのページを開き,上の真ん中にあるSSHの右にある,git@gitlab.comで始まる文字列を用い,以下のようにクローンします.上の右端のCloneメニューのClone with SSHにある,git@gitlab.comで始まる文字列を用い,Git Bashで以下のようにクローンします.

git clone git@gitlab:username/projectname.git

この例では新たにprojectnameディレクトリが作成されます.このディレクトリの中に,Gitで管理したいソースコード等をコピーまたは作成します.

GitLabにプッシュ

Gitのローカルリポジトリに作成したファイルを登録する方法はこちらを参照ください.以下の例では拡張子がFのファイルをインデックスに登録し,サブディレクトリsubに存在するmakefileをインデックスに登録し,インデックス登録状況を確認してから,ローカルリポジトリにコミットしています(エディタが立ち上がり,コメントを入力).最後にgit pushでGitLabプッシュします.

git add *.F
git add sub/makefile
# ファイルを管理から外す(ファイルは残す)
git rm --cached test.F
# バージョン管理されていて,変更のあったすべてのファイルがaddされる
git add -u
git status
git commit
git push

ローカルリポジトリをGitLabの新規プロジェクトとして登録する

先にローカルリポジトリを用意し,それをGitLabのプロジェクトとして新たに登録する方法です.オープンソースモデルのリポジトリをローカルにcloneしてローカルリポジトリとし,それをGitLabに登録する場合を想定します.ローカルへのクローンはtar.gz等のアーカイブファイルとしてローカルにダウンロードし,適当なフォルダで展開することで実現します.
最初にGitLabで,新規のプロジェクトを作成しておきます.中身は空です.
ローカルフォルダをgitに登録し,そのremoteレポジトリとして,GitLabのプロジェクトを登録します.以下の例で,[/]はグループを作成した場合で,グループを作成しない場合はこの部分を無視します.グループは複数のプロジェクトを含むことができるフォルダのようなものです.

git init
git add -A
git remote add origin https://gitlab.com/[<group_name>/]<project_name>.git
git commit
git push -u origin master

commitではコメントを入力し,pushではIDとPWの入力が必要になるようです.

Gitlabのリポジトリを削除

削除したいプロジェクトを選択し,左端メニューの下端のSettingsをクリックし,下端のAdvancedの右端にあるExpandをクリックし,下端のRemove projectをクリックし,指示に従います.

git pushの取り消し

誤ってgit pushしてしまい,元に戻したい場合の対処方です.まず,ローカルでの変更そのものを取り消します.

# 直前のコミットを取り消す
git reset --hard HEAD^

次にpushします.

# 強制的にpushする
git push -f origin master

しかし,これですと,以下のようなエラーとなるかもしれません.

$ git push -f origin master
Total 0 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To gitlab.com:username/project-name.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@gitlab.com:username/project-name.git'

これに対処するには,GitlabでProtectedの状態をUnprotectedにする必要があります.Gitlabの当該リポジトリ(プロジェクト)において,左端メニューの下端にある,SettingsRepositoryをクリックし,Protected BranchesExpandし,さらに,Protected BranchesExpandします.そして,オレンジ色のUnprotectedボタンをクリックします.その後,上記のgit push -f origin masterします.