GitHubで管理する予定なくプログラムを書いていたが、気が変わってGitHubにアップロードし、バージョン管理したいことがあると思います。
そんなときのために、ローカルに置いてあるプログラム(ネット上に保存していないプログラム)をGitHubで管理する方法を紹介します。
前提
-
ローカルにプログラム(ソースコード)があり、リモートにはリポジトリがない
-
PCにGitがインストール済み
-
GitHubのSSH接続設定済み(まだの人は下記参照)
Windows 11での説明ですが、Macでも似たような手順だと思います。
方法
作業フォルダに移動
エクスプローラーでプログラムが置いてあるフォルダまで移動しましょう。
必要であれば、GitHubアップロード用のフォルダを別で作り、用途ごとにフォルダを分けプログラムを置いておくと管理しやすいです。
今回はCドライブ直下にGitHubフォルダを作り、その中にtestフォルダを作って作業フォルダとします。
testフォルダ内にはソースコードのダミーとしてsample1.txt、sample2.txtを置いています。
C:/
├ GitHub/
├ test/
├ sample1.txt
└ sample2.txt
ローカルリポジトリの作成
ターミナルでtestフォルダに移動(例えばcd C:\GitHub\test
)し、
git init
を実行してください。testフォルダ内に.gitフォルダが作られます。
C:/
├ GitHub/
├ test/
├ sample1.txt
├ sample2.txt
└ .git
※ .gitフォルダは、隠しフォルダを表示する設定にしないと見えません。
リモートリポジトリの作成
次はGitHubのページで作業します。
新規リポジトリを作成します。
- リポジトリ名
- 説明
- 公開範囲(Public または Private)
などを入力して、 Create Repository をクリックします。
今回は Add a README file にチェックを入れて、README ファイルを作成しました。
リポジトリができたら、SSHのURLをコピーしておきます。(URL右の□マークを押すとコピーできます)
ローカルリポジトリとリモートリポジトリを紐づける
再びPCのターミナルにもどり、testフォルダに移動した状態で、
git remote add origin '<あなたのリモートリポジトリURL>'
を実行します。 '<あなたのリモートリポジトリURL>' を、先ほど取得したSSHのURLで置き換えてください。
実行しても特にメッセージは表示されません。
紐づけできたか確認
git remote -v
を実行して
origin git@github.com:(あなたのGitHubアカウント名)/test.git (fetch)
origin git@github.com:(あなたのGitHubアカウント名)/test.git (push)
のようなものが表示されていれば成功です。
リモートリポジトリにローカルファイルをアップロードする
リモートリポジトリ作成時に「README.md」や「.gitignore」を作成した方のみ
git pull origin main
でREADMEファイル等を一旦ローカルにコピーします。
最後に、ローカルのファイルをGitHubにアップロードするため、
git add -A
git commit -m "コメント"
git push origin main
を実行してください。
git add
の後ろには、アップロードするファイルを記載します。フォルダ内のすべてのファイルなら-A
とします。ワイルドカード(*.txt
など)も使えます。
add、commit、pushの詳細な意味は下記記事が参考になります。
以上を実行後、github.comにアクセスすれば、ローカルのファイルがアップロードできているのが確認できます。
こんなエラーが出たら
remote: Repository not found.
登録するリモートリポジトリのURLをsshのものにしてください。
登録済みのURLを消すためには
git remote rm origin
を実行します。
error: src refspec main does not match any
masterブランチとmainブランチが混在している可能性があります。
mainブランチをデフォルトに変更しましょう。
git branch
でブランチを確認します。main
だったらOK
もしmaster
と表示されたら
git config --global init.defaultBranch main
でデフォルトをmainに変更。また、すでにmasterになっているローカルブランチは
git branch -m master main
で変更できます。
error: failed to push some refs to …
リモートで.gitignore等を作ったのに、pullせずにローカルからpushしようとしたから。
git pull origin main
をしてリモートをローカルにまずpullします。このとき、mergeで
fatal: refusing to merge unrelated histories
が出たら、
git merge --allow-unrelated-histories origin/main
を実行して強制的にマージする。(pull = fetch + merge)
その後、pushを行う。
git push origin main