Git命令切换到任意git存储库/分支?

Ale*_*nro 1 git

我有一些部署脚本可以自动将存储库克隆到本地目录.不幸的是,我还没有找到一个处理更新的好方法,所以我只是事先清除了本地目录.这显然非常浪费.

理想情况下,我想要一系列命令,这些命令将保证特定的本地目录成为指定仓库/分支的副本,并且需要最少量的数据传输.因此,如果dir已经在正确的repo/branch上,它将只是更新它.如果它在正确的仓库,而不是正确的分支,它将只切换到新的分支.

我确信有一种方法可以通过检查.git中的一些文件并根据找到的内容执行特定操作来实现这一点,但我希望有一种更简单的方法.

一个重要的注意事项是,本地目录中的任何更改都可以随时丢弃.

可能有一个问题已经回答了这个问题,但我找不到合适的措辞来找到它.

ver*_*nzt 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
Run Code Online (Sandbox Code Playgroud)

请注意,这确实会将旧对象留在repo中.如果您想要不可逆转地删除未引用的对象并清理存储库,则可以运行

$ git reflog expire --expire=now --all
$ git gc --prune=now
Run Code Online (Sandbox Code Playgroud)