Sourcetree x GitLabで
クローンがうまくいかない時、以下をチェック!
【チェックポイント①】クローンしようとしているリポジトリのURLは正しいですか?
初回のリポジトリは以下です。
Unityコース
https://gitlab.com/OSPadmin/techsta_unity_day01
UE4コース
https://gitlab.com/OSPadmin/techsta_ue4_day01.git
【チェックポイント②】小さなウィンドウが別で立ち上がっていませんか?
「クローンのボタンが押せない」場合、
小さなウィンドウが別で立ち上がっている可能性があります。
(添付画像のような、ログイン情報入力ウィンドウ)
【チェックポイント③】ソーシャルログインを使ってGitLabアカウントを作りませんでしたか?
GoogleやTwitterアカウントを用いたソーシャルログインでGitLabアカウントを作ると、
パスワードがうまく通らないことがあるようです。
Gitlabから直接メアドでアカウントを作成してください。
【チェックポイント④】SSH設定は不要です。
今回、
・GitLab-アクセストークンの作成/設定
・SSHKeyの作成/設定
はしなくてもクローンできるようにしてあります。
※よって、SourceTreeインストール時の
「SSHキーを読み込みますか?」→「いいえ」でOKです。
【チェックポイント⑤】2段階認証が有効化されてしまっていませんか?
【チェックポイント⑥】Gitが別の資格情報でGitLabにログインしようとしていませんか?
参考URL
https://qiita.com/yamazaki3104/items/abdaf8e4b6f598ca7cd8
https://qiita.com/ground0state/items/3f58fc450d781a861e6b
【チェックポイント⑦】セキュリティ設定が強すぎませんか?
個人固有の環境の問題もご確認ください(PCやネット環境)
セキュリティ設定が強すぎる
・セキュリティソフト
・会社のPC
・VPNを使っている
【チェックポイント⑧】SourceTree等を再インストールしてみる、PCも再起動してみる
アンインストール&ローカルのSourcetreeフォルダ削除→再インストール
をして再度試みたりしてみてください
クローンがうまくできない問題は、おそらく「ソースツリーが使えない」問題だと思いますので、
・ソースツリーもGitも、再度インストールからやってみる
・その際、二段階認証もSSHもいらない、最もシンプルな導入でよい。余計な設定はいらない。
・エラーが出たら、そのエラー文でググってみる
・それでもダメなら、お使いのPC固有の環境問題。(セキュリティ設定など)
→ソースツリーとは、Gitを使うためのGUIツールなので、ソースツリー以外にも、Gitを使う方法はいろいろあります。その一つであり最もシンプルなものが、Gitをインストールした際に付いてくるGitBash というソフト。これを使う。
→GitBashの使い方
https://osp.life/wiki/index.php?Git%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
【Mac PCにおける不具合対処事例①】
記事を参考に
1.gitとgit-secretsをHomebrewで導入する。
2.Sourcetreeの設定を変更する → 環境設定 > Git > 「システムの Git を使用する」
でコミットできるようになりました。
※参考記事
https://qiita.com/MIRAI1221/items/a6f6731e1bf558d9b428
https://y-u-y-a-blog.com/uncategorized/git-secrets-source-tree/
https://note.com/ryoppei/n/n6b4514308795
【Mac PCにおける不具合対処事例②】
「SourceTreeでコミットできないことについてのレポート」
■今回起きたこと
作成した「Roll-a-Ball」をSourceTreeでコミットできない。
(もちろん課題提出用リポジトリの自分で作成したブランチ上で行っている。)
エラー内容を見ると、
”git argument list too long” (git:引数リストが長すぎます)
となっており、コミットがエラーで終了してしまう。
■仮定
git-secrets が引っかかっている可能性があると判断した。
検索すると、「git-secretsが原因でコミットできない」という記事が複数ヒットしたので、git-secretsを削除してみることにした。
■検証
参考サイトを元に、git-secrets及び関連ファイルを削除した。
1、git-secretsをアンインストール。
% brew uninstall git-secrets
2、 .gitconfigからsecretsに関する記述を削除。
% vi ~/.gitconfig
~/.gitconfig
[secrets]
providers = git secrets --aws-provider # ...(略)
[init]
templatedir = ~/.git-templates/git-secrets
gitconfigの一覧から[secrets]、[init]の情報を削除。
3、対象リポジトリの.git/hooksの中にある以下ファイルを削除。
commit-msg
pre-commit
prepare-commit-msg
上記を行いgit-secretsを削除すると、
git: 'secrets' is not a git command. See 'git --help'. (git: 'secrets'はgitコマンドではありません。 'git--help'を参照してください。)
という別のエラーになってしまい、コミットできなかった。
再びgit-secretsをインストールすると正常にコミットすることができた。
% brew install git-secrets
■考察
・そもそものgit-secretsの役割
AWSのアクセスキーなどといったクラウドサービスなどを利用したりするための、大事なアクセスキーやクレデンシャル情報などをヒューマンエラーなどによってgitにcommitされないようにする。
git-secretsにはコミット時にhookする機能が追加されます。
% git secrets --install
✓ Installed commit-msg hook to .git/hooks/commit-msg
✓ Installed pre-commit hook to .git/hooks/pre-commit
✓ Installed prepare-commit-msg hook to .git/hooks/prepare-commit-msg
これがコミットの妨げとなっているようです。
なのでこれを解消するために、各リポジトリの「.git/hooks」にある「commit-msg, pre-commit, prepare-commit-msg」という実行ファイルを削除を行っています。
(ただ、hookの機能がなくなっているのでセキュリティ機能が無効になっていると考えられます。)
また、.gitconfigからgit-secretsに関する記述を削除したのは、
git-secretsを完全に削除した場合、
git-secretsに関する記述が.gitconfig上に残っていることで不具合が起きないようにするために行っています。
結果的にgit-secretsを再インストールしているので、これはよくなかったと思います。
■まとめ
自分のPCのSourceTreeにおいてgit-secretsを用いたGitを利用する設定になっているが、git-secretsのhook機能が原因で不具合が起きていた。
そのため「.git/hooks」内の関連ファイルを削除することでこれを解消した。
ただ、今のところセキュリティーに関するものをプッシュすることがないので問題ないが、フック機能が無効になっていると考えられる。
フック(Hook)は、プログラム中の特定の箇所に、利用者が独自の処理を追加できるようにする仕組みである。また、フックを利用して独自の処理を追加することを「フックする」という。
※参考サイト
・[備忘録]git-secretsが原因でコミットできなくなったときの解決手順
( https://qiita.com/nanakan715/items/7aa607ba4c6d35ce9401)
・git secretsを削除する時の注意
( https://piruty2.hatenablog.jp/entry/%3Fp%3D521)
・AWSアクセスキーをGitリポジトリに混入させないために git-secrets を導入した
( https://dev.classmethod.jp/articles/startup-git-secrets/)
・gitconfig の基本を理解する
( https://qiita.com/shionit/items/fb4a1a30538f8d335b35)
・git configの値を削除する
( https://mebee.info/2020/09/04/post-17179/)
■超まとめ
対象リポジトリの.git/hooksの中にある以下ファイルを削除。
-----
commit-msg
pre-commit
prepare-commit-msg
-----
すればOK。
※補足
Sourcetreeのネットワーク設定の「Git/Mercurialにプロキシサーバー設定を追加」にチェックが入っていたので外したらクローンできた、という事例もあります。
※補足
添付のようなダイアログが出た場合は、
とりあえず無難に「no helper」を選択。
(pushを実行するたびに認証情報を毎回入力するか、PCに保存しておくか、の設定)
他には、
・出てくるエラー文でググる
・いろいろいじってしまっている可能性があるので、全てインストールし直すとうまくいく例もある
・アカウントを作り直した場合、前の設定情報等が残ってしまっている可能性があるので、全てインストールし直すとうまくいく例もある
・【チェックポイント⑧】の直接DLする方法で、とりあえず先に進む(重要なのはGitではなくUnityの学習なので)
【Mac PCにおける不具合対処事例③】
Mac内のKeychainファイルを削除し、再度Gitlab.comアカウントでログインすることでクローンに成功したという事例もあります。
【Windows PCにおける不具合対処事例】
プッシュ時の403エラーに苦戦。
認証データ削除、Appdata削除の上、再インストールでなんとかプッシュできました。
二回ほどインストールしなおして、なぜか通りました…
前日にクローンはできていたので認証情報はおそらく合っていたと思います。
急にプッシュで権限エラーになった原因はわからずでした。
アンインストールの後、
C:\Users\%userprofile%\AppData\Roaming
と
C:\Users\%userprofile%\AppData\Local
のAtlassianのフォルダを削除しておかないと、以前保存したクローンや認証情報を引き継いでしまうようです。
クリーンにやり直したい場合は先に削除したほうが良いです。
この点は他のWindowsユーザーにも有用な知識かもしれません!
アクセストークンを設定する方式でPUSHできた、という事例もございます。
(通常は不要ですが)
・Soucetree立上げ後Bitbucketアカウントでログイン(プロトコルはHTTPS)
・URLからクローンを行う際、「SourceTree password required for User... git on host github. com」とパスワードを求められたため、GitLab側でアクセストークンを発行。
・上記で生成されたパスワードをSoucetreeにて使用。
→クローン成功。
※参考サイト
https://stackoverflow.com/questions/38489022/sourcetree-keeps-asking-for-github-password
SSH認証を設定する方式でPUSHできた、という事例もございます。
(通常は不要ですが)