2012-01-12 6 views
2

私はGitに新しくこれを理解しようとしています。Git:リモートファイルをローカルファイルとマージしますか?

ローカルのマシンにssh:// repoというリモートリポジトリをクローンしました。クローン作成後、いくつかのファイルを編集し、その間にリモートリポジトリも変更されました。

両方の変更を維持しながら、リモートリポジトリで自分のローカルリポジトリを更新するにはどうすればよいですか?

答えて

4

ちょうど

git commit 

コマンドを使用して、ローカルリポジトリに変更をコミットするコミット行う必要があります。今あなたはあなたの変更を失うことはありません!

git pull 

コマンドを使用して、リモートリポジトリから新しい変更を取得します。このコマンドは、新しい変更をフェッチし、それらの変更をマージします。通常、競合はありません。この場合、変更をリモートリポジトリに自由にプッシュできます。そうしないとあなたはすべての競合を解決する必要があり、それらは

git add 

コマンド(単にGitのステータス出力からヒントを使用)を使用して解決マークし、

git commit 

コマンドを使用して、このマージをコミットします。

+0

git pullを使用するたびに、応答は「既に最新の状態」であり、ローカルマシン上のファイルにはリモートコードに対して加えられた変更がありません。どんな考え? – kz3

+1

@ htrk123この場合、XXXブランチに移動して誰かがその変更をYYYブランチにプッシュした場合に起こります。 –

+0

@ htrk123これらの変更がリモートリポジトリにコミットされましたか? –

0

あなたは 'git pull'コマンドを使うことができ、このフラグはもしあればマージ競合をマージします。 競合がある場合は、それを解決し、gitのは

2

"git pull"は、リモートの変更をローカルコピーにマージします。独立して変更を維持したい場合は、変更を新しいブランチに移動してからプルすることができます。あなたは、コードの1つのバージョンが変更(dev_branch)とリモートコードと一致するものが含まれていることの終わりに

> git stash #stash the changes 
> git branch dev_branch #create a new branch 
> git checkout dev_branch #move to the new branch 
> git stash apply #paste the changes into the new branch 
> git checkout master #switch back to the master branch 
> git pull #update the master branch 

:あなたはまだあなたの変更をコミットしていないのであれば、あなたはこのような何かを行うことができます(マスター)。 dev_branchはリモートコードに関係なく実行できます。 (あなたがgitを知っているとき、これはもっと "git"な作業方法であることが分かります。ちょうどあなたのmasterブランチで作業し、リモート変更をマージするために "git pull"を実行することは、 "Subversion" )。

関連する問題