2011-11-07 14 views
1

私はgit/githubを使用していますが、偶然、私は "4.2"ではなく "master"ブランチにコミットしています。私は今、 "マスター"とされている "4.1"という別のブランチを作成し、チェリーは重要なコミットを選んだ。私は誤ったGitブランチにコミットしています。クリーンアップの仕方?

Merges

私は今、私はそれを行うための最善の方法は何NOV1、2、3の上に作られ、7きたコミットを避けるために、マスターに「4.1」をコピーしたいですか?

私は従うことを試みている

Create git branch, and revert original to upstream stateが、これを得た:

$ git push origin :master 
remote: error: refusing to delete the current branch: refs/heads/master 
To [email protected]:atk4/atk4.git 
+0

Githubにあります:https://github.com/atk4/atk4/network関連する質問があります:http://stackoverflow.com/questions/4759492/how-to-recreate-the-github-network-グラフ – romaninsh

答えて

1

私はこれを使用して復元するために管理している:

# git back to my master branch 
git checkout master 

# reset branch to other branch 
git reset --hard 4.1 

# push changes and --force to avoid rejection 
git push --force origin master 

enter image description here

マスターであります今はそれがあったはずのやり方。私はマスターを "引っ張る"クローンにどのような影響を与えるのだろうと思います。

+0

プルは基本的にフェッチとマージと同じです。したがって、プルを行い(すでに壊れたマスターを持っている)ユーザーは、壊れたマスターと固定マスターの間でマージを取得します。どちらが奇妙なことでしょう。次のように、新しいマスターにリセットするように指示する必要があります: 'git checkout master; gitフェッチ元。 git reset --hard origin/master'を実行します。 – igorw

1

git fetchを実行すると、リモートトラッキングブランチ(origin/master)が新しい場所を指します。もし彼らがgit pullをしたら、彼らは彼らがまだ押していない彼らの仕事が(彼らもあまりにもマスターから働いていた)場合、紛争に対処しなければならないでしょう。あなたがこれに関して何人の他の人と働いていたかによって、これは大したことではないかもしれません。

マスターがチェックアウトされている場合は、「git reset -hard origin/master`」が必要です。これは、彼らがプッシュしなかったコミットを失うことになります。彼らは最初にそれを取得するために分岐することがあります。その後、準備ができたら変更をリベースまたはマージすることができます。

彼らはマスターをオフに働いていない、と彼らはちょうど彼らのローカルのmasterブランチを更新したい場合は、彼らは単に

でき
git push . +origin/master:master 

これは、単純にブランチをチェックアウトする必要がなくなりますし、それを同期リモート。

+0

偉大な情報、来ることは難しいです。私は比較的早くそれを気づくことができて幸運かもしれないし、ユーザーが私の安定したリリースを使用しているので、それはそれらに影響しません。それ以外の方法を知っていますか?私は元に戻ろうとしましたが、多くの紛争で終わりました。一度にどのようにすべてのコミットを元に戻すことができましたか? – romaninsh

+0

良い分岐戦略が必要です。あなたが間違ってマスターに何かを出すと、その状況を説明するメールが素晴らしいです。どんなツールであっても、良いコミュニケーションはさらに進んでいきます。分岐戦略は次のとおりです。https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR –

関連する問題