4

/tmpサーバーにgitリポジトリを複製しました。次に、ファイル自体/var/my-siteを実際にコピーせずに、git リポジトリの内容をにコピーしました。.gitこれは数週間前のことです。への最初のインストールを行ったときにフォルダが移動されないこと/var/my-siteを心配することなく、ディレクトリにいくつかの変更を加えました。.git/var/my-site

数週間後、リモート git リポジトリが更新され、数週間の作業を失うことなく利用したい新機能が追加されました。新しい機能、ドラッグ アンド ドロップ、カット アンド ペーストなどを使用して各ファイルを細心の注意を払って編集することなく、ソース コードを更新し/var/my-site、以前の作業を維持する方法はありますか?

.gitフォルダを移動するだけで機能/tmpします/var/my-siteか、それとも私が考えているほど簡単ではありませんか?

4

3 に答える 3

3

で作成したクローンはまだあります/tmpか? その場合、ファイルをコピー/var/my-siteしてそのクローンに戻し、それらをコミットして (それがリポジトリの独自のブランチであるため)、リモート リポジトリからの変更をマージできます。これにより、すべてのリモート変更と自分の変更を含む最新のブランチが得られます。その後、それを にコピーできます/var/my-site

元のクローンがない場合は、リモート リポジトリの新しいクローンを作成してファイルをそこにコピーすることもできますが、結果の変更セットは混乱を招く可能性があります。最初に作成したクローンがあれば、はるかに簡単です。

于 2013-01-09T14:13:19.313 に答える
2

.git フォルダーを /tmp から /var/my-site に移動するだけで機能しますか、これは私が考えているほど簡単ではありません。

その時点で、my-siteディレクトリは git リポジトリになり、次のことができるようになります。

  • 変更をコミットしてから、実行git pullしてリモートとマージします。
  • または、変更をスタッシュし ( git stash)、プルを実行してから、変更を元に戻します (git stash popまたはgit stash applyスタッシュを保持します) 。
于 2013-01-09T14:13:05.543 に答える
1

手間がかからない方法はHEAD、最初にクローンを作成したときのレポのコミットがどのコミットであったかを見つけることです。次に、現在のブランチがこのヘッドを指しているリポジトリに変更されたファイルをコピーし、変更をコミットして、リモート リポジトリの最後の更新とのマージを試みることができます。

おおよそ、これは次のようになります。

git checkout -b temp
git reset --hard {OLDCOMMIT}
cp /var/my-site/* .
[commit changes]
git merge origin/master

元のコミット ID を見つけるのに苦労している場合はgit reflog、ブランチ変更の最後のヒントの履歴を提供するコマンドを使用できます。最近引っ張ったばかりで、多くの変更を加えた場合は、引っ張る前の古いものを見つけることができますHEAD

于 2013-01-09T14:21:16.120 に答える