2016-05-24 9 views
-1

git pull originを開発しようとすると...問題は最新ではないことが分かります。私は、すべてのものを取り戻して、他の人とすべてが最新であるところに戻るようにしたいと思います。私のローカルリポジトリは常に* branch develop - > FETCH_HEADと書いてあります。既に最新のものです。

私のローカルリポジトリで重要なことが他にない場合、私は起源から再構築することができますか?私はそれがすべてを上書きするだろうと思っているが、少なくとも私は最新のものになるだろうし、セーブバージョンは他の誰もが持っている!?!?!?

これはgitのと私のオリジナルのワークフローだったが、何とかすべてが歪んでしまった:

git add files_that_were_updated 
git commit -m "Message." 
git push origin BUG-# 
git checkout develop 
git fetch origin 
git pull origin develop 
git merge BUG-# 
git push origin develop 

はありません、かなり標準的で簡単なようですか?

+0

実際はありません。すぐにそれをマージするために 'BUG-# 'を押すのはなんですか?そして、もしあなたがすでに 'フェッチ 'しているのであれば' pull'する必要はありませんが、 'pull 'は' fetch' + 'merge'や' fetch' + 'rebase'であるので、単純な' merge'で十分です。あなたの設定とオプション。そしてbtw。 'origin/develop'をローカルの' develop'のトラッキングブランチとして設定した場合(おそらくそれは既にそうであるように)、どこにプッシュするか、どこから引っ張るかを伝える必要はありません。 – Vampire

+0

失敗した出力は何ですか?合意、これはうまくいくように聞こえる。いくつかのコマンドがありますが、害を及ぼすものはありません。 – robrich

答えて

0

最初のコミットを実行したときに、どのブランチであったかを見ることはできません。そのため、BUG-#ブランチにいると思ってdevelopブランチに直接コミットした可能性があります。これは、あなたのローカルのdevelopがリモートリポジトリのdevelopよりも先になっていることを考えると、なぜ「あなたは既に最新の」メッセージが表示されるのかを説明します。


簡単な方法

は、あなたのリポジトリにダウンし、リモートリポジトリ(例えば原点)から最新のブランチを得ることを確認する、あなたは branchNameよりも別のブランチにある一方で、 git fetch branchName:branchName --forceを行うことです。あなたの例では

、このような何か:

# assuming you are on branch `BUG-#` 
git add files_that_were_updated 
git commit -m "Message." 
git push origin BUG-# 
git fetch origin develop:develop --force 
... 

上記の最後のコマンドは、あなたのoriginリモートがポイントしているサーバー上にあるdevelop枝を使ってローカルdevelop支店に置き換えられます。

これを実行できるようにするには、置き換えられるブランチと同じブランチにすることはできないため、常に最初に別のブランチに移動してください。

関連する問題