Skip to content

Git

git pullgit fetch的异同

它们都是从远程仓库获取更新的命令,区别在于:

git pull从远程仓库获取更新后会自动合并到当前分支,实际相当于git fetchgit merge的组合,如果存在冲突则需要手动完成merge

git fetch从远程仓库获取更新后不会自动合并到当前分支,也就是它不会更改当前工作目录的内容。

Git仓库如何迁移?

如果需要迁移仓库并且保留所有的分支、提交和标签,例如从github上迁移一个仓库A到gitlab平台上,并且gitlab平台已经创建一个空仓库B:

  1. 使用git clonegit push
sh
// 本地克隆
git clone --mirror <A repository url>
// 修改远程仓库地址
git remote set-url --push origin <B repository url>
// 推送到B仓库
git push --mirror
  1. 使用git bundle
sh
//在A仓库创建bundle文件
git bundle create repoA.bundle --all
// 将repoA.bundle文件上传到B仓库,在执行clone命令
git clone repoA.bundle <B repository Directory>

WARNING

请确保B仓库是空仓库,如果待迁移的仓库含有子模块,则需要额外处理子模块的迁移。