0

チームに提案することを視野に入れて、ローカル ワークフロー管理用に git を試しています。ということで、しっかりと頭を整理したいのですが、わからないことに突き当たります。

私が git-land に入ったのは、私ともう 1 人の開発者が作業している SVN リポジトリがあったときです。私たちの PM はプロジェクトのタイムラインを変更し、彼のサブプロジェクトはほぼすぐに本番環境に移行する必要があり、その後、約 1 か月後に私のサブプロジェクトを開始する必要がありました。私たちは両方とも同じ SVN リポジトリで開発を行っており、私のものはすでにユーザーに表示され始めているため、今後の本番環境への移行のために取り消す必要があります。

SVN 作業ディレクトリを更新しました。同じディレクトリで git リポジトリを開始しました (.svn などは無視します)。git branch map-dev(マップ関連の) サブプロジェクト用に開発ブランチを作成しました。私はgit checkout masterSVN 同期ブランチに戻り、それらのファイルを編集して自分の作業を取り出しました。プロジェクトの初期の部分が表示されなくなったら、git にコミットし (「地図の検索内容が非表示になりました」というコメントを付けて)、SVN にコミットし、SVN コンテンツをステージングにプッシュしました。これで、ステージング/テスト サーバー上にあるものには、私のものは何もなく、彼のすべてのものはありませんが、それで問題ありません。

数日後、私は自分のmap-devブランチで開発を進め、同僚が SVN にいくつかのものをチェックインしましたが、それは私がやっていることにはあまり影響しませんが、同期を取りたいと思っています。

私はgit checkout master。私はsvn upgit commit -a「SVNから更新」というコメントが付いています。

map-devさて、マスターのこれらの変更でリベースしますよね?それで私はそれを行い、1つか2つの競合を解決します。すべてがおかしなように見えます。master次に、 「非表示にレンダリングされたマップ検索」と呼ばれるコミットした変更が最新のものであることに気付きました。私の開発ブランチに最近のコミットはありません。それは、レポが最初にコミットされたときの様子でした。

そう。git revert --hard ORIG_HEADリベース前の状態に戻っていました。私が欲しいのは、私が入れたCSVの変更ですが、master私の作業を非表示にしたコミットではありません。どうすればいいですか?

4

1 に答える 1

1

彼のコードを開発ブランチにマージすることをお勧めします。

git checkout map_dev
git merge master

次に、コードを削除したコミットを元に戻します。

git revert <sha1>

からコードを削除したコミットの SHA1 はどこにありますかmaster。これで、ブランチに彼のコードがあり、map_devクリーンアップを差し引いたものになります。masterそこに着いたら、コードを簡単にマージして戻すことができます。

編集: または、次のようなことを行うと、より簡単になる可能性があります (よりクリーンなマージが得られます)。

git checkout master -b temp
git revert <sha1 of code removal>
git checkout map_dev
git merge temp
git branch -d temp

これにより、コード削除の取り消しがブランチの一番上に置かれるため、マージの競合が少なくなる可能性があります。はっきりとは言えません。

于 2011-03-30T13:58:29.263 に答える