Memo

メモ > 技術 > 開発: Git > トラブル

■トラブル
■トラブル時にとりあえず試すといいこと Sourcetreeを最新版にする、もしくは再インストールすると解消されることがある 「ツール → Git → Gitバージョン」部分から内蔵のGitをアップデートすると解消されることがある ターミナルから「git pull」などコマンドを直接実行すれば操作できることがある ■プッシュしようとしてもブランチが表示されない Git - Sourcetreeのプッシュ時にブランチが表示されない状態を解消したい|teratail https://teratail.com/questions/217580 Sourcetreeの不具合?3.3.9 でも発生した 「ツール → オプション → Git → Gitバージョン」で「Embedded」をクリックすると、下の「System」ボタンがアクティブになった この状態だとブランチが表示された ■他の人の変更内容を取り込むと、Sourcetreeで扱えないファイルがある SourcetreeでCloneしようとすると以下のエラーになった(Windowsの通常領域とWSL2領域で発生)
git -c filter.lfs.smudge= -c filter.lfs.required=false -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks clone --branch master https://refirio@bitbucket.org/refirio/example.git C:\Users\refirio\Vagrant\example Cloning into 'C:\Users\refirio\Vagrant\example'... error: invalid path 'docker/chrome/keys/keys_dir.' fatal: unable to checkout working tree warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry with 'git restore --source=HEAD :/' エラー終了しました。エラーの内容は上記をご覧ください。
一応、以下の操作をするとSourcetree上で作業履歴は表示されるようになった
git status git restore --source=HEAD :/
ただし「docker/chrome/keys/keys_dir.」を扱うことができないようで、 このファイルをステージに追加したり削除したりしようとすると、やはり以下のエラーになる
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks reset -q -- docker/chrome/keys/keys_dir. error: invalid path 'docker/chrome/keys/keys_dir.' fatal: make_cache_entry failed for path 'docker/chrome/keys/keys_dir.' エラー終了しました。エラーの内容は上記をご覧ください。
これは警告のとおり「keys_dir.」が原因 Windowsではピリオドで終わるファイルを扱うことができないため 該当するファイルを削除するか、ファイル名を変更することで扱えるようになる ■他の人の変更内容を取り込むと、手元で変更していないのにSourcetreeでは「ファイル内のすべての行を変更した」とみなされる Windowsでは改行コードが自動でCRLFに変換される 1環境だけSourcetreeではなくコマンドでのコミット…のような場合におかしくなることがあるみたい 以前問題が起きた際に開発者に確認すると、 「Sourcetreeはよく解らないので、普段からコマンドでコミットしている。 他の人が作成したファイルに手を加えて、初めてコミットした際に起きているかもしれない」 とのこと 差分の出る環境でそのまま差分ファイルをコミットして解決したが、以下のページなどを参考にして根本解決を試みたい (「コミットする改行コードを常にLFにする」のように、あらかじめ設定を統一しておくことが好ましいかも) gitで差分が出続ける現象の解決法 - Qiita https://qiita.com/katsukii/items/f046eb256111f6a4a804 SourceTreeの比較プレビューがおかしいのは、改行コードのせいだったりした件 - ゼロイチ http://0-1.life/771 Gitで変更していないはずのファイルが変更とみなされる - Qiita https://qiita.com/hishida/items/35d929845c0ac824b1c0 windows環境の git で改行コードの自動変換に注意 - Qiita https://qiita.com/yokoh9/items/1ec8099696ade0c1f36e Git - Source treeで改行コードが自動的にCRLFに変換されてしまう→設定法は?(37775)|teratail https://teratail.com/questions/37775 Windows の SourceTree で プル した際に改行コードを LF にする方法 - 約束の地 https://obel.hatenablog.jp/entry/20161124/1479955273 ■Sourcetreeで何度もGitHub、bitbucketのログインを求められる SourceTreeで何度もGitHub、bitbucketのログインを求められた時に解決した方法 - Qiita https://qiita.com/Raugh/items/e5e349edacf5b01b5e1e GitHubとbitbucketで同じユーザー名は使用できないらしい ターミナルからコマンドで「git pull」「git push」などを実行すれば、明示的に認証できるので試す 以下操作例 Sourcetreeでツールバーの「ターミナル」を選択する ターミナルで「git pull」を実行する 「GitHub Lgoin」ダイアログが表示されるが、こちらは認証できないのでキャンセルする ターミナルでユーザ名の入力待ちになっているので、ユーザ名を入力する 「OpenSSH」ダイアログが表示されるので、パスワードを入力すると認証できる 以降、ブランチの切り替えなどはSourcetree上で行えるが、「git pull」「git push」など通信が発生するものは上記手順で行う Sourcetreeと内蔵のGitを最新版にすれば解決することはある 内蔵のGitはメニューの「ツール → オプション → Git → Gitバージョン」部分からアップデートできる ■SourcetreeでGitHubからコードを取得できない PULLしようとすると「GitHub Lgoin」のダイアログが表示され、情報を入力しても認証できない GitHub - SurceTreeでGitHubと連携できず「ログインエラー」が発生してしまう問題(48719)|teratail https://teratail.com/questions/48719 Sourcetreeを最新版にすると、解決することがあるみたい SourceTreeで突然gitリモートリポジトリに繋がらなくなった時。 - ノウハウブログ - カンタローCGI https://kantaro-cgi.com/blog/git/bitbucket-permission-error.html リポジトリのパスをhttpsにすると、解決することがあるみたい SourceTree + Bitbucketで認証エラーが出る場合の対処方法 on Windows | TeraDas https://www.teradas.net/archives/29134/ Sourcetreeが使うGitを、EmbeddedではなくSystemにすると解決することがあった 上にあるように、GitHubとbitbucketで同じユーザー名は使用できないらしい 他の要因の可能性もあるが、ターミナルからコマンドで操作すると取得できることが多い ■「pathspec 'develop' did not match any file(s) known to git」と表示されてブランチを切り替えられない ブランチを切り替えようとすると以下のエラーになった
$ git checkout develop error: pathspec 'develop' did not match any file(s) known to git
リモートにブランチは存在している
$ git branch * main $ git branch -a * main remotes/origin/HEAD -> origin/main remotes/origin/develop remotes/origin/main
以下のコマンドでなら、ブランチを切り替えられた バージョン依存ではなく、指定した名前のブランチが複数のリモートに存在するとエラーになるらしい 詳細は要勉強
$ git checkout -b develop origin/develop
git - fetchしたremoteブランチのトラッキングブランチがcheckout時に自動で生成されない - スタック・オーバーフロー https://ja.stackoverflow.com/questions/18047/fetch%E3%81%97%E3%81%9Fremote%E3%83%96%E3%83%A9%E3%83%B... ■「Your local changes to the following files would be overwritten by merge」と表示されてPULLできない pullを行おうとすると以下のエラーになった
$ git pull Updating eb9423a..4e02523 error: Your local changes to the following files would be overwritten by merge: html/sitemap.xml Please commit your changes or stash them before you merge. Aborting
リモート側でファイルが編集された場合などに、競合が発生している
$ git checkout HEAD -- html/sitemap.xml
として、該当ファイルの編集をリセットしておくと大丈夫だった もしくは若干強引だが、
$ git reset --hard origin/develop
として、強制的にブランチの内容をリポジトリと一致させると大丈夫だった この場合は develop ブランチに強制一致させるので、他のブランチの場合は適宜コマンドを調整する ■「The following untracked working tree files would be overwritten by merge」と表示されてPULLできない pullを行おうとすると以下のエラーになった
$ git pull remote: Enumerating objects: 11, done. remote: Counting objects: 100% (11/11), done. remote: Compressing objects: 100% (4/4), done. remote: Total 11 (delta 7), reused 11 (delta 7), pack-reused 0 Unpacking objects: 100% (11/11), done. From github.com:refirio/levis ab88a21f..13fcaa56 develop -> origin/develop Updating ab88a21f..13fcaa56 error: The following untracked working tree files would be overwritten by merge: app/template/default/Help/about.twig app/template/default/Help/privacy.twig Please move or remove them before you merge. Aborting
リモート側でファイルが作成された場合などに、競合が発生している
$ rm app/template/default/Help/about.twig $ rm app/template/default/Help/privacy.twig
として、該当ファイルを削除しておくと大丈夫だった もしくは若干強引だが、
$ git reset --hard origin/develop
として、強制的にブランチの内容をリポジトリと一致させると大丈夫だった この場合は develop ブランチに強制一致させるので、他のブランチの場合は適宜コマンドを調整する ■「error: cannot lock ref」と表示されてPULLできない pullやfetchを行おうとすると以下のエラーになった
$ git pull remote: Counting objects: 12, done. remote: Compressing objects: 100% (5/5), done. remote: Total 12 (delta 6), reused 10 (delta 6) Unpacking objects: 100% (12/12), done. From bitbucket.org:xxx/yyy b60cc33..e036554 master -> origin/master 1d5cc1a..f2070a0 develop -> origin/develop error: cannot lock ref 'refs/remotes/origin/hotfix/sdk': 'refs/remotes/origin/hotfix' exists; cannot create 'refs/remotes/origin/hotfix/sdk' ! [new branch] hotfix/sdk -> origin/hotfix/sdk (unable to update local ref) $ git fetch origin error: cannot lock ref 'refs/remotes/origin/hotfix/sdk': 'refs/remotes/origin/hotfix' exists; cannot create 'refs/remotes/origin/hotfix/sdk' From bitbucket.org:xxx/yyy ! [new branch] hotfix/sdk -> origin/hotfix/sdk (unable to update local ref)
リモート側でブランチが削除された場合などに発生するみたい
$ git remote prune origin $ git fetch origin
としてから再度PULLすると大丈夫だった git fetchで、unable to update local refとエラーが出た場合の対処法 - tech::hexagram https://manji602.hatenablog.com/entry/2017/08/14/123137 ■「github.com:xxx/xxx.git did not send all necessary objects」と表示されてPULLできない rsyncで双方向同期を行っているECCube環境で発生 何度PULLしても
$ git pull 〜略〜 error: packfile .git/objects/pack/pack-2c4de2814e00bb352de0bb80a1a1f7e82da7990c.pack claims to have 3583 objects while index indicates 3710 objects error: packfile .git/objects/pack/pack-2c4de2814e00bb352de0bb80a1a1f7e82da7990c.pack claims to have 3583 objects while index indicates 3710 objects error: packfile .git/objects/pack/pack-2c4de2814e00bb352de0bb80a1a1f7e82da7990c.pack claims to have 3583 objects while index indicates 3710 objects error: packfile .git/objects/pack/pack-2c4de2814e00bb352de0bb80a1a1f7e82da7990c.pack claims to have 3583 objects while index indicates 3710 objects error: packfile .git/objects/pack/pack-2c4de2814e00bb352de0bb80a1a1f7e82da7990c.pack claims to have 3583 objects while index indicates 3710 objects error: packfile .git/objects/pack/pack-2c4de2814e00bb352de0bb80a1a1f7e82da7990c.pack claims to have 3583 objects while index indicates 3710 objects fatal: bad object 55584a0c340f1428bc54f0fdd61a9d6150bcd88e error: github.com:refirio/levis.git did not send all necessary objects
で止まってしまったが、しばらく時間を置いて「git pull」を実行すると、最後に「Already up-to-date.」が表示されるようになった 念のため再度
$ git pull $ git fetch origin $ git reset --hard origin/master
と実行することで、以降は正常にPULLできるようになったことはあった ただし「git reset」によって、サーバ上で直接変更したファイルがあれば、変更内容が消えてしまうので注意 最初にPULLを実行したときの内容が、時間をかけてrsync同期されて解決した…などはあるかもしれないが不明 もし次回発生したら、PULLのあとに時間を置いてみるのと、rsyncを停止してから実行するのは有効かもしれない 上記の手順で解決せず、別の方法で解決したときのメモを「2」として別途以下に記載する ■「github.com:xxx/xxx.git did not send all necessary objects」と表示されてPULLできない 2 検収環境と本番環境でほぼ同時期に発生し、本番環境では上にある手順でも解消できなかった .git の内容が一部壊れて修復できなくなっている可能性がありそうなので、 1. 別のフォルダにCloneする 2. 本番環境の .git を退避させる 3. 別のフォルダにCloneした .git を、本番環境の領域に移動させる とすることで復旧できた 具体的には
$ git clone git@bitbucket.org:refirio/test.git /var/www/html/temp $ git pull
として別のフォルダにCloneしたあと、問題が発生しているリポジトリの領域にて
$ mv .git /path/to/backup/git $ mv /var/www/html/temp/.git /path/to/project
のようにすることで解決できた 以下は、上記を行う前に色々と検証したときのメモ 検証のためにCloneする
$ sudo su -s /bin/bash - apache $ cd /var/www/html/temp $ git clone git@bitbucket.org:refirio/test.git /var/www/html/temp $ git pull $ ll .git/objects/pack/ 合計 28 -r--r--r-- 1 apache apache 3312 5月 28 13:43 pack-93f65e1e0459bd961922cd3029dc3996fd446911.idx -r--r--r-- 1 apache apache 21494 5月 28 13:43 pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack
リポジトリをバックアップしておく
$ cp -rp .git git_backup
ルート権限で以下のファイルを「test」に書き換えてみる(意図的にファイルを壊してみる)
/var/www/html/temp/.git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack
PULLしようとすると以下のとおりエラーになる
$ git pull error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: refs/heads/master does not point to a valid object! error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: refs/remotes/origin/HEAD does not point to a valid object! error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: refs/remotes/origin/develop does not point to a valid object! error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile 〜略〜 error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is far too short to be a packfile Already up-to-date.
もっと大量に(5000byteほど)書き込んでみる PULLしようとすると以下のとおりエラーになる
$ git pull error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile 〜略〜 error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile error: file .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack is not a GIT packfile Already up-to-date.
以下を実行しても結果は同じだった
$ git pull --prune
ファイルを直接編集して正しい内容に戻すと、エラーは表示されなくなる 以下でも戻すことができる
$ cp git_backup/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack .git/objects/pack/pack-93f65e1e0459bd961922cd3029dc3996fd446911.pack
以下でも戻すことができる
$ mv .git git $ mv git_backup .git
.git/objects 自体を削除するとどうか…と思ったが、削除後にPULLしようとすると 「fatal: Not a git repository (or any of the parent directories): .git」 のエラーになった 手順中に「git pull --prune」を試しているのは以下の記事があったためだが、 少なくとも今回は改善に繋がるものでは無かった git pullのとき常にpruneするための設定 - Qiita https://qiita.com/suin/items/27a559ab678bc054747e ■「Repository not found.」と表示されてPULLできない remote: Repository not found.となった時の対応方法 - Qiita https://qiita.com/ponsuke0531/items/4fe191b7bed03342cff2 最後にある「対応 : configファイルのurlに認証情報を追記する」で解決できたことがあった ■「Please enter a commit message to explain why this merge is necessary,」と表示されてPULLできない サーバ内でpullを行おうとすると、以下のメッセージが表示になった
Merge branch 'main' of github.com:uqo/unicolle into main # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
git merge実行時に「Please enter a commit message to explain why this merge is necessary」が表示される | mebee https://mebee.info/2021/03/02/post-30147/ 「コミットメッセージを入力して」という内容のようなので、「:q!」として終了するとPULLは完了している ■「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」と表示されてGitHubからPULLできない We updated our RSA SSH host key | The GitHub Blog https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/ `git push`しようとしたら`WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!`が出た時の対処ログ https://zenn.dev/fujishiro/scraps/9dcbd03aa608ae 突然以下のようなエラーが表示されるようになった
$ git pull @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s. Please contact your system administrator. Add correct host key in /usr/share/httpd/.ssh/known_hosts to get rid of this message. Offending RSA key in /usr/share/httpd/.ssh/known_hosts:1 RSA host key for github.com has changed and you have requested strict checking. Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
GitHubが秘密鍵を不用意に公開してしまったらしい 対策として鍵を交換したので、PULLするサーバ側でも鍵の変更が必要らしい 解説を元に対応したが、known_hosts にはドメインに加えてIPアドレスも追加する必要があった
$ ssh-keygen -R github.com … 古いキーを削除 $ vi ~/.ssh/known_hosts … ファイルの最後に追記
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQ〜中略〜Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
$ git pull … PULLできるようになったが、IPアドレスのキーとは異なると言われる(毎回警告が表示される) Warning: the RSA host key for 'github.com' differs from the key for the IP address '20.27.177.113' Offending key for IP in /usr/share/httpd/.ssh/known_hosts:3 Matching host key in /usr/share/httpd/.ssh/known_hosts:4 Are you sure you want to continue connecting (yes/no)? yes Already up-to-date. $ vi ~/.ssh/known_hosts … GitHubのドメインに続いて、上に表示されたIPアドレスを指定
github.com,20.27.177.113 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQ〜中略〜Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
$ git pull … 警告なくPULLできるようになった Already up-to-date.
■「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」と表示されてBitbucketからPULLできない 基本的にはGitHubと同じ現象で、同じ対応が必要 ACTION REQUIRED: Update your Bitbucket Cloud SSH Host Keys - Bitbucket https://bitbucket.org/blog/ssh-host-key-changes 公式の解説ページのうち、主に「WHAT YOU NEED TO DO」部分を参考に作業する
$ ssh-keygen -R bitbucket.org && curl https://bitbucket.org/site/ssh >> ~/.ssh/known_hosts
ただしこれだけだと、PULLのたびに毎回確認が表示される known_hostsでBitbucketのドメインに続いて、上に表示されたIPアドレスを指定する。(3行ある。)
$ vi ~/.ssh/known_hosts
bitbucket.org,104.192.141.1 ssh-rsa AAAAB3NzaC1yc2EA以下略 bitbucket.org,104.192.141.1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo以下略 bitbucket.org,104.192.141.1 ssh-ed25519 AAAAC3NzaC1lZDI1以下略
これで対応は完了 サーバは上記で対応できたが、SourcetreeでPULLやPUSHが実行できないようになった
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch --no-tags origin fatal: TaskCanceledException encountered. remote: Invalid credentials fatal: Authentication failed for 'https://bitbucket.org/refirio/example.git/' Logon failed, use ctrl+c to cancel basic credential prompt. エラー終了しました。エラーの内容は上記をご覧ください。
Sourcetreeで「ツール → オプション → 認証」を選択 Bitbucketのアカウントを選択 しばらく待つと「ログイン失敗」と表示される 「パスワードを再読み込み」ボタンをクリックしてみる 「認証に成功」と表示された 「OK」ボタンでダイアログを閉じる 再度PULLしてみる…が、状況は変わらず Sourcetreeを再起動しても変わらず 以下からアプリパスワードを再発行してみるが、状況は変わらず https://bitbucket.org/account/settings/app-passwords/ ターミナルからgit pullを実行。パスワードは、再発行したアプリパスワードを入力 とても重いが、PULLできることがある
$ git pull hint: Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch this message by running one of the following hint: commands sometime before your next pull: hint: hint: git config pull.rebase false # merge (the default strategy) hint: git config pull.rebase true # rebase hint: git config pull.ff only # fast-forward only hint: hint: You can replace "git config" with "git config --global" to set a default hint: preference for all repositories. You can also pass --rebase, --no-rebase, hint: or --ff-only on the command line to override the configured default per hint: invocation. fatal: TaskCanceledException encountered. タスクが取り消されました。 remote: Invalid credentials fatal: Authentication failed for 'https://bitbucket.org/refirio/example.git/'
ob-websys.さんはTwitterを使っています: 「朝からbitbucketから「認証キー変えといたのねん」と届いて確認…やっぱり接続できん 検索してレジストリ消してコマンド打ってキャッシュ作って接続確認できた」 / Twitter https://twitter.com/tobtks/status/1671307211136720897 上記を参考に、コマンドプロンプトから以下を実行しても変わらず
>%LOCALAPPDATA%\SourceTree\app-3.4.13\tools\putty\plink.exe bitbucket.org The host key is not cached for this server: bitbucket.org (port 22) You have no guarantee that the server is the computer you think it is. The server's ssh-ed25519 key fingerprint is: ssh-ed25519 255 SHA256:ybgmFkzwOSotHTHLJgHO0QN8L0xErw6vd0VhFA9m3SM If you trust this host, enter "y" to add the key to PuTTY's cache and carry on connecting. If you want to carry on connecting just once, without adding the key to the cache, enter "n". If you do not trust this host, press Return to abandon the connection. Store key in cache? (y/n, Return cancels connection, i for more info) y login as: refirio FATAL ERROR: Remote side unexpectedly closed network connection >%LOCALAPPDATA%\SourceTree\app-3.4.13\tools\putty\plink.exe bitbucket.org login as: refirio@example.com FATAL ERROR: No supported authentication methods available (server sent: publickey)
Sourcetreeで「設定 → origin → 編集 → URL/パス」を以下のように変更すると問題が解消した https://refirio@bitbucket.org/refirio/example.githttps://bitbucket.org/refirio/example.git PULLしようとすると、ユーザ名とパスワードを聞いてくる 何度か認証を試みると、成功することがあった URLを元に戻しても、PULLできるようになっていた 他のリポジトリもPULLできるようになっていた 認証情報を変更したことにより、古い情報のキャッシュが削除されたのか ただしGibHubのリポジトリに比べると、通信時間が結構長い
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch --no-tags origin fatal: TaskCanceledException encountered. git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks pull origin master hint: Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch this message by running one of the following hint: commands sometime before your next pull: hint: hint: git config pull.rebase false # merge (the default strategy) hint: git config pull.rebase true # rebase hint: git config pull.ff only # fast-forward only hint: hint: You can replace "git config" with "git config --global" to set a default hint: preference for all repositories. You can also pass --rebase, --no-rebase, hint: or --ff-only on the command line to override the configured default per hint: invocation. fatal: TaskCanceledException encountered. From https://bitbucket.org/refirio/example * branch master -> FETCH_HEAD Already up to date. 完了しました。
なお、ECSからBitbucketのソースコード参照は問題無かった ■「You have divergent branches and need to specify how to reconcile them.」と表示されてBitbucketからPULLできない サーバ内でPULLを実行してエラー内容を確認
$ git pull hint: You have divergent branches and need to specify how to reconcile them. hint: You can do so by running one of the following commands sometime before hint: your next pull: hint: hint: git config pull.rebase false # merge hint: git config pull.rebase true # rebase hint: git config pull.ff only # fast-forward only hint: hint: You can replace "git config" with "git config --global" to set a default hint: preference for all repositories. You can also pass --rebase, --no-rebase, hint: or --ff-only on the command line to override the configured default per hint: invocation. fatal: Need to specify how to reconcile divergent branches.
Gitの警告"You have divergent branches and need to specify how to reconcile them."は、pull時分岐したブランチに対する設定を明確にすることで解決する。 - appbirdNotebook https://scrapbox.io/appbirdNotebook-public/Git%E3%81%AE%E8%AD%A6%E5%91%8A%22You_have_divergent_branc... サーバにインストールされているGitのバージョンは以下のとおり
$ git -v git version 2.38.4
Git ver 2.27.0 から、 「分岐しっ放しの複数の[ブランチ]があるため、それらに対してどう操作(調節)を行うか、挙動を明確にしなければなりません。」 となったらしい 以下の対応を行った。以降は問題なくPULLできるはず。
$ git config pull.rebase false $ git pull
■GitHubやBitbucketに接続できない GitHubの障害情報が以下にある GitHub Status https://www.githubstatus.com/ Bitbucketの障害情報が以下にある Atlassian Bitbucket Status https://bitbucket.status.atlassian.com/ ■GitHubで認証できない GitHubがパスワード認証を廃止するらしいので - Qiita https://qiita.com/shiro01/items/e886aa1e4beb404f9038 突然GitHubにpushできなくなった解決方法 - Qiita https://qiita.com/anaqe3/items/018c6fc24c9658ea2250 個人アクセストークンを使用する - GitHub Docs https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/crea... Githubから届いたDeprecation Noticeメールに対応する - Qiita https://qiita.com/hiro5963/items/da0b9bcfa512bf0cb833 Homebrew使用後、GitHubから「Deprecation Notice」メールが来た話 - Qiita https://qiita.com/nafuka/items/cfcf9b35163e3146dc84 GitHubでhttpsのパスワード認証が廃止された。Please use a personal access token instead. - Qiita https://qiita.com/shunsa10/items/e43564cf48f84b95455b GitHubは2021年8月13日以降はパスワードではなくアクセストークンでの認証が必要になる 具体的には、以下のようにPULLはできるがPUSHができなくなる(対象が非公開リポジトリの場合、PULLもできなくなる)
$ git pull Already up to date. $ git push Logon failed, use ctrl+c to cancel basic credential prompt. Username for 'https://github.com': refirio remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: unable to access 'https://github.com/refirio/levis.git/': The requested URL returned error: 403
この場合、GitHubにログインしてトークンを発行する必要がある Setting → Developer settings → Personal access tokens → Generate new token 一例だが以下のように入力 Note: Sourcetree for Personal Expiration: No expiration Select scopes: repo (Full control of private repositories) 「Generate token」ボタンをクリック 以下のようにトークンが表示されるので、これをSourcetreeなどでパスワードの代わりに使用する トークンは作成直後しか確認できないので注意
Make sure to copy your personal access token now. You won’t be able to see it again! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
上記で対応できたが、環境によっては ・Sourcetreeからは相変わらず「Support for password authentication was removed on August 13, 2021.」のエラーになる ・ターミナルからならPULLなどを実行できる。ただし毎回ユーザ名とパスワードを求められる という状態になることがあった この場合、以下の記事を参考にして GitHubのパスワード認証廃止でSourcetreeで403エラーが発生して解決策がわからなかったのでまとめておく - Qiita https://qiita.com/mamoru6344/items/ea4a34c8eec26bb60e69 Sourcetreeで「設定 → origin → 編集 → URL/パス」を以下のように変更すると問題が解消した https://github.com/[ユーザ名]/[リポジトリ名].git ↓ https://[アクセストークン]@github.com/[ユーザ名]/[リポジトリ名].git 具体的には以下のように変更した 恐らく、新規にPULLするときは同じ対応が必要になると思われる (ただし逆に、アクセストークンなしのURLにしないと繋がらないこともあった。よく解らず) https://github.com/refirio/levis.githttps://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@github.com/refirio/levis.git なお作業環境によっては以下のエラーが表示されたこともあったが、 鍵を切り替えるのではなくアクセストークンに切り替えることで対応できた
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch --no-tags origin ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type. Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
【解決方法(画像付き)】急に。git pushしたら「Please make sure you have the correct access rights and the repository exists.」 | 武骨日記 https://kenjimorita.jp/please-make-sure-you-have-the-correct-access-rights-and-the-repository-exists... Macで発生した SSHキーを発行して登録し直すことで解消できた ■Bitbucketで認証できない SourcetreeからBitbucketへアクセスする際、通常のパスワードではなくアプリパスワードを求められることがある この場合、Bitbucketでアプリパスワードを作成し、SourcetreeではBitbucketのパスワードではなくアプリパスワードで認証するといい 二段階認証設定したBitbucketをSourceTreeで使う | 電脳ノート https://dennou-note.blogspot.com/2019/11/bitbucketsourcetree.html GitHub - sourcetreeを導入後、プッシュしようとしたらcredentialHelperSelectorと出たんですがこれはなんですか?|teratail https://teratail.com/questions/253792 基本的には「manager」を選択すれば良さそう ■Bitbucketで認証できない2 2022/03/10にBitbucketからPULLしようとしたら、以下のエラーが表示された アカウントパスワードでの認証は廃止され、アプリパスワードで認証するように変更されたらしい
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch --no-tags origin remote: Bitbucket Cloud recently stopped supporting account passwords for Git authentication. remote: See our community post for more details: https://atlassian.community/t5/x/x/ba-p/1948231 remote: App passwords are recommended for most use cases and can be created in your Personal settings: remote: https://bitbucket.org/account/settings/app-passwords/ fatal: Authentication failed for 'https://bitbucket.org/refirio/test.git/'
以下で解説されている App passwords | Bitbucket Cloud | Atlassian Documentation https://ja.confluence.atlassian.com/bitbucket/app-passwords-828781300.html 二段階認証設定したBitbucketをSourceTreeで使う | 電脳ノート https://dennou-note.blogspot.com/2019/11/bitbucketsourcetree.html 以下は実際に作業した時のメモ まずは、Bitbucketでアプリパスワードを作成する 設定の「アプリ パスワード」ページを開く https://bitbucket.org/account/settings/app-passwords/ 「アプリパスワードの作成」ボタンをクリック 「詳細」Labelに「Sourcetree」と入力 「権限」はすべての項目にチェックを入れておけばいい(もしくは必要に応じて取捨選択する) 「作成」ボタンをクリック 「新しいアプリパスワード」が表示されるので控えておく (このパスワードは再表示できないので注意) 次に、Sourcetreeにアプリパスワードを設定する メニューから「ツール → オプション」を選択 「認証」タブ内に表示されるアカウントを選択し、Bitbucketのアカウントの「編集」をクリック Credentialの「認証」を「Basic」にし、「パスワードを再読み込み」をクリック 先の手順で控えていたパスワードを入力する 解説によるとこれで完了のようだが、相変わらず同じエラーが表示された 以下は引き続き作業した内容 SourceTree + Bitbucketで認証エラーが出る場合の対処方法 on Windows | TeraDas https://www.teradas.net/archives/29134/ 上記ページにある「GCMW導入と認証情報のリフレッシュ」を試すとパスワードを聞いてきた (この作業により、「Gitバージョン」が「Embeded」から「System」に変更されることになる) プルはできるようになったが、プッシュの際にブランチが表示されなくなった Sourcetreeのプッシュ時にブランチが表示されない状態を解消したい https://teratail.com/questions/217580 Sourcetreeをバージョンアップして再起動しても変化なし メニューから「ツール → オプション → Git」を選択 先の手順で「Gitバージョン」を「System」にしていたが、再度「Embeded」に変更してみた これでPULLすると「credentialHelperSelector」のウインドウが表示されたが、「manager」を選択して進めた sourcetreeを導入後、プッシュしようとしたらcredentialHelperSelectorと出たんですがこれはなんですか? https://teratail.com/questions/253792 これで、再度プルとプッシュができるようになった ■Bitbucketで認証できない3 上にある「「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」と表示されてBitbucketからPULLできない」の 「サーバは上記で対応できたが、SourcetreeでPULLやPUSHが実行できないようになった」以降も参照 ■Bitbucketで認証できない4 Mac+Sourcetreeで発生 一度CloneやPullに成功したが、数日後に試すと「Permission denied (publickey)」というエラーが表示された macOS で再起動しても ssh agent に秘密鍵を保持させ続ける二つの方法 - Qiita https://qiita.com/sonots/items/a6dec06f95fca4757d4a Macでは鍵を作成しても、再起動すると消えてしまうらしい .ssh/config に特別な記述(後述)を行うことで、内容を保持できるようになるらしい また、作成した鍵はBitbucketに登録しておく Mac版のSourceTreeでプル/プッシュするときに「Permission denied」と言われる場合の対処方法 / icoro https://www.icoro.com/2019060710275 上記を参考にターミナルで作業 .ssh/config に以下を記述した
Host * UseKeychain yes AddKeysToAgent yes
続いてSourcetreeのアカウント設定画面で「SSHキー」欄からキーを作成 以下のように作成されたことを確認できた
% ls -l total 32 -rw-r--r--@ 1 refirio staff 322 7 31 18:24 config -rw-r--r--@ 1 refirio staff 95 7 27 19:22 known_hosts -rw-------@ 1 refirio staff 3478 7 31 18:24 refirio-Bitbucket -rw-r--r--@ 1 refirio staff 813 7 31 18:24 refirio-Bitbucket.pub 18:39
Personal settingsにアクセス https://bitbucket.org/account/settings/ 「SSH鍵」にアクセスし、公開鍵「refirio-Bitbucket.pub」の内容を登録した これでPULLできるようになった …が、再起動するとまたエラーが表示されるようになった Cloneの際に「SSH」のURLを使用していたが、「HTTPS」のURLを使用するように変更した (アカウント設定の「プロトコル」も「HTTPS」に変更し、すでにClone済みのプロジェクトもURLを変更した) アプリパスワードなどを求められるかと思ったが、これでCloneできるようになった (キーチェーンのパスワードを求められたが、Macのログインパスワードを入力すると完了した) Macを再起動しても問題は無かった ■ときどき「Askpass.exe - アプリケーション エラー」と表示される ※未解決 SourcetreeやGitを操作中か否かに関わらず、ときどき以下のエラーが表示されるので調べたメモ - - - - - - - - - - Askpass.exe - アプリケーション エラー アプリケーションを正しく起動できませんでした (0xc0000142)。[OK] をクリックしてアプリケーションを閉じてください。 [ OK ] - - - - - - - - - - Askpass.exe の「アプリケーションを正しく起動できませんでした」というエラーへの対処 (仮) - Ewig Leere(Lab2) https://labor.ewigleere.net/2021/03/05/askpass_error_from_sourcetree_1/ Askpass.exe の「アプリケーションを正しく起動できませんでした」というエラーへの対処 (アカウント追加編) - Ewig Leere(Lab2) https://labor.ewigleere.net/2021/03/06/askpass_error_from_sourcetree_2/ askpassのことを書いておく - なんかかきたい https://t-cyrill.hatenablog.jp/entry/2018/02/09/205930

Advertisement