yuusuke-roughの日記

Java,SpringBoot,趣味等

Gitに触れてみた日記

はじめに

就職活動を始めた。

その中で頂いたアドバイスとして、私に必要な点は3点

①チーム開発を想定したツール等の知識(Git等のバージョン管理)

②他フレームワークの知識(JavaScriptフレームワーク等)

③チーム開発を想定した関連部門とコミュニケーションを円滑に取るための知識(基本情報処理等)

 

元々、自前の認可処理を廃止し、Spring Securityの認可処理をカスタマイズする事にする予定だったので 、直近で手をつけることにしたのは、①となった。

予定では、現在、プログラミングと並行している資格取得が終わり次第、③。

基本機能の実装が完了次第、②となる。

②については、細かいアニメーション等も検討してみたいので、時間のある時にライブラリが豊富なものを探したい。

 

内容

参考にしたサイト

【Windows】Gitの環境構築をしよう! | プログラミングの入門なら基礎から学べるProgate[プロゲート]

 

リモートリポジトリにプッシュする|サル先生のGit入門【プロジェクト管理ツールBacklog】

 

GitBashを用いてプライベートのリモートリポジトリに現コードをプッシュする事を目的とする。

 

ひとまず、progateを元にhtmlファイルのアップロードはできた。

しかし、自身のコードがpushできない事にハマった。

 

状況:リモートリポジトリへReadiscussionをpushしようとしてもできない。

 

ローカルリポジトのbranch (branch -aで表示。このAはALLのA)
ReaDiscussionAuthorizationTest(ReaDiscussionのコード)
main(htmlファイルは削除したため無)
remotes/origin/main ※リモート追跡ブランチ = ローカルリポジトリmainの上流ブランチ


ワークツリー(ReaDiscussionのコード)

git push origin ReaDiscussionAuthorizationTestを実行も
src refspec ReaDiscussionAuthorizationTest does not match any
failed to push some refs to 'GithubのURL'
との事


pushについて
https://git-scm.com/docs/git-push

リポジトリー等の引数で指定しなかった場合は、デフォルトのoriginにpushされる
コマンドラインや構成で何にpushしたのか特定できない時は、上流ブランチで一致するか確認する。ローカルブランチと一致する同じ名前がない場合は中止する。

 

-u
--set-upstream
For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull[1] and other commands. For more information, see branch.<name>.merge in git-config[1].

 

つまり、
git push -u origin ReaDiscussionAuthorizationTest
だとローカルリポジトリReaDiscussionAuthorizationTestの上流ブランチ remotes/origin/ReaDiscussionAuthorizationTestが生成されるからプッシュできる。

 

mainにもコードがコミットされたので履歴を確認。

git logを打つと...

commit 何々 (HEAD -> main, origin/main, origin/ReaDiscussionAuthorizationTest, ReaDiscussionAuthorizationTest)

 

HEADとは?

GitのHEADとは何者なのか - Qiita

>つまりコミットの場所を記憶しているのがブランチ、ブランチの場所を記憶しているのがHEAD

 

との事。

git reflogを打ち、内容を確認すると...

2b95aef (HEAD -> main, origin/main, origin/ReaDiscussionAuthorizationTest, ReaDiscussionAuthorizationTest) HEAD@{0}: merge origin/ReaDiscussionAuthorizationTest: Fast-forward
eafd40e HEAD@{1}: checkout: moving from ReaDiscussionAuthorizationTest to main
2b95aef (HEAD -> main, origin/main, origin/ReaDiscussionAuthorizationTest, ReaDiscussionAuthorizationTest) HEAD@{2}: checkout: moving from ReaDiscussionAuthorizationTest to ReaDiscussionAuthorizationTest ...

 

HEAD@{~}については公式ドキュメントより

>HEAD@{2} means "where HEAD used to be two moves ago"

 

今後使用するかもしれないのでメモ

Gitを使ってやらかした時、git reflogさえ使えればわりかしなんとかなる - Qiita

 

fast-forwardについての問題点については課題としたい。

 

感想

Githubでコードをアップロードする事はしていたが、Gitから行ったり、その仕組みを学習するのは初めてだった。

ひとまず、心置きなく認可処理を書ける状況にはなったのでこのまま学習を進めていきたい。