9

プルオリジンsome_branchを実行していますが、多くの変更があることがわかります。最終的に、彼らが私のすべてを消してもかまいません。

代わりに、またはmergetoolを使用してファイルを1つずつマージするには、どうすればそれらをすべて受け入れることができますか?

4

3 に答える 3

8

ただ:

    git clone $url

真剣に!それが最善の方法です。

あらゆる種類のコマンドを実行して参照を移動できますgit resetgit branch、唯一の目的は、将来の参照のためにコミットをローカルリポジトリのどこかに保持することです。それが目標である場合は、リポジトリ全体をそのままにして、オリジンを再クローンします。

1つのブランチですべての変更を受け入れるには、foo

    git checkout foo
    git fetch origin +refs/heads/foo:refs/remotes/origin/foo
    git reset refs/remotes/origin/foo

fooと同じコミットを指すようfooになりoriginます。作業ディレクトリ内のファイルを吹き飛ばしたい場合は、に追加--hardしてくださいgit reset。最初にマージする場合は、に置き換えfetchますpull

ローカルリポジトリにたくさんのぶら下がっているコミットがあるかもしれません。gitはいつかクリーンアップするかもしれませんが、しばらくの間はreflogを介してそれらにアクセスできます。

于 2011-01-18T20:47:50.063 に答える
6

または:

git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git checkout --theirs
git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git add

これにより、競合するすべてのリモートファイルを強制的に受け入れるようになります。

于 2012-09-11T16:52:45.923 に答える
0

これが私が使用したアプローチですが、問題ないようです。リモートのすべての新しいバージョンを含む「theirs」というブランチがあります。「ours」という名前のバージョンは、彼らの昔のバージョンに基づいた私の作品です。これは、あまりにも多くの無関係な変更がありますが、残しておきたい多くの追加(サイトの新しいサブディレクトリ/すべて)です。

git checkout ours
git checkout theirs -- *.php *.txt *.config modules themes includes scripts
git commit -m "New version with all new key files from 'theirs'"

2回目のチェックアウトでファイルとディレクトリのリストが正しい限り、これで問題ありません。

履歴を「彼らの」ブランチに基づいて作成したい場合は、逆にこれを実行することをお勧めします。

于 2011-06-23T19:43:33.337 に答える