LoginSignup
11
7

More than 3 years have passed since last update.

【GitHub】端末がクラッシュ→別PCから開発を再開しようとしたらgit push出来なかったので対処した

Last updated at Posted at 2019-11-19

はじめに

先日、メインのMacBookがクラッシュしたのでPCを変更するハメになりました:sob:

そこでGitHubのリモートリポジトリからデータを引っ張ってきて開発を再開するも、

git pushの段階でrejected

が出て詰まってしまったので解決まで対処した流れを共有します。

この記事が役に立つ方

  • メイン端末と別の端末から開発を進めようとしたらうまくgit push出来なくて詰まっている方

この記事のメリット

  • 急に端末がクラッシュしても(GitHubにデータがあれば)開発が再開出来る

環境

  • macOS Mojave バージョン10.14.6
  • シェル:zsh
  • Git:以下参照
❯ git --version
git version 2.21.0 (Apple Git-122.2)

対処した流れ 

1.リモートリポジトリのデータをダウンロード

まずはデータがないと始まりません。

自分のGitHubにあるデータを「Clone or Download」から「Download zip」でローカルにダウンロードし、所定のディレクトリに保存しました。

スクリーンショット 2019-11-20 1.24.49.png

スクリーンショット 2019-11-20 1.25.12.png

今思うとそもそもここは

git clone リモートリポジトリのURL

で引っ張っても良かったように思います。

2.git init

❯ git init
Initialized empty Git repository in /Users/作業ディレクトリ/.git/

3. ローカルで作業

いくつかファイルをいじり、キリがついたのでgit pushまでしようと考えました。

4.git add -A

❯ git add -A

addは完了。

5. git commit

❯ git commit -m "コミット名"

変更箇所が羅列される

commitも無事完了です。

6. 'git push'

❯ git push リモートリポジトリ名 master
fatal: 'リモートリポジトリ名' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ここで「そんなリモートリポジトリなんてないよ!」と怒られました。

そういえば端末が変わっていたのでgit remote addでリモートリポジトリを指定しないといけないことを思い出します。

7. git remote add

❯ git remote add リモートリポジトリ名 リモートリポジトリのURL

リモートリポジトリのURLはGitHubから確認可能です。
これで無事リモートリポジトリの指定は完了しました。

8.2度目のgit push

❯ git push リモートリポジトリ名 master
To リモートリポジトリのURL
 ! [rejected]        master -> master (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.

「リモートにローカルにはない変更が含まれているので、更新できません!」と怒られます。
あれ?でもリモートから引っ張ってきたのになんで?と疑問発生。

9.git push -f

❯ git push -f リモートリポジトリ名 master
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

最新はローカルで間違いはなかったので、-fオプションで強制的にpushしようとするも、次は「権限がありません!」と怒られました。

そういえば公開鍵の作成とデプロイがまだ済んでいないことに気付きます。

10.ssh-keygenで公開鍵を作成

❯ ssh-keygen -t rsa -C "メールアドレス"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/PCユーザー名/.ssh/id_rsa): /Users/PCユーザー名/.ssh/任意のファイル名
Enter passphrase (empty for no passphrase): ※パスフレーズを決めて入力(推奨。入力なしでEnterでも可。)
Enter same passphrase again: ※同じものを入力
Your identification has been saved in /Users/PCユーザー名/.ssh/任意のファイル名.
Your public key has been saved in /Users/PCユーザー名/.ssh/任意のファイル名.pub.
The key fingerprint is:
フィンガープリント
メールアドレス
The key's randomart image is:
+---[RSA 2048]----+
ランダムアートが表示される
+----[SHA256]-----+

11.pbcopy < ~/.ssh/任意のファイル名.pub

❯ pbcopy < ~/.ssh/任意のファイル名.pub

次のGitHubに公開鍵をデプロイする作業に向けて、さっき作成した公開鍵をpbcopyでクリップボードにコピーします。

12. GitHubに公開鍵をデプロイ

GitHub上での作業となります。
下記手順です。

スクリーンショット 2019-11-20 2.14.22.png

スクリーンショット 2019-11-20 2.14.31.png

スクリーンショット 2019-11-20 2.14.47.png

スクリーンショット 2019-11-20 2.14.53.png

スクリーンショット 2019-11-20 2.16.19.png

「Add key」を押して公開鍵のデプロイは完了です。

13.2度目のgit push -f

❯ git push -f リモートリポジトリ名 master
Enumerating objects: 166, done.
Counting objects: 100% (166/166), done.
Delta compression using up to 8 threads
Compressing objects: 100% (151/151), done.
Writing objects: 100% (166/166), 159.09 KiB | 1.05 MiB/s, done.
Total 166 (delta 15), reused 0 (delta 0)
remote: Resolving deltas: 100% (15/15), done.
To リモートリポジトリURL
 + XXXXXX...XXXXXX master -> master (forced update)

無事push完了!
これ以降、通常通りGit管理が出来る状態となりました:v:

おわりに

無事に復旧出来たので一安心!
ムダも多いかと思いますが、この手順を残したことがどなたかの参考になれば幸いです:relaxed:

今回、MacBookが急にシャットダウンを繰り返す現象が発生し、ハード面の問題のようでバックアップもとれず修理に出したのですが、ちゃんとGitHubに最新データを上げておいて良かった。
命拾いしました:sweat_smile:

参考にした記事

稚拙な記事ですが、自分の書いたものを見ながら解決しました。
【GitHub】15分調べても分からない人のためのSSH接続セットアップ方法 - Qiita

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7