- 投稿日:2020-11-23T22:45:21+09:00
error: 'hoge/' does not have a commit checked out
はじめに
新しく作ったファイルをpushしようと思い、
$ git add .したら、error: 'hoge/' does not have a commit checked outと出た。
.gitがファイルと、ファイルの中のファイルにあったのが原因見たいだった。解決
https://zjschulz.medium.com/error-does-not-have-a-commit-checked-out-573c0ed9c49
このサイトをなぞった。
フロントエンドとバックエンドでファイル一つのファイルにまとめて作るときは、はじめに、リモートに空のファイルををpushしてから、フロント、バックをそのフォルダの中に作成して,add, commit, pushした方がいい。
- 投稿日:2020-11-23T22:34:52+09:00
【初心者向け】git pull, git fetch, git pushで何が起きているか図解してみた
はじめに
最近Gitの勉強をしているのですが、git pullやgit fetch等解釈が難しいと感じたので、図解してみようと思います。
同じくpull, fetch, pushで混乱している人の参考になれば良いなと思います。分かりにくかったり、誤った記載があれば、コメント欄にて優しく教えていただけると嬉しいです!
用語の説明
リポジトリ:リポジトリとは変更を記録するための場所です。
- ローカルリポジトリ:自分のPC上のリポジトリ
- リモートリポジトリ:ネットワーク上のリポジトリ(Github等)
ブランチ:直近のコミットを指し示すポインタ
- ローカルブランチ:ローカルにあるブランチ(例:master)
- リモート追跡ブランチ:リモートブランチの動きを追跡するブランチ(例:origin/master)
- リモートブランチ:ネットワーク上にあるブランチ(例:master)
git pull, git fetch, git pushについて
git pull, git fetch、git pushの動きを大まかに見ていこうと思います。
- git pull
「ローカルリポジトリ」が、「リモートリポジトリ」から情報を更新するコマンドです。
「リモート追跡ブランチ」と「ローカルブランチ」の情報を更新することができます。- git fetch
「ローカルリポジトリ」が、「リモートリポジトリ」から情報を更新するコマンドです。
「リモート追跡ブランチ」のみ情報を更新することができます。- git push
「リモートリポジトリ」が、「ローカルリポジトリ」から情報を更新するコマンドです。それではもう少し詳しく見ていきましょう!
git pull
git pullは「ローカルリポジトリ」が、「リモートリポジトリ」から情報を更新するコマンドです。
「リモート追跡ブランチ」と「ローカルブランチ」の情報を更新することができます。
コードは以下の通りです。$ git pull リモート名 ブランチ名 # 以下は「リモートリポジトリ」のmasterブランチの情報をpullするときのコマンドです。 $ git pull origin mastergit pullを使う際は、今いる「ローカルブランチ」とpullしたい「リモートブランチ」が一致していることを確認しましょう。
※例えば上記のコードにおいて、「ローカルブランチ」がmaster以外のブランチ(例えば、branch1とします)の状態で、pullしてしまった場合、branch1がリモートのmasterブランチの情報で更新されてしまいます。git fetch
git fetchは「ローカルリポジトリ」が、「リモートリポジトリ」から情報を更新するコマンドです。
「リモート追跡ブランチ」のみ情報を更新することができます。
git fetchの後にgit mergeをするとgit pullと同じことが起きます。$ git fetch リモート名 # 以下は「リモートリポジトリ」の情報をfetchするときのコマンドです。 $ git fetch origingit push
git pushは「ローカルリポジトリ」から「リモートリポジトリ」に情報を送るコマンドです。
指定したブランチ(例:master)のみ「リモートリポジトリ」の情報を更新することができます。
※次に出てくる【git pushのイメージ】の通り、指定していないブランチ(図の場合branch)は更新されません。$ git push リモート名 ブランチ名 # 以下は「ローカルリポジトリ」のmasterブランチを「リモートリポジトリ」のmasterブランチにpushするときのコマンドです。 $ git push origin master
- 投稿日:2020-11-23T17:57:51+09:00
GitHubのデフォルトブランチ名がmainになってからプッシュできず詰まっていたのを解決できた件
はじめに
c++で作品を作っていてGitHubにコミットしてプッシュしようとしたときのことでした
今までは、デフォルトブランチ名がmasterだったときはらくらくできていたが、デフォルトブランチ名がmainブランチに変更されてから
この謎は始まったのであった。自分が忘れないようにメモとして書いているものだが、もし同じように困っている人の役に立てたら幸いです。
どういう謎だよ
まずいつも通りにGitHubで新しいリポジトリを作成して
ターミナル下記を入力git init
git remote add origin [新しいリポジトリを作成したURL]
git add .
git commit -m "first commit"//ここで、pushなりgit pullなりで問題が起こる
git push origin main
git
* branch main -> FETCH_HEAD
fatal: refusing to merge unrelated historiesとか
error: src refspec main does not match any.
error: failed to push some refs to 'origin'とか
git pullで
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists他にも、masterでプッシュしてしまうと、mainブランチとmasterができてしまったりして
2つブランチができてしまうことがありましたもしmainブランチとmasterブランチを作りたいのであればいいのですがそうでない場合...
うわぁぁぁぁ!!!初見殺しだァァァ!
何が起きているのか、解決方法を探す
git clone でできているリポジトリから解決した方法
git branchで現在いるブランチを確認
git branch
* masterん?masterになっている。
そういえば、git cloneで取ってきていないからか。これじゃあできないわけだ。GitHubで作ったリポジトリをクローンする
git clone [リモート リポジトリのurl]
それで
git branch
* mainこれでgit pushできるはず!
git cloneを使わないやつで解決した方法
git init
git remote add origin [リモートリポジトリのURL]
git add [ファイル]
git commit -m "ここにコメントを入れる"
git branchもし* masterと表示になっていたら
git fetch
git checkout main
git push解決方法のまとめ
GitHubのデフォルトブランチ名がmainブランチに変わってから、
新しくリポジトリを作成したときにpushできない問題が起きたら、
先にリポジトリを作成してgit clone で取ってくるか、
上記で書いたgit cloneを使わない方法で解決できた。謝辞 + IT勉強会にどんどん参加しようぜ!!
今回のGitHubに関して行き詰まっていたのを解決できたのは IT勉強会CoKonPileの参加者様と関係者の協力で解決できました!
CoKonPileの皆様、ヒントや解決方法を一緒に考えていただき、ありがとうございました!IT勉強会、どんどん参加しよう!!!!!!!!
- 投稿日:2020-11-23T12:12:59+09:00
リモートリポジトリのURLを変更したい
githubで良さげなソースコードをcloneしてみて、自分のgithubで管理したいというときはリモートリポジトリのURLを変更する必要があります。
そんなときに読むめも
リモートリポジトリのURLの確認
git remote -vこんな感じでリモートリポジトリのURLが見れます。
origin git@github.com:USERNAME/REPOSITORY.git (fetch) origin git@github.com:USERNAME/REPOSITORY.git (push)リモートリポジトリのURL変更
git remote set-url origin https://github.com/USERNAME/REPOSITORY.gitgithubでリポジトリ作れば、git remote set-url origin以降のURLはコピペで取得できるので、それを貼り付ければおわり
最後に冒頭のコマンドでリモートリポジトリのURLが変わっていることが確認できればOKです
参考文献
https://docs.github.com/ja/free-pro-team@latest/github/using-git/changing-a-remotes-url