Python学習【365日チャレンジ!】を達成したてのマスターU(@Udemy11)です。
一応Python学習が一区切りついたので、今日は何を書こうかなと思いつつ、昨日解決しなかったことが気になっていたので、さらにいろいろ調べてみると、なんとか解決の糸口が見えたので、その報告をしておきます。
ブランチの切り替え
GitHubにリポジトリを作成したときに表示されたコマンドに次のコマンドの記述が合ったので、ブランチを変更するコマンドに次のコマンドを使用していました。
git branch -M main
あらためて、ヘルプでオプションの-M
を確認してみると、【move/rename a branch, even if target exists】ということなので、ターゲットが存在していてもブランチを移動、名前を変更するということでした。
これまでの結果から考えると、main
ブランチが作成されただけで、作業するブランチがmain
はなっていないということのようです。
git clone
でGithub上のリモートリポジトリをローカルリポジトリに複製したあと、git branch
でブランチを表示したところ、main
と*master
2つのブランチがあることがわかります。
*
がついている方が作業ブランチだということがわかったので、checkout
コマンドでmain
に切り替えます。
git checkout main
このコマンドを実行することで次のように、*
がmain
に移動しているのがわかるかと思います。
複数人数で開発を行う本来の使い方なら、多分ブランチを別の名前にして、担当コードを編集して、最終的にmain
ブランチに統合するのだと思いますが、一人で使う場合はブランチがいくつもあるとわけがわからなくなるので、リモートリポジトリと同じmain
ブランチを使ったほうがわかりやすいのかなと思います。
まー使い慣れてくると、このあたりのこともよく分かると思いますが、なんと言っても視覚的に分かりづらいので、理解するまでにかなり時間がかかりました。
リポジトリの名前が違う原因
ついでに、なぜgit clone
で複製したリポジトリ名の最後の文字が消えるのか原因がわかったので、記録しておきます。
昨日の記事で書いていますが、gittest
というリモートリポジトリをGithub上に作成していて、git clone
を使って、ローカルリポジトリを作成すると、名前がgittes
になる問題です。
リモートリポジトリのURLが、https://github.com/udemymaster/gittest.git
なので、t.git
が削除されていると考えられます。
そこで、StaShのパッケージ内にあるgit.py
をチェックしてみると、499行目に原因と思われるコードがありました。
repo = Gittle.clone(args[0],args[1] if len(args) > 1 else os.path.split(args[0])[-1].rstrip('.git'), bare=False)
このコードの後ろの方にあるrstrip('.git')
が問題の関数です。
rstrip()
は、引数に含まれる文字を文字列の右から削除するので、.
、g
、i
、t
の4つの文字が左から削除されることになります。
gittest
は、最後にt
が含まれているので、.git
と一緒に削除されて、gittes
になったと考えられます。
git.pyを修正
元のコードを変更して、おかしなことになっても困りますが、このままの状態でも困ってしまうため、思い切って修正することに。
修正内容は、git.py
の499行目のrestrip('.git')
をreplace('.git', '')
にするだけなので超簡単。
念のため、git.py
のバックアップを取っておきましょう。
ちなみにsite-package
内のStaSh
をgitでバージョン管理していればバックアップは不要ですけどね。
git cloneで確認
これでgit clone
を実行してうまくリポジトリが作成できるかどうか試してみました。
ls
でフォルダ内を表示してみるときちんとgittest
が作成されているのがわかりますが、黒背景の青文字なので、cd
コマンドでフォルダに移動してみました。
StaShは、GitHubに公開されているため、とりあえずこのバグをissue
で報告しておいたので、そのうち誰かが修正してくれると思います。
まとめ
昨日説明したように、PythonistaにStaShを入れる方法は、ある程度の数の紹介記事がありますが、StaShでgitを使う具体的な方法を紹介している記事ってあんまりないんです。
基本的なgitの使い方もままならない状態で、通常のターミナルで使用するgitと基本的な使い方が同じとはいえ、使えないオプションがあったり、使い方がちょっと違ったりするStaSh上のgitを使うのは少し骨が折れます。
一つの問題を解決するにも時間がかかってしまうので、ほんと途中で挫折しそうになっちゃうんですよね。
こんなことを繰り返しながら、もう少し、gitとGitHubのことを学習していこうと思います。