2016-07-07 6 views
64

私はgitを学んでいます。私のGithubリポジトリからファイルをプルしようとしています:「関連のない履歴をマージするのを拒否します」

私はGithubで公開リポジトリをいくつか作成しました。今私は現在のコンピュータにローカルのGitリポジトリをセットアップし、いくつかのファイルをコミットしました。

[[email protected] c]# git remote add learnc https://github.com/michaelklachko/Learning-C 

成功するように見えた:

[[email protected] c]# git remote show learnc 
* remote learnc 
    Fetch URL: https://github.com/michaelklachko/Learning-C 
    Push URL: https://github.com/michaelklachko/Learning-C 
    HEAD branch: master 
    Remote branch: 
    master tracked 
    Local ref configured for 'git push': 
    master pushes to master (local out of date) 

今、私は自分のコンピュータに私のGitHubのレポからファイルをダウンロードしたいそして、私は自分のGithubのページへのリモートポインティングを追加しました。私はこれをしました:

[[email protected] c]# git fetch learnc 
[[email protected] c]# git merge learnc/master 
warning: refname 'learnc/master' is ambiguous. 
Already up-to-date. 

しかし、自分のローカルディレクトリに新しいファイルがありません。どうすれば入手できますか?ローカルに私は(他の支店が存在しない)masterブランチによ、ところで

[roo[email protected] c]# git pull learnc master 
From https://github.com/michaelklachko/Learning-C 
* branch   master  -> FETCH_HEAD 
fatal: refusing to merge unrelated histories 

[[email protected] c]# git status 
On branch master 
nothing to commit, working directory clean 
+2

ローカルリポジトリを設定するときに、Githubリポジトリをクローンしたか、単に 'git init'を実行しましたか?後者の場合、それらのreposは無関係であり(共通のコミットはありません)、それらをマージすることはできません(プルはフェッチ+マージ)。 – Paul

+0

私はinitを行った。私はGithubのレポをクローンしてこれを修正すべきですか? – MichaelSB

+0

Githubレポをクローンして作業を続けることはできますが、依然として別のレポになります。関連性のない2つの履歴をまとめてマージしますか? – Paul

答えて

134

がmax630のよう--allow-unrelated-histories

を試してみてください

は私もこれを実行しようとしましたコメントしたか、ここで説明した通りです。 Git refusing to merge unrelated histories

+1

[githubリリースノート](https://github.com/git/git/blob/master/Documentation/RelNotes/2.9.0.txt)に記載されています。 #L58-L68) – systemaddict

+1

完了!他の解決策は働いていませんでした。 – Siddharth

45
git checkout master 
git merge origin/master --allow-unrelated-histories 

解決の競合、そして

git add -A . 
git commit -m "Upload" 
git push 
7

かなりの歴史が(それだけで一つのreadmeファイルで別名場合githubの端部にはコミット)一端に存在しない場合、私は多くの場合、それが簡単に手動にreadmeファイルをコピーするために見つけます私のローカルrepoとgit push -f私のバージョンは、新しいルートコミットを行う。

私はそれがやや複雑ではなく、あいまいなフラグを思い出す必要がなく、履歴を少しきれいに保ちます。

15

私はすべての人々の仕事の問題を取り除くことに専念していますが、「プッシュフォース」や「--allow_unrelated_histories」は新しいユーザーに一般的な解決策として教えてはいけません。なぜ、物事が最初に働いていないのか理解せずにそれらを使用するとき。

ローカルリポジトリを使い始めた場所で、仕事を分かち合うためにGitHubでリモートを作成したい場合は、注意が必要です。

新しいオンラインリポジトリを作成すると、「このリポジトリをREADMEで初期化する」というオプションがあります。小文字を読むと、「既存のリポジトリをインポートしている場合は、この手順をスキップします」と表示されます。

このチェックボックスをオンにしている可能性があります。あるいは、最初のプッシュを試みる前に、オンラインで追加/コミットしました。何が起こるかは、それぞれの場所で一意のコミット履歴を作成し、Nevermoreの答えに記載されている特別な手当てなしには調整できません(gitではそのように動作させたくないためです)。ここで言及されているアドバイスのいくつかに従うこともできますし、次回は一部のローカルファイルを新しいリモートにリンクするオプションをチェックしないでください。その最初のプッシュのためにリモートをきれいに保つ。

参考:git + hubでの私の最初の経験は、この同じ問題にぶつかり、何が起こったのか、なぜ起こったのかを理解するために多くのことを学ぶことでした。

0

また、リモートURLを間違った名前に設定すると、このエラーが表示されます。リモートURLを正しく設定したことを確認してください。

関連する問題