2016-04-05 21 views
6

私はgitと私のレポに問題があります。
gitの2つのブランチ間でいくつかのファイルを同期する方法はありますか?

まず私は、これは、2つの支店で同じファイルの内容を維持するための私の方法です

git checkout Proj1 
# modify index.html 
git commit -am "Modify Index.html" 
git checkout Proj2 
git show Proj1:index.html > index.html 
git commit -am "Modify Index.html" 
git checkout Proj1 

例を記述します。

もちろん、コミットに同期したいファイルのみが含まれている場合、私はcherry-pickを使うことができます。 How can we sync files between two branches in git?

この問題の解決策はありますか?
書き込むエイリアスは何ですか?
どこのファイルを同期させることができますか?

+0

私はまだProj1で作業したいと思います。 – machmet

+7

同期。 GITのブランチ間はgit mergeです。他の方法はgit方法ではありません。 – yorammi

+1

私は@yorammiに同意しますが、[git worktrees](https://git-scm.com/docs/git-worktree)とシンボリック/ハードリンクを調べることができます。あなたは混乱で終わることができますが。私は併合のために行って以来あなたをさらに助けることはできませんし、私はまだそれほど多くの仕事を調査していませんでした – ThanksForAllTheFish

答えて

0

あなたが歴史について気にしないならば、あなたはそれがPROJ1にコミット先端のように見えるような別は正確にファイルを含むブランチ2にコミットすることができます。これは、することを意味し、基本的に

git checkout Proj2 
git checkout Proj1 -- index.html 

git commit -am "Modify Index.html" 

は、 Proj1ブランチのようにファイルを正確に取得してください。

git checkout --は、ダッシュの後にファイル名(またはパス)を指定することを意味します。これはリポジトリ内のいくつかのファイルを変更して他のファイルを保存したい場合にも便利です。

次に、あなたがしたい場合、あなたはまた、あなたがこのようPROJ1で行われたコミットからコミットメッセージに再利用することができます

git checkout Proj2 
git checkout Proj1 -- index.html 

git commit -a -C Proj1 

Gitのcommit -Cをすでに持っていたコメントコミット再利用することを意味します。 git documentation "git checkout"から

Gitチェックアウト[-p|--patch] [<tree-ish>] [--] <pathspec> または--patchが与えられている

、Gitチェックアウトは、枝を切り替えていません。 は、作業ツリーの名前付きパスをインデックスファイルまたは から名前付き(たいていはコミット)から更新します。

[...]

のgitとチェックアウトまたは--patchは、インデックスから自分の元の内容を変更または 削除されたパスを復元するか、名前の(最も頻繁に がコミットから内容の パスを置き換えるために使用されます-Hは)。

そしてgit documentation "git commit"

git commit -C <commit>

--reuse-message=<commit>

から既存のオブジェクトをコミットを取り、作成時にログメッセージと(タイムスタンプを含む) 著者情報を再利用 をコミットします。

関連する問題