Git常用操作

541 阅读2分钟

清除远程仓库已经清除的分支

git remote prune origin

git push --force origin dev 强制推送当前本地的代码到dev分支,会删掉以前的推送记录

Git分支管理

Git 三大特色,分支,暂存区,工作流。工作流不涉及任何命令,通俗一点的称呼就是分支策略。

何谓分支策略 Git的特色之一就是可以灵活的建立分支,因为有分支的存在,才构成了多工作流的特色。事实的确如此,因为项目开发中,多人协作,分支很多,虽然各自在分支上互不干扰,但是我们总归需要把分支合并到一起,而且真实项目中涉及到很多问题,例如版本迭代,版本发布,Bug 修复等,为了更好的管理代码,需要制定一个工作流程,这就是通常意义上的Workflow,也就是我们常说的分支管理策略。

热度最高的分支管理策略 目前使用度最高的工作流前三名分别是以下三种(排名不分先后):

Git Flow nvie.com/posts/a-suc…

GitHub Flow scottchacon.com/2011/08/31/…

GitLab Flow docs.gitlab.com/ee/topics/g…

git 仓库清理

rtyley.github.io/bfg-repo-cl…

回收已经没有引用的旧提交,这可以减小本地仓库的大小

git reflog expire --expire=now --all && git gc --prune=now --aggressive

如何完整迁移git仓库到另一个远程地址

项目中遇到git仓库迁移,很常见。如何把一个项目中所有的分支,tag等迁移到另一个仓库地址,需要执行一个特别的克隆命令,然后镜像push到新的仓库地址。具体步骤如下:
1.打开命令行工具
2.以bare的方式克隆老的仓库

git clone --bare https://github.com/exampleuser/old-repository.git

3.镜像push到新的仓库地址

cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git

4.在电脑中删掉老得仓库,把新的仓库重新拉下来

cd ..
rm -rf old-repository.git

清理git提交记录

git clone --mirror https://github.com/example.git

bfg --delete-files [文件名称] example.git  
bfg --delete-folders [文件夹名称] example.git

在命令行下加入--no-blob-protection命令,可以解除保护。我使用的命令如下

bfg --delete-files libBaiduSpeechSDK.a example.git  --no-blob-protection
bfg --delete-folders TTS example.git --no-blob-protection

清理不需要的数据

cd example.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push