私の職場ではソース管理にSubversionを使用しているので、自分のブランチの利点のためにgit-svnで遊んだり、メインリポジトリに触れずに何度でもコミットしたりしています。
私のgitsvnチェックアウトはローカルであるため、バックアップとして機能するようにネットワーク共有にも複製しました。私の考えでは、デスクトップがダンプを取得した場合、まだコミットする機会がなかった変更を取得するために、少なくともネットワーク共有にリポジトリがあります。
私のワークフローは、デスクトップからの作業、変更、コミットなどです。1日の終わりに、現在のすべての変更でネットワーク共有のリポジトリを更新したいと思います。 git clone repo_on_my_desktop
を使用してネットワーク共有のリポジトリをセットアップしてから、git pull Origin master
を使用してネットワーク共有のリポジトリを更新しました。私が遭遇している問題は、メインのsvnリポジトリにコミットする前にgit rebase
を使用して複数のコミットをスキッシュしたときです。これを行うと、夜間にバックアップしようとすると、ネットワーク共有のリポジトリでマージの競合が発生します。
毎晩新しいgit clone
を実行せずに、デスクトップ上のリポジトリと完全に同期する方法はありますか?
別のリポジトリからプルする場合は、リベースを実行しないでください。
ネットワーク共有の変更を上書きしてもかまわない場合は、次のようにすることができます。
git fetch Origin master
git reset --hard Origin/master
これにより、ローカルマスターがオリジンマスターにリセットされます。
警告:これはハードリセットであり、すべての変更(コミット済み*かどうか)が失われます。
ただし、実際には変更がないことを前提としています。ほとんどの場合、バックアップにすぎません。
*注:技術的に言えば、コミットされた変更は、reflogから期限切れになるまで失われませんが、すべての意図と目的のために、事実上失われます。