1. 项目概述作为一名长期在Mac环境下开发的程序员我经常需要将本地项目快速部署到GitHub仓库。这个过程看似简单但其中包含了许多值得注意的细节和技巧。今天我就来分享一套完整的终端操作流程帮助你在Mac上高效完成项目初始化和GitHub上传工作。这个教程特别适合刚接触Git版本控制或者从Windows转Mac开发的程序员。我们将从最基本的终端操作开始逐步深入到Git的高级用法确保你能掌握整个工作流程的核心要点。2. 环境准备与工具配置2.1 检查并安装Git首先打开你的终端Terminal可以通过Spotlight搜索Command空格输入终端快速找到。在终端中输入以下命令检查Git是否已安装git --version如果显示版本号如git version 2.32.0说明Git已安装。如果没有系统会提示你安装。在较新的macOS版本中Xcode Command Line Tools会自动安装Git。你可以通过以下命令触发安装xcode-select --install注意如果你需要特定版本的Git建议通过Homebrew安装。先安装Homebrew/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)然后运行brew install git。2.2 配置Git用户信息在开始使用Git前需要配置你的用户信息这些信息会出现在你的提交记录中git config --global user.name 你的用户名 git config --global user.email 你的邮箱建议使用与GitHub账户相同的邮箱地址。你可以通过以下命令查看当前配置git config --list2.3 生成SSH密钥可选但推荐为了免密码推送代码到GitHub建议设置SSH密钥认证ssh-keygen -t ed25519 -C your_emailexample.com生成后将公钥添加到GitHub账户pbcopy ~/.ssh/id_ed25519.pub然后登录GitHub进入Settings → SSH and GPG keys → New SSH key粘贴你的公钥。3. 项目初始化与本地仓库设置3.1 创建项目目录在终端中导航到你想要创建项目的目录。例如mkdir ~/Projects/my-new-project cd ~/Projects/my-new-project3.2 初始化Git仓库在当前目录初始化Git仓库git init这个命令会创建一个隐藏的.git目录用于存储版本控制信息。你可以通过ls -a查看ls -a3.3 创建.gitignore文件一个好的习惯是在项目开始时就创建.gitignore文件避免将不必要的文件如IDE配置、临时文件等提交到仓库touch .gitignore然后编辑这个文件添加需要忽略的文件模式。例如对于Python项目# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # IDE specific files .idea/ .vscode/ *.swp3.4 创建初始提交添加项目文件后创建你的第一个提交git add . git commit -m Initial commit专业建议提交信息应该清晰明确。好的提交信息应该像这样feat: 添加用户登录功能或fix: 修复首页加载慢的问题。考虑使用约定式提交(Conventional Commits)规范。4. 连接GitHub远程仓库4.1 在GitHub上创建新仓库登录GitHub点击右上角的按钮选择New repository。填写仓库名称建议与本地项目目录同名。你可以选择添加README、.gitignore和license文件但因为我们已经在本地创建了这些所以保持这些选项未选中。4.2 添加远程仓库地址在GitHub仓库创建完成后复制仓库的SSH或HTTPS地址。然后在终端中运行git remote add origin gitgithub.com:your-username/your-repo.git验证远程仓库是否添加成功git remote -v4.3 推送代码到GitHub第一次推送代码时需要使用-u参数设置上游分支git push -u origin main注意GitHub现在默认使用main作为主分支名称而不是master。如果你的本地分支还是master可以使用git branch -M main重命名然后再推送。5. 日常开发工作流程5.1 典型Git工作流程在日常开发中典型的工作流程如下创建新分支进行功能开发git checkout -b feature/new-feature进行代码修改后查看变更git status git diff暂存并提交更改git add . git commit -m 描述你的更改推送分支到远程git push origin feature/new-feature在GitHub上创建Pull Request进行代码审查。5.2 处理常见场景5.2.1 撤销本地修改如果你修改了文件但还没有暂存git checkout -- filename如果已经暂存但未提交git reset HEAD filename git checkout -- filename5.2.2 修改最后一次提交如果你需要修改最后一次提交的信息git commit --amend如果已经推送了提交修改后需要使用强制推送慎用git push --force-with-lease origin branch-name6. 高级技巧与优化6.1 使用Git别名提高效率在~/.gitconfig中添加以下别名可以大大提高工作效率[alias] co checkout br branch ci commit st status last log -1 HEAD unstage reset HEAD -- lg log --color --graph --prettyformat:%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset --abbrev-commit6.2 使用GitHub CLI工具GitHub官方提供了命令行工具gh可以更方便地与GitHub交互。安装方法brew install gh常用命令示例gh repo create gh pr create gh issue list6.3 配置Git自动补全为了让Git命令在终端中支持自动补全可以运行brew install bash-completion然后在~/.bash_profile或~/.zshrc中添加if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi7. 常见问题与解决方案7.1 推送时遇到权限问题如果出现Permission denied (publickey)错误确保SSH密钥已正确添加到ssh-agenteval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519检查GitHub上的SSH密钥是否正确配置。7.2 合并冲突解决当多人修改同一文件时可能出现冲突。解决方法拉取最新代码git pull origin main打开冲突文件查找标记手动解决冲突。标记冲突已解决git add filename git commit7.3 大文件处理GitHub对单个文件有大小限制通常100MB。如果遇到大文件问题使用git-lfsLarge File Storagebrew install git-lfs git lfs install git lfs track *.psd git add .gitattributes如果已经错误提交了大文件需要使用BFG Repo-Cleaner等工具清理历史记录。8. 终端优化建议8.1 使用更好的终端工具虽然macOS自带的终端已经不错但可以考虑以下替代品iTerm2 - 功能强大的终端替代品Tabby - 现代化的跨平台终端Warp - 基于Rust的新式终端8.2 配置更高效的Shell建议使用zsh配合Oh My Zsh框架sh -c $(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)然后启用有用的插件如git插件可以显示当前分支和状态。8.3 使用Git可视化工具对于复杂的Git操作可视化工具很有帮助GitKraken - 功能全面的Git GUISourcetree - Atlassian提供的免费工具VS Code内置的Git功能虽然掌握了终端操作很重要但合理使用工具可以事半功倍。
企业数字化 ERP 产品动态
相关推荐
生物特征认证从原理到落地:模态选型、活体检测与阈值调优实战 身份认证这件事,过去二十年里最主流的做法一直是“你知道什么”和“你拥有什么”——密码、短信验证码、硬件令牌、数字证书,本质上都是在验证一个外部凭证。但这套体系有个绕不开的软肋:凭证可以泄露、可以遗忘、可以被复制、可以被钓鱼。我… · 2026/11/3 21:18:30
Hindsight:让LLM Agent记住“当时怎么想”的事后视角记忆机制 1. 从“hindsight”这个词说起:为什么它值得单独拿出来聊 第一次看到“hindsight”作为项目标题,我脑子里蹦出来的不是某个具体工具,而是一种很具体的体验:你让一个 agent 干完一件事,过两天回头看,发现它当… · 2026/11/3 21:17:29
数字孪生与空间计算在口岸智能监管中的应用 1. 项目背景与核心价值口岸作为国家对外开放的重要门户,其监管效能直接关系到贸易便利化与安全防控的平衡。传统口岸监管模式面临三大痛点:一是二维信息系统难以呈现立体化监管场景;二是分散的感知设备形成数据孤岛;三是人工研判无… · 2026/11/3 21:17:29
我花了两周,把 PyTorch 从头翻了一遍:这 6 张图,能省你三个月弯路 文章目录 一、先聊一个所有人都经历过的瞬间 二、先立个坐标系:PyTorch 到底是什么 先感受一下这个体量 三、五块积木:模块地图 四、六条设计哲学:这才是 PyTorch 的"手感"来源 4.1 GPU-Ready:张量天生就是双栖的 4.2 磁带式自动微分:PyTorch 最骄傲的一件事 这… · 2026/11/4 2:32:15
浅谈商业模糊测试工具protocolfuzzer-青草莓科技 protocofuzzer 是青草莓科技公司独立研发的全栈协议模糊测试解决方案,拥有完全自主知识产权,精准覆盖各类协议漏洞场景,为关键基础设施与网络应用提供主动防御能力。引擎内置231个专业测试套件,覆盖从底层硬件接口到上层应用协议的… · 2026/11/4 2:32:15
SystemVerilog 实现 32 位最低位优先编码器:从接口约定到 XSim 自检 SystemVerilog 实现 32 位最低位优先编码器:从接口约定到 XSim 自检
多个请求同时置位时,优先编码器把请求向量转换成一个索引。本文实现的是最低索引优先:request[0] 优先级最高,request[31] 最低。输入不是 one-hot 也可以工作… · 2026/11/4 2:32:15
Spring系列01:IoC 与 DI 到底解决了什么 你写的「好代码」,可能正在坑自己
先别急着记定义。看一段你八成写过的代码:OrderService 里直接 private UserService userService new UserService();。依赖在类内部写死,OrderService 和 UserService 从出生就绑在一起。
问题很快就来&am… · 2026/11/4 2:32:15
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46