概要:
  • Gitでソースコードを管理するための環境構築
前提条件:
  • GitHubもしくはGitLabアカウント保有
検証環境:
  • Ubuntu20.04(WSL2)


毎回忘れて逐一調べることメモ

基本の流れは「add」→「commit」→「push」になります!以下でなにか上手くいかないと思ったら、この3ステップをちゃんとこなしているか確認してみてください。SVNを使い慣れてGitに移行してきた方は、pushを忘れがちになるので特に気を付けて!



ローカルディレクトリ ⇒ リモートアップロード


状況:
  • ローカルで作成したディレクトリをリモートのGitHubのリポジトリへアップロードしたい

作業手順


全体の流れ:
  1. GitHub側でリポジトリ作成
  2. ローカルディレクトリの初期化作業
  3. ローカルディレクトリのアップロード

GitHub側


1.GitHubアカウントにログイン


2.New Repositories作成

リポジトリの名前に関しては、リポジトリ名と作業ディレクトリ名を合わせたほうが作業をする方としては分かりやすい気がするが特に制約はなく、同じでなくても良い。


このあたりの設定はお好みで、READMEを最初に作らなければ以下のような手順が出てくるので、今回触れる箇所で少し躓くこともありますが、作業ディレクトリに移動してほぼこれに従うだけ

READMEなどを最初に作ると、これが出てこない(もしかしたら出せるかも)ので、改めて以下で躓き箇所も含めて手順を列挙



作業ディレクトリ側


3.作業ディレクトリに移動

「work_space/」をアップロードしたいときは、「work_space/」に入る。

4.ディレクトリの初期セットアップ

コマンド:
git init
結果:
Initialized empty Git repository in 作業ディレクトリ名

「.git」ファイルなどが作成される


5.「.gitignore」とかを作る(任意)

コマンド例:
touch .gitignore
必要であれば、「.gitignore」「README.md」などを作る。別に必要なければ、作らなくてかまわない

便利なサイト:



6.ステージエリアにファイルを追加

コマンド:
git add ディレクトのパス
例)「git add .」

7.追加・変更したファイルをGitに登録

コマンド:
git commit -m"first commit"

コミットがうまくいかない場合
Please tell me...

commitしたとき想定外のファイルまで登録したとき
補足:コミット取り消し

問題なくコミット
⇒ 手順8

Please tell me who you are
出力内容例:
*** Please tell me who you are.

Run

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

to set your account's default identity.
Omit --global to set the identity only in this repository.
以上のようなものが出力されたときは、上記に従ってメールアドレスとかユーザー名を入力する。

<現状確認>
ユーザー名:
git config user.name
Eメール:
git config user.email
上記でなにも登録されてないと思われる

<登録>
ユーザー名:
git config --global user.email "you@example.com"
Eメール:
git config --global user.name "Your Name"
「you@example.com」や「Your Name」はGitHubに登録しているもので問題なし。

これらが登録出来たら、もう一度commitする。






8.新しいリモートを追加

コマンド:
git remote add origin リポジトリのURL
「リポジトリへのURL」は手順1,2で作成したものへのURLに置き換え(例:https://github.com/ユーザー名/リポジトリ名.git)


9.現在のブランチの確認

コマンド:
git branch

GitHub/GitLabは新規に作成されるリポジトリのデフォルトブランチ名が「main」だが、ローカル環境では「master」になっていることが多い気がする

masterのままpushする場合
⇒手順10へ

元からmainだった場合
⇒手順11へ

mainにブランチ名を変える場合
⇒手順12へ


10.ブランチ名「master」でpush

コマンド:
git push -u origin master

エラー
エラー:rejected...


11.ブランチ名「main」でpush

コマンド:
git push -u origin main

エラー
エラー:rejected...


12.ブランチ名を「master→main」に変えてpush

ブランチ名を変更:
git branch -m master main
ブランチ名再度確認:
git branch
「main」になっていることを確認してプッシュ:
git push -u origin main

エラー
エラー:rejected...



エラー:! [rejected]

出力内容例:
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to "URL"
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
リポジトリを作成した時点でREADMEなどをリモートで作っていると、ローカルの履歴とリモートの履歴に齟齬があるという文句を言われ、pushを受け付けてもらえない。

解決法としては2つある。
  1. fetchしてmergeしてpush
  2. 強制的にpush
初期なら方法2でもいい気はするが、できればエラーの内容に従って方法1をしたほうがいい気がする。

以下では、ブランチを「main」としたときの例を示す。

方法1.fetchしてmergeしてpush

以下のコマンドでfetchすることで、リモートレポジトリのコミット履歴をすべて取得する。
ただし、まだマージ(統合)はしていない
git fetch
次にmargeすることで変更を統合
git merge
上記でリモートの内容とローカルの内容に齟齬がなくなったはずなので、プッシュできるはず
git push -u origin main


方法2.強制的にpush

最後に「-f」をつけることで強制的リモートの履歴を上書きしてプッシュする方法
git push -u origin main -f







リモートリポジトリ ⇒ ローカルクローン


状況:
  • ローカルに作業しているディレクトリが無く、これから作成するリポジトリを使用して作業環境を整えたい
  • すでに作成しているリポジトリをローカル環境に持ってきたい

作業手順


全体の流れ:
  1. リモートでリポジトリを作成または、クローンするリポジトリを決める
  2. ローカルにリポジトリをクローン
  3. ローカルからリモートへプッシュ(補足あり)

GitHub側


1.GitHubアカウントにログイン

2.New Repositories作成または、クローンするリポジトリ決定

リポジトリを作成する手順は「ローカルディレクトリ⇒リモートアップロード節」参照


作業ディレクトリ側


3.リポジトリのクローン/フォーク

<4パターン>
他者リポジトリclone→セルフリポジトリpush
補足

複数人で1つのリポジトリを共同作業
補足

他者リポジトリclone→他者リポジトリpush
補足

セルフリポジトリclone→セルフリポジトリpush
⇒ 以下続行

作業ディレクトリを作りたい場所まで移動して、以下コマンドを実行

コマンド:
git clone リポジトリのURL
リポジトリ名と同じ名前のディレクトリができるはず


4.なにか編集してみる

コマンド例:
touch .gitignore
「touch .gitignore」とかファイル編集とか


5.ステージエリアにファイルを追加

コマンド:
git add ディレクトリパス
例)「git add .」

