35

SVN と CVS の専門家である新しい git ユーザーとして、最も基本的な git 関数を機能させるのに苦労しています。

assembla.com で共有リポジトリを使用しています

ローカル クローンを作成し、ファイルを追加しました。

$ git clone repository-url
$ echo "hello" > ha.txt
$ git add -A
$ git commit -a -m "haha"
$ git push

注: この時点で、「No refs in common and none specified;何もしない」エラーが発生しました。数時間グーグルで調べた後、解決策はこれを入力することであることがわかりました

$ git push origin master

次に、別のコンピューターに移動し、ファイルを変更してコミットしました (驚いたことに、git push origin マジックを実行する必要はありませんでした)。次に、メイン コンピューターに戻って再度変更を加えたので、マージがどのように機能するかを確認できました。

$ git fetch
$ git merge

今、私はエラーが発生します:

致命的: コミットが指定されておらず、merge.defaultToUpstream が設定されていません。

「git merge」の man ページを見ると、次のように指定する必要があります。

$ git merge [< commit >..]

問題は、それが何< commit >を意味し、何をすべきかを理解できないことです。たとえば、ファイル、レポ、メッセージ、バージョンのどれにする必要がありますか?

私はブランチを作成していません - 私はgitがそれを呼び出すと思うので、「ヘッド」またはマスターに取り組んでいます

残念ながら、Google はこれに関してあまり役に立ちません。< refspec >man ページでは、 ,< commit >とが何であるかを知っていることを期待しているようですorigin

このnoobの問題に関するヘルプは大歓迎です。

4

4 に答える 4

43

通常、引数なしで呼び出すことはありませんgit merge(少なくとも、引数なしで呼び出す人は知りません)。mergeデフォルトを追跡ブランチにしたい場合はmerge.defaultToUpstream、 true: に設定する必要がありますgit config merge.defaultToUpstream true。この場合、ブランチは追跡する必要がmasterあります: . クローン作成時にすでに存在していた場合、これは自動的に行われます。origin/mastergit branch --set-upstream master origin/masterorigin/master

個人的には、ローカルコミットがない場合はそうしgit fetchます。git merge origin/mastergit pull

編集:VonCが言及したように、merge.defaultToUpstreamデフォルトtrueはGit 2.0以降です。

于 2013-04-25T20:07:21.610 に答える
5

Pro Gitを読んでください。これは、Git を理解するための非常に良い方法です。

mergeブランチを作成せず、ブランチをマージソースとして設定せずに完了した は意味がないことがわかります。

また、重要なgit fetchとの違いについても説明します。git pull

変更を取得してもブランチは移動しませんが、プルすると移動します。

于 2013-04-25T20:19:26.353 に答える
0

これが、最初の git セットアップ後に非常に必要とされる設定であることを願っています。デフォルトのブランチ マッピングをグローバル オプションとして設定し、

git config --global merge.defaultToUpstream true

于 2016-09-20T18:34:33.370 に答える