2017-10-27 9 views
1

私は以前に行った変更をコミットし、リモート(bitbucket)レポにプッシュしました。これらの変更は他のブランチにマージされませんでした。ブランチ自体がローカルおよびリモートのリポジトリから削除されました。.git:削除されたブランチのコミットをフェッチして適用する

しかし、私がbitbucketウェブで見ることができるように、削除されたブランチにはコミットが含まれています(レポ)。私はたくさんのgoogled、しかし、方法を見つけることができませんでした。 リモートから削除されたブランチのコミットを取得する方法。私がすることができるのは、bitbucket webでそれらを見て、そこにコミットするだけです。

は、私はそれが可能であり、常に

fatal: reference is not a tree: <sha> 

だから、次のエラーを取得する

git checkout <sha> 

または

git checkout -b <branch-name> <sha> 

しかし、のようないくつかの例を見て、私が取得する方法(フェッチ)これらはリモートからのコミットブランチ、ブランチを解放するためにマージしますか?

答えて

0

私はスタックオーバーフローで削除されたコミットのチェックについて何も見たことがありません。しかし、経由コミット削除にハードリセットを行うことが可能でなければなりません:削除にsome_new_branchがコミットブランチをリセットする

git checkout -b some_new_branch 
git reset --hard <SHA-1 of deleted commit> 

これ、おそらくこれはあなたが続行するために十分です。

Bitbucketに表示される削除されたコミットがreflogから来ていると仮定しています。もしそうなら、あなたもあなたの削除されたコミットを閲覧することができるはず経由:

git reflog 

あなたが削除したコミットを見ないない場合、それはまた、あなたが持っているエラーを説明するかもしれません。この場合、削除されたコミットが実際にBitbucket上にのみ存在する場合は、他の方法でそれらにアクセスする必要があります。

+1

この回答は、質問に応じて既に試されたことを示唆していますか? – Martin

+0

@Martin私はreflogコミットのチェックアウトについては何も見つかりませんでした。 あなたの疑惑が正しい場合、彼のコミットはすでにreflogから消去されています。しかし、もしそうならば、彼はBitbucketでまだ見ることができるのは不思議です。 –

0

コミットが(最近のアクティビティではなく)ビットバケットでまだ見える場合でも、コミットはまだいくつかのブランチまたはいくつかのタグから到達可能です。 git fetchを実行してこれらのレファレンスの最新バージョンを取得することができます。また、特定のコミットもローカルリポジトリに存在しない場合にダウンロードされます。ただし、エラーfatal: reference is not a tree: <sha>は、shaがコミットではないことを意味します。それはたぶんブロブです。適切なコミットを見つけると、git checkout <commit>またはgit checkout -b <branch-name> <commit>が動作するはずです。

+0

私はローカル履歴にコミットしていないので、GIT CHECKOUT を発行することはできません。リモートリポジトリにのみ表示されます。だから、まず、私は何とかリモートからこのコミットを取得する必要があります。 – Yury

+0

コミットしていない場合は、どのsha1の値を使用していましたか? 'fatal:参照はツリーではありません: '? – ElpieKay

+0

申し訳ありませんが、おそらく私の質問から明らかではありません。このコミットはリモートリポジトリ(bitbucket)に表示されますが、どのブランチにもアタッチされていません(ブランチ自体は削除されました)。 – Yury

関連する問題