Git 代码存储位置和在不同平台的提交差异总结

发布时间:2026/5/21 0:57:44

Git 代码存储位置和在不同平台的提交差异总结 实际工作环境中Git提交代码是保存在哪里了 Git 代码存储的三大位置1. 本地仓库你的电脑位置项目目录下的.git文件夹# 查看 .git 文件夹隐藏文件夹 ls -la /d/code/jinqiu/myStudy/.git # 核心存储目录 .git/ ├── objects/ # 所有文件快照、提交对象核心存储 ├── refs/ # 分支和标签的引用 │ ├── heads/ # 本地分支 │ └── remotes/ # 远程分支引用 ├── logs/ # 操作日志reflog ├── config # 仓库配置 └── index # 暂存区存储内容✅ 完整的提交历史✅ 所有版本的文件快照✅ 分支、标签信息✅ 本地配置2. 远程仓库GitHub/GitLab/Gitee等位置托管平台的服务器# 查看远程仓库地址 git remote -v # origin gitgithub.com:IreneJinqiu/myStudy.git (fetch) # origin gitgithub.com:IreneJinqiu/myStudy.git (push)存储内容✅ 完整的提交历史与本地同步✅ 所有分支和标签✅ 协作信息Issues、PR等3. 工作区你的项目文件位置项目目录不包括 .git/d/code/jinqiu/myStudy/ ├── index.html # 正在编辑的文件 ├── style.css # 工作区文件 ├── script.js # 未提交的修改 └── .git/ # 本地仓库隐藏存储内容✅ 当前正在编辑的文件✅ 未暂存的修改✅ 未提交的更改 数据流向图工作区 (Working Directory) ↓ git add 暂存区 (Staging Area/Index) ↓ git commit 本地仓库 (Local Repository) ↓ git push 远程仓库 (Remote Repository) 深入理解 .git/objects 目录这是Git最核心的存储位置# 查看 objects 目录 ls .git/objects/ # 输出示例 # 01/ 1a/ 2b/ 3c/ 4d/ ... info/ pack/存储的对象类型对象类型说明示例Blob文件内容快照每个文件版本对应一个blobTree目录结构记录文件和子目录的关系Commit提交信息作者、时间、提交信息、父提交Tag标签版本标记# 查看最近提交的对象 git log --oneline -1 # abc1234 第一次提交 # 查看这个提交的内容 git cat-file -p abc1234 # tree 1a2b3c... # parent ... # author IreneJinqiu ... # 第一次提交 # 查看文件内容 git cat-file -p 1a2b3c... 实际工作流程中的存储场景1单人开发本地电脑 (.git) ←→ GitHub (远程备份)代码主要在本地远程用于备份和部署场景2团队协作开发者A电脑 (.git) ↓ push/pull GitHub (中央仓库) ↑ push/pull 开发者B电脑 (.git)每个人本地都有完整仓库远程是协作中心 存储空间示例# 查看本地仓库大小 du -sh .git # 例如50M .git # 查看远程仓库大小 # 在 GitHub 仓库页面查看为什么这么大Git 存储的是完整快照不是差异每次提交都保存完整文件即使删除文件历史中仍然存在️ 实际工作中的最佳实践1. 定期同步远程# 每天开始工作 git pull origin main # 每天结束工作 git add . git commit -m feat: xxx git push origin main2. 多备份策略# 可以添加多个远程仓库 git remote add github gitgithub.com:username/repo.git git remote add gitee gitgitee.com:username/repo.git # 同时推送到多个 git push github main git push gitee main3. 本地备份# 克隆到另一个目录作为备份 cd /d/backup git clone /d/code/jinqiu/myStudy myStudy-backup 查看存储位置示例# 1. 查看本地仓库位置 pwd # /d/code/jinqiu/myStudy # 2. 查看远程仓库位置 git remote -v # origin gitgithub.com:IreneJinqiu/myStudy.git # 3. 查看配置文件本地配置 cat .git/config # 4. 查看全局配置全局存储 cat ~/.gitconfig # 5. 查看 SSH 密钥位置 ls ~/.ssh/ 不同环境的存储对比环境存储位置可见性用途开发环境本地 .git开发者本人日常开发、版本管理测试服务器服务器 .git团队CI/CD、自动化测试代码托管平台云服务器团队/公开协作、备份、代码审查生产服务器服务器文件运维运行代码通常没有 .git 总结Git提交代码的存储位置最主要本地.git文件夹你电脑上备份/协作远程仓库服务器GitHub等临时暂存区.git/index当前工作区项目文件关键点✅ 每个开发者本地都有完整仓库✅ 远程仓库是共享的中央存储✅ 工作区是正在编辑的代码✅ 推送到远程后代码才真正备份到云端对于你的项目myStudy本地D:/code/jinqiu/myStudy/.git远程gitgithub.com:IreneJinqiu/myStudy.git工作区D:/code/jinqiu/myStudy/你的代码文件这就是为什么即使删除了本地文件只要还有.git文件夹就能恢复的原因怎么看公司里项目是保存在哪个远程仓库GitHub/GitLab/Gitee等在公司项目中查看远程仓库地址有多种方法让我详细说明 查看远程仓库地址的方法方法1使用 Git 命令最直接# 查看所有远程仓库 git remote -v # 输出示例 # origin https://github.com/company/project.git (fetch) # origin https://github.com/company/project.git (push)方法2查看 Git 配置文件# 查看本地仓库配置 cat .git/config # 找到 [remote origin] 部分 # [remote origin] # url https://github.com/company/project.git # fetch refs/heads/*:refs/remotes/origin/*方法3查看详细信息# 查看远程仓库详细信息 git remote show origin # 会显示 # * remote origin # Fetch URL: https://gitlab.com/company/project.git # Push URL: https://gitlab.com/company/project.git # HEAD branch: main # Remote branches: # main tracked # dev tracked # ...识别不同的代码托管平台根据 URL 格式判断平台URL 格式示例GitHubhttps://github.com/用户名/仓库.gitgitgithub.com:用户名/仓库.githttps://github.com/company/my-project.gitGitLabhttps://gitlab.com/用户名/仓库.gitgitgitlab.com:用户名/仓库.githttps://gitlab.公司域名.com/...https://gitlab.company.com/backend/api.gitGitee码云https://gitee.com/用户名/仓库.gitgitgitee.com:用户名/仓库.githttps://gitee.com/company/project.gitAzure DevOpshttps://dev.azure.com/组织名/项目名/_git/仓库名https://dev.azure.com/company/myproject/_git/repoBitbuckethttps://bitbucket.org/用户名/仓库.gitgitbitbucket.org:用户名/仓库.githttps://bitbucket.org/company/project.git私有部署http://git.公司域名.com/...http://git.company.com/backend/project.git 实际操作示例场景1克隆项目后查看# 1. 克隆项目假设刚拉取代码 git clone https://github.com/company/project.git cd project # 2. 查看远程仓库 git remote -v # origin https://github.com/company/project.git (fetch) # origin https://github.com/company/project.git (push) # 判断这是 GitHub 上的仓库场景2多个远程仓库# 有些项目有多个远程仓库备份/多平台 git remote -v # 可能输出 # origin https://github.com/company/project.git (fetch) # origin https://github.com/company/project.git (push) # backup https://gitlab.com/company/project.git (fetch) # backup https://gitlab.com/company/project.git (push) # gitee https://gitee.com/company/project.git (fetch) # gitee https://gitee.com/company/project.git (push)场景3企业私有部署git remote -v # 可能输出 # origin http://gitlab.internal.company.com/backend/api.git (fetch) # origin http://gitlab.internal.company.com/backend/api.git (push) # 判断这是公司内部 GitLab 服务器️ 其他有用的命令1. 查看所有分支和远程关系# 查看所有分支包括远程 git branch -a # 输出 # * main # develop # remotes/origin/HEAD - origin/main # remotes/origin/main # remotes/origin/develop2. 查看远程仓库的详细信息# 查看远程仓库的 URL 和跟踪分支 git remote show origin # 输出包含 # Remote branches: # main tracked # develop tracked # feature/* tracked3. 查看远程仓库的标签# 查看所有标签 git tag -l # 查看远程标签 git ls-remote --tags origin 公司项目的常见情况1. 私有 GitLab# 公司自建的 GitLab git remote -v # origin http://git.company.com/backend/project.git # 浏览器访问http://git.company.com/backend/project2. GitHub Enterprise# 企业版 GitHub git remote -v # origin https://github.company.com/team/project.git # 浏览器访问https://github.company.com/team/project3. 云托管平台# GitHub git remote -v # origin https://github.com/company-name/project.git # GitLab git remote -v # origin https://gitlab.com/company-group/project.git # 码云 git remote -v # origin https://gitee.com/company-name/project.git 快速识别脚本创建一个脚本来快速识别# 在 Git Bash 中创建函数 function git-remote-info() { echo Git 远程仓库信息 echo # 获取远程 URL REMOTE_URL$(git config --get remote.origin.url) if [ -z $REMOTE_URL ]; then echo ❌ 未找到远程仓库 return fi echo 仓库地址: $REMOTE_URL echo # 判断平台 if [[ $REMOTE_URL *github.com* ]]; then echo ️ 平台: GitHub elif [[ $REMOTE_URL *gitlab.com* ]]; then echo ️ 平台: GitLab elif [[ $REMOTE_URL *gitee.com* ]]; then echo ️ 平台: Gitee (码云) elif [[ $REMOTE_URL *dev.azure.com* ]]; then echo ️ 平台: Azure DevOps elif [[ $REMOTE_URL *bitbucket.org* ]]; then echo ️ 平台: Bitbucket elif [[ $REMOTE_URL *git.* ]]; then echo ️ 平台: 私有 Git 服务器 else echo ️ 平台: 未知 fi echo echo 远程分支: git branch -r | head -10 } # 使用 git-remote-info 实际工作场景场景1刚入职需要找到项目地址# 1. 查看当前项目远程地址 git remote -v # 2. 在浏览器中打开 # 复制 URL去掉 .git 后缀 # 例如https://github.com/company/project.git # 访问https://github.com/company/project场景2需要添加新的远程仓库# 查看现有远程 git remote -v # 添加新的远程 git remote add backup https://gitlab.com/company/project.git # 验证 git remote -v场景3更换远程仓库地址# 查看当前 git remote -v # 修改远程地址 git remote set-url origin https://new-url.com/company/project.git # 验证 git remote -v 总结查看公司项目远程仓库的最快方法进入项目目录执行git remote -v根据 URL 判断平台github.com→ GitHubgitlab.com或gitlab.公司域名→ GitLabgitee.com→ Giteedev.azure.com→ Azure DevOps其他域名 → 可能是私有部署记住URL 格式和域名直接决定了代码托管在哪个平台杭州企业使用最多的远程仓库是什么总感觉GitHub的连接不稳定经常访问不了你的感觉完全正确GitHub在国内的访问确实不稳定-4-9。这也是为什么杭州企业在实际工作中大多会选择国内平台的私有部署版本或国产平台。这就好比虽然大家都知道GitHub是全球最大的开源社区但对于需要保障业务稳定性的公司来说选择一条高速直达的专用车道才是更稳妥的方案。 杭州企业主流代码托管方案根据行业实践和公开案例目前杭州企业主要采用以下方案方案类型代表产品适用企业杭州真实案例私有部署/企业版极狐GitLab(GitLab中国版)中大型企业、对数据安全要求高的公司杭州每刻科技(150人研发团队管理700多万行代码)-1-5云效Codeup阿里云用户、拥抱整套阿里云生态的企业杭州幻熊(发布效率从一周一次提升至每日交付)-3Gitee企业版研发型机构、高校、希望规范开发流程的企业之江实验室(统一管理核心代码资产)-7公有云服务GitHub/GitLab/Gitee中小团队、开源项目、个人开发者适合项目初期或对外开源可以看到杭州每刻科技、之江实验室等企业为了保障研发效率和代码安全都选择了在国内服务器上部署的代码托管平台-1-5-7。 为什么杭州企业不直接用 GitHub就像你感受到的主要原因有三个网络访问不稳定GitHub服务器在国外国内访问容易遇到DNS污染、国际带宽拥堵等问题导致git clone慢、页面打不开直接影响开发效率-4-8。数据安全与合规企业的核心代码是核心资产放在国外服务器上存在数据出境和管理的风险。国内平台能更好地满足数据本地化存储和合规性要求-1-3。更好的本地化支持国内平台提供7x24小时的技术支持、更适合国内开发者的产品文档并能无缝对接钉钉、飞书等企业内部协作工具使用体验更顺畅-5-7。️ 面对这种情况你该怎么办作为开发者在杭州工作可以这样应对了解公司策略首先看看公司内部用的是极狐GitLab、Gitee企业版还是自建的GitLab。这些是国内企业的主流选择。学习通用技能无论平台怎么变Git的基本命令clone,push,pull,branch是完全通用的不用担心技能过时。优化你的GitHub访问修改Hosts文件这是最直接有效的方法通过将GitHub的域名指向国内访问较快的IP地址来改善连接-8。网上可以找到定期更新的GitHub520等项目提供的Hosts内容。使用镜像站点clone代码时可以把https://github.com替换成https://hub.fastgit.xyz这类国内镜像站点的地址下载速度会快很多-8。配置代理工具如果公司允许配置一个合法的网络代理或VPN是解决此类网络问题最彻底的方案-6-10。总而言之你遇到的GitHub访问问题是企业级开发中非常普遍的情况。理解并适应这种国内平台负责稳定生产GitHub负责全球视野的混合模式会让你在未来的工作中更加游刃有余。使用Git提交代码到不同的远程仓库具体提交操作或命令是否不一致完全一致无论你使用的是GitHub、GitLab、Gitee还是公司自建的极狐GitLab核心的Git提交命令都是一模一样的。 核心操作完全一致提交代码的基本流程任何平台都一样# 1. 查看状态 git status # 2. 添加文件到暂存区 git add . # 或添加指定文件 git add index.html # 3. 提交到本地仓库 git commit -m feat: 添加新功能 # 4. 推送到远程仓库 git push origin main无论远程仓库是哪个平台这4个命令完全一样 唯一的不同远程仓库地址不同的地方只在第一次配置远程仓库地址时平台远程仓库地址示例GitHubgitgithub.com:用户名/仓库名.git或https://github.com/用户名/仓库名.gitGitLabgitgitlab.com:用户名/仓库名.git或https://gitlab.com/用户名/仓库名.git极狐GitLabgitjihulab.com:用户名/仓库名.git或https://jihulab.com/用户名/仓库名.gitGiteegitgitee.com:用户名/仓库名.git或https://gitee.com/用户名/仓库名.git公司私有GitLabgitgit.company.com:团队/项目.git或https://git.company.com/团队/项目.git 实际操作对比场景1首次推送代码到 GitHub# 添加远程仓库 git remote add origin gitgithub.com:IreneJinqiu/myStudy.git # 推送 git push -u origin main场景2首次推送代码到 Gitee# 添加远程仓库地址不同 git remote add origin gitgitee.com:IreneJinqiu/myStudy.git # 推送命令完全相同 git push -u origin main场景3首次推送代码到公司极狐GitLab# 添加远程仓库地址不同 git remote add origin gitjihulab.com:company/myStudy.git # 推送命令完全相同 git push -u origin main 同时推送到多个平台很多公司会配置多个远程仓库备份或同时发布到多个平台# 添加多个远程仓库 git remote add github gitgithub.com:IreneJinqiu/myStudy.git git remote add gitee gitgitee.com:IreneJinqiu/myStudy.git git remote add gitlab gitjihulab.com:IreneJinqiu/myStudy.git # 推送到不同平台命令一样只是远程仓库名不同 git push github main git push gitee main git push gitlab main # 或者一次推送到所有平台需要配置 git push --all 常用命令对比表操作GitHubGitLabGitee极狐GitLab克隆仓库git clone urlgit clone urlgit clone urlgit clone url查看远程git remote -vgit remote -vgit remote -vgit remote -v添加远程git remote add origin urlgit remote add origin urlgit remote add origin urlgit remote add origin url提交git commit -m msggit commit -m msggit commit -m msggit commit -m msg推送git push origin maingit push origin maingit push origin maingit push origin main拉取git pull origin maingit pull origin maingit pull origin maingit pull origin main所有命令100%相同 实际工作中的切换场景场景1换公司代码平台不同# 在新公司克隆项目URL不同但命令一样 git clone gitgitlab.company.com:team/project.git # 日常操作完全相同 git add . git commit -m fix: 修复bug git push场景2开源项目同时在GitHub和Gitee发布# 配置两个远程仓库 git remote add github https://github.com/username/project.git git remote add gitee https://gitee.com/username/project.git # 推送到两个平台 git push github main git push gitee main场景3从GitHub迁移到极狐GitLab# 1. 修改远程地址不改本地提交 git remote set-url origin gitjihulab.com:company/project.git # 2. 推送命令不变 git push origin main # 3. 日常操作完全不受影响 git add . git commit -m feat: 新功能 git push # 现在推送到极狐GitLab了 认证方式的区别唯一可能有细微差别的是认证方式但Git命令本身不变认证方式配置方法日常使用SSH密钥生成密钥 → 添加到平台git push直接使用无需输入HTTPS 凭证管理器首次输入账号密码/TokenGit Credential Manager自动处理HTTPS Token在URL中或配置中设置git push自动使用Token# 无论哪种认证推送命令都一样 git push origin main 总结核心要点✅Git命令100%通用与远程平台无关✅ 唯一的区别是第一次配置的远程仓库URL✅ 日常开发add、commit、push、pull、branch、merge操作完全一致✅ 切换平台只需要修改远程地址不需要重新学习Git你只需要学会一套Git命令就能操作所有代码托管平台就像开车一样无论目的地是北京、上海还是杭州方向盘、油门、刹车的操作方式都是一样的。Git就是你的驾驶技术而GitHub/GitLab/Gitee只是不同的目的地而已。

相关新闻