6.追加・変更したファイルをGitに登録

コマンド:
git commit -m"コメント"

コミットがうまくいかない場合:
⇒ Please tell me...


7.ブランチ名確認

コマンド:
git branch
たいていの場合は「main」のはず


8.リモートに変更をpush

コマンド:
git push origin ブランチ名
ブランチ「main」にプッシュする場合は「git push origin main」






補足


作業中のちょっとしたミスへの対処および、疑問点についての補足

「git commit」の取り消し


pushする前のcommitとaddを1つ取り消し:
git reset --mixed HEAD^
「--mixed」またはオプションなし:
commitとaddの取り消し

「--soft」:
commitのみ取り消し

「--hard」:
作業ツリー上の変更もすべて取り消し

コミット履歴/IDの確認:
git log
上記の「HEAD^」をIDにすると、特定コミットの取り消しが可能

参考:

複数人でリポジトリを共有作業環境とする


共同編集者設定を行う:
  1. 対象リポジトリへ移動
  2. 上メニューバー「Setting」
  3. 左バーの「Collaborators」


GitHubのcollaboratorsはプッシュやマージの権限を持った人のこと。リポジトリのcollaboratorに人を追加することで共同編集者を追加可能で、プッシュなどの権限を与えることができる。

参考:
https://qiita.com/takeokunn/items/5bc499121a21f8c5b990
https://qiita.com/future_kame/items/9fa256aea09faa28b357
http://www.y2sunlight.com/ground/doku.php?id=github:collaborator


他人のリポジトリへのpush


いわゆるプルリクエストとかいうもの

全体の流れ:
  1. 他者リポジトリをフォーク
  2. フォークして自分管理のリモートにできたリポジトリをクローン
  3. 新しいブランチを作る(フォークした場合はいらないかも)
  4. 編集作業
  5. add、commit、push
  6. GitHub上でPullRequestを送る
collaborator以外の外部のcontributorは、collaboratorにプルリクエストを行うことで、リポジトリへ変更の反映をリクエストすることができる。

通常は他者のリポジトリにプッシュすることはできません。

詳しい内容については、以下の参考URLなどから識者の方がまとめてくださっているものをありがたく見たほうがいい。

参考:


他者リポジトリクローン⇒任意リポジトリへプッシュ


1.自分のリモートリポジトリを作成

リポジトリ名に関しては、何でもよい


2.他者リポジトリをローカルにクローン

コマンド:
git clone クローンするリポジトリURL
「クローンするリポジトリURL」を対象のリポジトリへのURL(例:https://github,com/...)などに置き換える


3.現在のリポジトリのURL確認

コマンド:
git remote -v


4.対象リモートリポジトリの変更

コマンド:
git remote set-url origin 変更したいリポジトリURL
「変更したいリポジトリURL」に任意のリポジトリへのURLを設定する。変更したら、上記手順3で変更できていることを確認


5.ソースコードを修正してadd、commit

コマンド:
git add ディレクトリパス
git commit -m"message"
例)「git add .」


6.変更をプッシュ

コマンド:
git push origin ブランチ名
ブランチ「main」にプッシュする場合は「git push origin main」


参考:


普段よく使うコマンドまとめ


コマンド:
git add ディレクトリパス
git commit -m"change"
git push origin ブランチ名
例)「git add .」
例)「git push origin main」
以上

このエントリーをはてなブックマークに追加
コメントを閉じる

コメント

コメントフォーム
記事の評価
  • リセット
  • リセット