質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

950閲覧

git cloneとpullについて

momenn

総合スコア1

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

1グッド

0クリップ

投稿2023/04/02 07:53

Git初心者です。
自分でリポジトリを作り、パソコンAとパソコンBでプロジェクトを共有しようとして詰まりました。

実行手順
・パソコンAの作業内容をGitにpush
・パソコンBでcloneを作る→成功
・試しにローカルの1ファイルを削除、もう1つファイルを編集
・pullで反映されるか→削除されたファイルは復元されず、変更内容も復元されず

実行したコマンドは、
git clone [URL]
(ここでディレクトリを編集)
git pull origin main です。

削除したファイルはcheckoutでリポジトリから持ってくることはできましたが、pullで持って来れないのが腑に落ちません。

根本的な理解を誤ってるかもしれないと思い、質問させていただきました。
pullとはそもそも削除したファイルを復元する機能がないのか、また必要な手順が抜けているのか。

pullする前にcommitしなければいけない…?いやそんなことないはず!

branchは最初のpush時にmainとしたので、間違いないはずです。
初歩的な質問で申し訳ありませんが、なかなか解決できないのでご教授くださいませ。
よろしくお願いします。

chou-dai👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2023/04/02 07:55

pull は fetch 後に merge するコマンドです。 マージした結果、ローカルでの変更の方が新しいので更新されません。 そのような場合は reset を使います。
momenn

2023/04/02 08:02

変更が新しい方を優先するんですね。僕みたいなケースはgitさんも想定外だったのかもしれません…。 どおりで調べても出てきませんね。 早急な回答で大変助かりました。 ありがとうございました。
Zuishin

2023/04/02 08:27

どのようにマージされるのか色々試して確認して自己解決してください。
momenn

2023/04/02 13:34

git logでコミットIDを確認し、git reset [commitID]とすることで変更前の状態に戻すことができました。 その状態でpullすると、足りない分のファイルを引っ張ってきてくれました。感動です。 pullはfetchとmergeの複合体なので、この2コマンドについても理解を深めていこうと思います。 教えてくれるだけでなく、考える機会をくださりありがとうございました。
guest

回答2

0

自己解決

1.パソコンAでローカルのプロジェクトをpush
2.パソコンBでリポジトリをclone
3.パソコンBでpull実験のため、cloneしたプロジェクトの一部を削除
4.パソコンBでpullをして削除内容が復元されるのか実験

以上のような手順を踏んだ場合、最後に変更されたのはパソコンB内のローカルリポジトリでした。
その場合、ファイルが削除された状態だとしても最新のリポジトリはパソコンBのローカルリポジトリ。
だからいくらpullしようとしても、gitさんは「あなたのリポジトリは最新でっせ。」と仰っていたようです。

対処法は以下です。
・git logにより復元したい対象のコミットIDを見つける
・git reset [取得したコミットID] によりローカルリポジトリの状態を元に戻す
・もとに戻したうえで、git pull origin [branch名(僕の場合はmain)] で幸せになることができる。

もし同じ場所でハマってしまった場合は参考にしていただければ幸いです。

投稿2023/04/02 13:44

momenn

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ファイル編集や削除をした場合

> git add . > git commit -m "メッセージ" > git push

してGitHubのリポジトリ上のファイル群を更新する必要があります。

その後、別パソコンで

> git pull

をすれば、変更箇所をGitHubから取り込めるはずです。

投稿2023/04/02 09:23

chou-dai

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momenn

2023/04/02 13:38

今回はパソコンAでgit pushをしたのち、パソコンBでgit clone後にファイル削除の実験を行ったため、パソコンBのローカルリポジトリが最新の状態になってしまっていました。 そのため、いくらpullをしても自分のパソコンが最新なのでgitさんは応えてくれず、、 Zuishinさんにご教授いただき、git reset [commitID]としたあとにpushすることで無事解決できました。 今回は考える機会をくださり、解決まで至ることができたので自己解決として閉じたいと思います。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問