20201123のGitに関する記事は4件です。

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した方がいい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【初心者向け】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
    「リモートリポジトリ」が、「ローカルリポジトリ」から情報を更新するコマンドです。

【イメージ図】
概要.png

それではもう少し詳しく見ていきましょう!

git pull

git pullは「ローカルリポジトリ」が、「リモートリポジトリ」から情報を更新するコマンドです。
「リモート追跡ブランチ」と「ローカルブランチ」の情報を更新することができます。
コードは以下の通りです。

$ git pull リモート名 ブランチ名

# 以下は「リモートリポジトリ」のmasterブランチの情報をpullするときのコマンドです。
$ git pull origin master

git pullを使う際は、今いる「ローカルブランチ」とpullしたい「リモートブランチ」が一致していることを確認しましょう。
※例えば上記のコードにおいて、「ローカルブランチ」がmaster以外のブランチ(例えば、branch1とします)の状態で、pullしてしまった場合、branch1がリモートのmasterブランチの情報で更新されてしまいます。

【git pullのイメージ】
git pull.png

git fetch

git fetchは「ローカルリポジトリ」が、「リモートリポジトリ」から情報を更新するコマンドです。
「リモート追跡ブランチ」のみ情報を更新することができます。
git fetchの後にgit mergeをするとgit pullと同じことが起きます。

$ git fetch リモート名

# 以下は「リモートリポジトリ」の情報をfetchするときのコマンドです。
$ git fetch origin

【git fetchのイメージ】
git fetch.png

git push

git pushは「ローカルリポジトリ」から「リモートリポジトリ」に情報を送るコマンドです。
指定したブランチ(例:master)のみ「リモートリポジトリ」の情報を更新することができます。
※次に出てくる【git pushのイメージ】の通り、指定していないブランチ(図の場合branch)は更新されません。

$ git push リモート名 ブランチ名

# 以下は「ローカルリポジトリ」のmasterブランチを「リモートリポジトリ」のmasterブランチにpushするときのコマンドです。
$ git push origin master

【git pushのイメージ】
git push.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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勉強会、どんどん参加しよう!!!!!!!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

リモートリポジトリの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.git

githubでリポジトリ作れば、git remote set-url origin以降のURLはコピペで取得できるので、それを貼り付ければおわり

最後に冒頭のコマンドでリモートリポジトリのURLが変わっていることが確認できればOKです

参考文献

https://docs.github.com/ja/free-pro-team@latest/github/using-git/changing-a-remotes-url

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む