web-dev-qa-db-ja.com

「git fetch」を元に戻す方法

remote Arepo Bを追加して、git fetch Aを実行しました。フェッチを元に戻すにはどうすればよいですか? remote Agit remote remove A1を削除すると、フェッチが取り消されますか?

更新:

$ git remote add A path/to/A
$ git fetch A

上記は私が実行するコマンドなので、すべてのブランチをrepo Bにフェッチしましたが、repo Aから特定のブランチを1つだけ必要とし、repo Bの特定のフォルダーに移動する必要がありますが、それは別の話です 2つのdfferent gitリポジトリ間でコードをマージ

16
sreginogemoh

このリモートを削除するだけで、allリモートAからのフェッチを取り消すことができます。

git remote remove A

もう一度追加して、単一のブランチのみをフェッチします。

git remote add A <path/to/repository>
git fetch A <name of branch>
22
qzb

torekからの回答が本当に好きでしたが、「reflogsを更新する」コマンドを提供していません。これはまさに私が探していたものです。私はこれを他の答えで見つけました git fetchを逆にする なので、他の検索を簡単にするためにここに置いておきます。


Originリモートがあり、ローカルdevelopブランチがmasterに基づいているが、ローカルmasterOrigin/masterが、まだ表示されていませんOriginをまだ取得していないため)。

したがって、git fetchを実行すると、Origin/masterからの新しいコミットとタグがローカルリポジトリに追加されます。場合によっては、seeをまったく使用したくない場合があり、履歴の可読性が低下します。

そうは言っても、次のようにしてgit fetchを「元に戻す」ことができます。

git update-ref refs/remotes/Origin/master refs/remotes/Origin/master@{1}

これは、Origin/masterポインターを以前の状態に変更するだけです。正確な状態を取得するには、{n}を少し試してみる必要があるかもしれませんが、一般的には役に立つかもしれません。

4
The Godfather

次のコマンドを使用して、誤ってフェッチしたブランチを保持したくない場合は削除できます。

git update-ref -d refs/remotes/YOUR_REMOTE_NAME/BRANCH_NAME_TO_DELETE

それらが再び取得されないようにするには、指定されたブランチのみを取得するようにgit remoteを設定します:git remote set-branches YOUR_REMOTE_NAME desired_branch1 [desired_branch2, desired_branch3, etc]、e.g。 git remote set-branches Origin master

Set-branchesのデフォルトの動作は、常にリストを置き換えることです。追加する場合は、--addオプションを使用します:git remote set-branches --add Origin another_branch

1
Olimon F.