💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
1\. 全局操作 git --version //git 机器上是否存在 git init --bare project.git //服务端:初始化一个新的仓库 chown -R zhangsan:zhangsan project.git/ //修改仓库的权限 2\. 添加、提交修改、对比、重命名 添加/提交: git add  //添加单个文件 git add --all //添加所有,适合项目初始化或批量提交的时候 git add . //进入某个文件夹根目录,表示添加此目录下面所有变更的文件 git commit -m "操作说明" //提交 对比: git diff HEAD^ -- [readme.md](http://readme.md/) //[readme.md](http://readme.md/)文件与上一个版本比较差异 重命名: git mv a.php b.php //重命名 git status -s //文件关联状态 git commit -a -m "a.php文件修改为b.php" //-a修改的全部提交 git push origin master //推到远程 3\. 日志查看 git log //查看所有日志 git log -2 //查看最近提交的2行 git log --pretty=oneline //以行的形式显示 git log --pretty=oneline --abbrev-commit //行短标识的显示形式 git log --graph --pretty=oneline --abbrev-commit //查看分支合并图,并以行短标识的显示形式 3\. 查看历史命令 git reflog 4\. 回滚版本 git reset --hard commit\_id git reset --hard e9a838d #返回到某个节点,不保留修改。 git reset --soft e9a838d #返回到某个节点。保留修改  回滚到上N个版本的快捷方式: git reset --hard HEAD^ //上1个版本 git reset --hard HEAD^^ //上2个版本 git reset --hard HEAD^^^ //上3个版本 当然如果要回退到上100个版本不可能100个^,可以: git reset --hard HEAD~100 5.撤销修改,恢复删除,获取指定commit\_id信息 工作区: git checkout --  git checkout -- [readme.md](http://readme.md/) git checkout -- . //恢复在当前目录下的所有修改 暂存区: 第1步:git reset --hard  第2步:按工作区的处理方式处理 已经提交版本库: 第1步:git reset --hard commit\_id 第2步:按回退的流程处理 推送到远程库: 恭喜你,无药可救 获取指定commit\_id文件信息: git checkout commit\_id  git checkout e9a838d [readme.md](http://readme.md/) 与git clean 混合使用: git checkout -- . && git clean -xdf 6-1:清除 git clean -df #返回到某个节点 git clean 参数 -n 显示 将要 删除的 文件 和 目录 -f 删除 文件 -df 删除 文件 和 目录 6-2.删除文件 git rm  git commit -m "操作说明" 7.分支操作 查看分支:git branch 创建分支:git branch  分支推送到远程:git push origin  切换分支:git checkout  创建+切换分支:git checkout -b  合并某分支到当前分支:git merge  删除分支:git branch -d  强制删除一个没有合并过的分支:git branch -D  tips:慎用 删除远程分支:git push origin --delete  7-1.重命名远程分支 在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。 查看远程分支:git branch -av 删除远程分支:git push origin --delete  重命名本地分支:git branch -m   推送本地分支:git push origin  8.分支合并保留合并记录 git merge --no-ff -m "merge with on-ff" dev tips:合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并;而fast forward合并就看不出来曾经做过合并,默认不加--no-ff是按fast forward的合并方式。 9.分支临时存储 保存: git stash //备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。不带备注。 git stash save "临时修改1001bug,暂存" //带备注 git stash -a save "临时修改1001bug,暂存" // -a选项会把项目里面新加入的代码文件同时放到暂存区 查看: git stash list //显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复 恢复: git stash apply \[--index\]\[\] //恢复后,stash内容并不删除,你需要用git stash drop来删除 git stash pop \[--index\]\[\] //恢复最新(指定stash)并删除stash 删除: git stash drop \[\] //删除某一个进度,默认删除最新进度 创建分支 git stash branch   //基于暂存区创建分支 清空: git stash clear //清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。 参数解释: \--index 参数:不仅恢复工作区,还恢复暂存区  指定恢复某一个具体进度。如果没有这个参数,默认恢复最新进度 以下命令恢复编号为0的进度的工作区和暂存区 git stash pop -- index statsh@{0} 10.标签(tag)管理 列出所有tag: git tag 详情查看: git show  //查看指定tag包信息 git show v1.0 创建: git tag  //新建一个标签,默认为HEAD git tag v1.0 git tag  commit\_id //指定一个commit id git tag v1.0 b1b76f git tag -a  -m "描述tag的说明" //带有备注tag的信息 git tag -a v1.0 -m "供应链1.0开发完成,上线" b1b76f git tag -s  -m "描述tag的说明" //用私钥签名一个标签,PGP签名标签 git tag -s  -m "供应链1.0开发完成,上线" b1b76f 删除: 未推送到远程: git tag -d  //删除指定tag包 git tag -d v1.0 已推送到远程: 第1步:git tag -d v1.0 //删除本地 第2步:git push origin :refs/tags/v1.0 //删除远程tag 推送: git push   //推送指定tag git push origin v1.0 git push --tags //一次性推送全部尚未推送到远程的本地标签 git push origin --tags 参数解释: origin:远程主机名 11.忽略特殊不用提交的文件 第1步:编写.gitignore文件 第2步:把你需要过滤的文件直接写在.gitignore文件中。 tips: .gitignore要通过版本库管理起来。官方已经提供了很多文件范例参考[https://github.com/github/gitignore](https://github.com/github/gitignore),可以把你需要的直接copy进.gitignore文件中。 12.配置别名 方便管理和使用命令,如git st就表示git status这是不是很爽 git config --global [alias.co](http://alias.co/) checkout git config --global [alias.ci](http://alias.ci/) commit git config --global [alias.br](http://alias.br/) branch git config --global alias.unstage 'reset HEAD' //撤销修改 git config --global alias.last 'log -l' //显示最后1次提交 配置文件存放目录: cat .git/config 删除别名: 直接删除配置文件.git/config alias节点,指定别名的那一行,保存就行 tips:当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中. 13.git服务器管理 管理公钥,用[Gitosis](https://github.com/sitaramc/gitolite) 控制权限,用[Gitolite](https://github.com/sitaramc/gitolite) 14\. 删除不存在对应远程分支的本地分支 查看远程分支状态:git remote show origin 本地版本库中去除远程删除的分支:git remote prune origin 15\. 打包指定commit修改的代码 git archive -o update.zip 待导出的ID(a3a12c4) $(git diff --name-only 待导出的上一个提交ID(3ba0909)) 例:git archive -o update.zip a3a12c4 $(git diff --name-only 3ba0909) Tips: 这个其实就是比较版本之前差异,然后导出不一样的。