10

+ SCMが使用されていないコードを使用しており、一部のプロジェクトファイルの一部のみが少し変更されていますが、すべてのプロジェクトファイルの形式で更新を受け取ることがあります。今までは、自分の変更をgitリポジトリに入れて、手動セッションでこれらの「更新」を解決しました。手動git add -pセッションでは、自分の変更(まだ公開されていないもの)の量が増え、ますます煩わしくなります。幸運なことにgit commit --author "the others"、前述の「パッチ」に対して行ったので、知りたいのは次のとおりです。

1人の作成者によって行われたすべてのコミットを新しいブランチに分割するにはどうすればよいですか?

(この場合、履歴を書き換えてもかまいません。リポジトリは私だけが使用します)

理想的な解決策には、すべての「パッチ」の後に他のブランチを私のブランチにマージすることが含まれますが、今のところ、最後に最後のマージで十分な場合があります。


+はい、ジェダイあなたがそこに忍び寄るのを感じました

4

2 に答える 2

7

私は最近誰かのためにこれをしました:

git checkout -b other_work <sha1_of_where_to_rebase>
git log --reverse --author=others --format=%H <sha1_range> | xargs -n 1 git cherry-pick

お役に立てれば

于 2011-04-21T07:57:04.400 に答える
2

私はあなたが何をしているのかよくわかりませんが、サードパーティのコードベースで説明する問題は「ベンダーブランチ」と呼ばれます。これが私がそれを処理する方法です:

サードパーティバージョンのブランチを作成しvendorます。例:あなたのブランチはと呼ばれていると思いますmaster。彼らが新しいバージョンを公開するとき、あなたは以下を行うことができます:

git stash # If you have any uncommitted files
git checkout vendor
tar -xzvf [new files]  # This might be unzip or whatever, rather than tar
git commit -am "Version xxx from upstream"  # Adjust commit message to suit
git checkout master
git merge vendor   # Bring changes into your branch (you could use rebase here if you prefer to keep all your changes on top of all their changes)
git stash pop # Restore your uncommitted files

ps。ではなくgit add -p、を使用しますgit gui。そもそもGUIを使うことに懐疑的でしたが、今(またはMac)なしgit guiでは生きられませんでした。gitkgitx

于 2012-05-14T13:20:55.843 に答える