トラブル
■トラブル時にとりあえず試すといいこと
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 … ファイルの最後に追記。
■「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」部分を参考に作業する。
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.
$ ssh-keygen -R bitbucket.org && curl https://bitbucket.org/site/ssh >> ~/.ssh/known_hosts
ただしこれだけだと、PULLのたびに毎回確認が表示される。
known_hostsでBitbucketのドメインに続いて、上に表示されたIPアドレスを指定する。(3行ある。)
$ vi ~/.ssh/known_hosts
これで対応は完了。
サーバは上記で対応できたが、SourcetreeでPULLやPUSHが実行できないようになった。
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以下略
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.git
↓
https://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
■「cannot lock ref 'xxx': 'yyy' exists; cannot create 'xxx'」と表示されてBitbucketからPULLできない
ローカルで hotfix/2024 を作成してプッシュ。
サーバ上で以下のとおり取得。
$ git pull
$ git checkout hotfix/2024
$ git pull
ブランチ名を間違えたので ローカルで hotfix/2024 を削除し、代わりに hotfix/2024/ABC-12345 を作成してプッシュ。
サーバ上で以下のとおり取得…としようとしたときにエラーになった。
$ git pull
error: cannot lock ref 'refs/remotes/origin/hotfix/2024/ABC-12345': 'refs/remotes/origin/hotfix/2024' exists; cannot create 'refs/remotes/origin/hotfix/2024/ABC-12345'
From bitbucket.org:refirio/test
! [new branch] hotfix/2024/ABC-12345 -> origin/hotfix/2024/ABC-12345 (unable to update local ref)
error: some local refs could not be updated; try running
'git remote prune origin' to remove any old, conflicting branches
Gitが hotfix/2024 ブランチの参照をロックできず、新しいブランチ hotfix/2024/ABC-12345 を作成できないとのこと。
これは、既存のブランチが階層的に新しいブランチの親のような構造を持っていることが原因だと思われる。
以下を実行し、古い参照を削除する。
$ git remote prune origin
改めて以下を実行し、サーバ上で以下のとおり取得しなおす。
これなら成功した。
$ git pull
$ git checkout hotfix/2024/ABC-12345
$ 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.git
↓
https://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