1

ローカルディレクトリへのリポジトリのクローン作成を自動化するデプロイメントスクリプトがいくつかあります。残念ながら、更新を処理するための適切な方法が見つからなかったため、事前にローカルディレクトリを消去するだけです。これは明らかに非常に無駄です。

理想的には、特定のローカルディレクトリが、必要最小限のデータ転送で、指定されたリポジトリ/ブランチのコピーになることを保証する一連のコマンドが必要です。したがって、ディレクトリがすでに右側のリポジトリ/ブランチにある場合は、単に更新されます。正しいリポジトリにあるが、正しいブランチにない場合は、新しいブランチに切り替わるだけです。

.git内のいくつかのファイルを調べて、見つかったものに応じて特定のアクションを実行することでこれを行う方法があると確信していますが、もっと簡単な方法があることを望んでいます。

重要な注意点の1つは、ローカルディレクトリの変更はいつでも破棄できるということです。

これに答える質問がすでにあるかもしれませんが、私はそれを見つけるための正しい言葉遣いを見つけることができませんでした。

4

2 に答える 2

6
$ git fetch <url> <branch>      # get the most up-to-date version of that branch
                                #  (only downloads needed objects)

$ git checkout -f FETCH_HEAD    # force the working tree to match fetched branch

これにより、リポジトリに古いオブジェクトが残ることに注意してください。参照されていないオブジェクトを不可逆的に削除してリポジトリをクリーンアップしたい場合は、いつでも実行できます。

$ git reflog expire --expire=now --all
$ git gc --prune=now
于 2012-07-12T15:23:32.207 に答える
0

重要な注意点の1つは、ローカルディレクトリの変更はいつでも破棄できるということです。

したがって、最初に必要なのは次のとおりです。

git stash
git stash drop

ディレクトリがすでに右側のリポジトリ/ブランチにある場合

「正しいリポジトリ」とはどういう意味かわかりませんが、必要なpwdディレクトリなどをチェックする必要があると思いますcd

ただし、興味深い部分はブランチです。次のコマンドを使用します。

__git_ps1 "%s"

現在のリポジトリでgitの現在のブランチを取得します(または、gitリポジトリでない場合は何も取得しません)。.gitフォルダー、ベアリポジトリ、マージの途中などの特別な出力もあります。

次に、このコマンドの出力を使用して、関心のあるブランチをチェックし、正しいブランチにいるかどうかを確認できます。ただし、すでにブランチを使用している場合でも、目的のブランチをチェックアウトするだけの方がはるかに簡単です。

于 2012-07-12T15:30:03.150 に答える