2017-01-01 5 views
3

本当に騒々しい問題を解決するためには助けが必要だ。私はa github repoのデベロッパーチームにいます。その一部は、自分の分岐したブランチからの貢献者による機能更新を頻繁に見直すことを意味します。そうするために、私はこのコードを使用して自分のレポとチェックアウトの特定の支店のローカルコピーをプルダウン:GIT私がいないときに変更を加えたと思う。

git remote add this_fork this_fork_url 
git checkout -b this_fork/this_branch 
git branch --set-upstream-to=remotes/this_fork/this_branch this_fork/this_branch 
git pull 

私は地元のいくつかの要因レポのコピーだけでなく、私は頻繁に切り替えるそのうち起源を、持っています。コントリビュータreposを使用して、私はコードを変更しないでください、私は単にコードを見直して、&をコンパイルしてアプリケーションをテストします。

しかし、時々、これらの寄稿者ブランチの1つをチェックアウトすると、Your branch is a head of remotes/this_fork/this_branch by ## commits. (use "git push" to publish your local commits)、またはYour branch and 'remotes/this_fork/this_branch' have diverged, and have ## and ## different commits each, respectively. (use "git pull" to merge the remote branch into yours)と表示されます。私は変更を加えていないことを知っているので、私はgit pullを実行するだけで兵士に挑戦しようとしますが、これはgitに前者の場合はgit commitに強制し、後者ではgitにマージを実行させます。 git statusを実行すると、同じ種類のメッセージが表示されますが、は、変更されたファイルが表示されません。です。

フォークされたリポジトリのローカルコピーの1つがこの状況になると、私がそれを修正するために見つけた唯一の方法は、リポジトリのローカルコピーを完全に削除することです。私はそれを完全に削除した後、同じ状況にとどまっていることを観察した後、リモートを再追加します(実際には、ディレクター& .gitディレクトリすべてローカルリポジトリコピーを削除しました)。 Running git reset --hardは役に立ちません。

これはUbuntuとWindowsの両方で発生しています(アプリケーションはクロスプラットフォームです)。これは、すべてのリモート、すべてのブランチ、または私がブランチをチェックアウトするたびに発生しないことに注意してください。私は何週間もブランチに問題はなく、突然チェックアウトするといつか、これが起こります。

これは、著者が実際に&プッシュした変更を行ったthisと同じではありません。私の場合、私は変更を加えません

私の質問は二重であると思います。「なぜ、私がいないときに私が変更を加えたと思うのですか? 「どうすればこの問題を解決できますか?」

答えて

3

代わりにgit checkout -B this_fork/this_branch remotes/this_fork/this_branchをお試しください。
git checkout man pageで述べたように:それが存在しない場合は

-Bが与えられた場合は、作成されます。それ以外の場合はリセットされます。これは、そのように

$ git branch -f <branch> [<start point>] 
$ git checkout <branch> 

のトランザクションと同等である、あなたのローカルブランチthis_fork/this_branchは常にあなたが取り出されていremotes/this_fork/this_branchフォーク枝にリセットされます確信しています。
この場合、先行または後ろのコミットはありません。

+0

'$ gitのはCaritor_Amit をフェッチ howej @リオ-71にMinGW64〜/ KTAB(Caritor_Arun/XMLParserの) $ gitのチェックアウト-B Caritor_Amit /テスト は 'Caritor_Amit /テスト' あなたの枝と「リモコンのに交換し、枝をリセット/ Caritor_Amit/testing 'はそれぞれ に分岐し、それぞれ36と42の異なるコミットをそれぞれ持っています。 (リモートブランチをあなたのものにマージするために "git pull"を使用してください) ' –

+0

@ Dr.Drew' git checkout -B Caritor_Amit/testing remote/Caritor_Amit/testing'は何を返しますか? – VonC

+0

それをしたようです。しかし、あるブランチでは、 'git checkout -B this_fork/this_branch'という構文が実際に動作し、別のブランチが必要でした。これはなぜでしょうか? –

関連する問題