3

bitbucket に空のリポジトリを作成し、それをディレクトリに複製しましたdwm。次に、suckless.org から dwm のコードを取得し、カスタム リポジトリを更新しました。

git pull http://git.suckless.org/dwm
git push -u origin master --tags

いくつかの変更を加えましたが、suckless.org が他のコミットを行うときに備えたいと思います。彼らの変更を私のコミットにマージしたい。これは機能しますか?

git checkout -b new
git fetch http://git.suckless.org/dwm
git checkout master
git merge new
git branch -d merge

私はリポジトリを作成し、今日最新バージョンをダウンロードしたので、suckless.org からこれをテストするための新しいコミットはありませんでしたが、積極的に取り組み、事前に把握したいと考えています. この手順は機能しますか? たとえば、私が変更dwm.cし、開発者も変更を行った場合、git は違いを見つけてマージを実行する必要がありますか?

自分の変更をオープン ソース プロジェクトにプッシュバックしたくありません。私は自分のマシンで使用するためにプロジェクトのコピーを変更し、そのローカル コピーとそのコミットを (開発者のコ​​ミットと共に) bitbucket リポジトリに保存しています。

4

1 に答える 1

4

newこれらの変更をブランチにプルしたい場合は、代わりにこれを行うことをお勧めします。

git remote add suckless http://git.suckless.org/dwm

後で参照できるようにリモートを追加するので、その URL を入力し続ける必要はありません。

git checkout -b new
git pull suckless master

という名前の新しいブランチを作成し、newそれに切り替えます。-bこのブランチが既に存在する場合、オプションは必要ありません。ブランチから変更を取り込み、suckless masterこのブランチに追加します。

このfetchコマンドは、リモート リポジトリから最新の更新を取得するだけで、適用はしません。pullそれらを適用するには、これらの変更が必要です。

git checkout master
git merge new

master ブランチに戻り、newブランチをブランチにマージしmasterます。

git branch -d new

new不要になったので、ブランチを削除します。

于 2013-10-13T22:05:38.017 に答える