2017-06-10 1 views
0

だから、ここでのことだ:gitの - 二つの異なる枝の唯一のコア機能をマージ

私はmasterブランチに(サーバーとしてExpressを使用してノードに書く、と私はまたのバージョンを使用しているWebアプリケーションプロジェクトを持っています(nwjs-sdkブランチ内)ノードWebKitのデスクトップアプリケーションを構築するために同じアプリ。

二つの枝の間の差は、主にディレクトリのルートにあるファイルのほんの一握りです。

はそうここ目安です各支店の内容のうち:

master支店:

├── package.json 
├── node_modules/ 
├── public 
│   ├── css 
│   │   ├── cassette.css 
│   │   └── style.css 
│   ├── data 
│   │   └── metadata.json 
│   ├── index.html 
│   ├── js 
│   │   ├── cookie-monster.js 
│   │   ├── jquery-3.2.1.min.js 
│   │   └── mixtape.js 
│   └── tracks 
├── README.md 
├── readTracks.js 
└── server.js 

そしてnwjs-sdk支店:

├── app 
│   ├── css 
│   │   ├── cassette.css 
│   │   └── style.css 
│   ├── data 
│   │   ├── metadata.json 
│   │   └── tracks.json 
│   ├── index.html 
│   ├── js 
│   │   ├── jquery-3.2.1.min.js 
│   │   └── mixtape.js 
│   ├── main.js 
│   ├── package.json 
│   ├── tracks 
│   └── uploads 
├── package.json 
├── readTracks.js 
└── writeID3.js 

基本的にメインdiferenceが明示サーバーがなくなっていることにあるとpublic/ dirはapp/

に社名変更私のアプリのコア機能は、public/js/mixtape.jsindex.htmlapp/js/mixtape.jsと支店のの)。

私がしたいのは、masterブランチの作業を行い、すべての準備ができたら、その機能をnwjs-sdkブランチにコピーします。

これについてgitを使用する方法についてのアイデアはありますか?

答えて

1

マージを実行します。しかし、gitは本当にダムです。 2つの履歴を1つのパブリックフォルダとパブリックフォルダなしでマージするように要求すると、マージされた履歴にはパブリックフォルダが含まれます。アプリのフォルダーについても同じ議論ができます。したがって、マージ後に両方のフォルダが表示されるはずです。代わりにgitを指示したいと思うでしょう。

git checkout master; 
git merge --no-commit nwjs-sdk; 

これにより、マージコミットを行う直前にgitが一時停止します。この時点で、あなたのファイルをあなたが好きなものに移動する必要があります。 (gitはあなたのためにこれを理解することができないだろう)。あなたのファイルがどのように見えるかに満足すれば、定期的にコミットするだけです。新しい履歴を作成しているので、いつでも元に戻すことができます。次の手順で何かを失うことを心配する必要はありません。

# Un-stage the changes git was preparing to commit 
git reset 

# Use git rm to stage the removal of old files (you may want to read up on this command, perhaps try --dry-run) 
git rm -r foo ... 

# Use git add to stage the new files 
git add app ... 

# Package everything in the stage into your merge commit 
git commit 
関連する問題