GIT常用命令:clone init add commit push fetch rebase cherry-pick worktree。及长期记住密码方法。

张开发
2026/4/16 1:44:17 15 分钟阅读

分享文章

GIT常用命令:clone init add commit push fetch rebase cherry-pick worktree。及长期记住密码方法。
文章目录一、命令详解cloneinitaddcommitpushfetchrebasecherry-pickworktree二、经典使用场景从零从远程GIT仓库拉取特定分支分支开发与合并处理本地分支落后于远程受保护分支跨分支开发时的功能commit合并单仓库多分支worktree并行开发配置 Git 记住密码一、命令详解clone将远程仓库完整复制到本地包含所有分支和历史记录。应用场景从GitHub或GitLab下载开源项目到本地开发。团队协作时获取共享代码库。示例gitclone https://github.com/user/repo.gitinit初始化一个新的本地Git仓库生成隐藏的.git目录。应用场景将现有项目转为Git管理。新建项目时初始化版本控制。即使没有云端使用示例gitinitadd将文件改动暂存到索引区准备提交。应用场景选择性地添加部分文件到下一次提交。跟踪新创建的文件。示例gitaddfile.txt# 添加单个文件gitadd.# 添加所有改动gitadd.--all# 这个日常用在超多文件的时候很好用一下子添加了所有commit将暂存区的改动保存到本地仓库生成一个版本记录。应用场景完成一个功能或修复后提交代码。添加有意义的版本注释。示例gitcommit-mfix: resolve login error# 提交信息实在不知道怎么写就交给aipush将本地提交推送到远程仓库同步代码。应用场景团队协作时共享代码更新。发布新功能到主分支。示例gitpush origin mainfetch从远程仓库下载最新数据但不合并到本地分支。 就是因为它不合并到本地分支所以首选fetch而不是pull应用场景检查远程分支的更新情况。避免直接合并时产生冲突。示例gitfetch originrebase将当前分支的提交移动到另一分支的顶端保持线性历史。应用场景整理本地提交记录避免冗余。合并上游分支更新时保持清晰历史。示例gitrebase maincherry-pick选择某个提交应用到当前分支不合并整个分支。应用场景仅需某个特定功能或修复时选择性合并。从其他分支提取单个提交。示例gitcherry-pick abc1234worktree为同一仓库创建多个工作目录允许同时操作不同分支。应用场景并行开发不同功能无需切换分支。快速修复生产环境问题而不影响开发分支。示例gitworktreeadd../hotfix-branch hotfix二、经典使用场景从零从远程GIT仓库拉取特定分支应用场景需要基于远程仓库的某个分支如feature/login开始本地开发但本地尚未克隆仓库或需要切换分支。操作命令git clone -b branch_name remote_url细节-b参数直接指定目标分支避免克隆默认分支如main后再切换。克隆完成后本地会自动创建与远程分支同名的跟踪分支。示例git clone -b feature/login https://github.com/user/repo.git结果本地直接进入feature/login分支并与远程分支关联。失败情况若分支名拼写错误如feat/login会提示Remote branch feat/login not found。分支开发与合并应用场景在独立分支如fix/bug123上完成问题修复后合并到主分支main。操作流程git checkout -b fix/bug123 # 创建并切换分支 git add . # 暂存修改 git commit -m 修复BUG123 # 提交到本地分支 git push origin fix/bug123 # 推送到远程 接下来通过远程GIT仓库进行Pull RequestPR合并而不是直接切换到main操作merge关键点若存在冲突需手动解决后git add标记为已解决。成功结果main分支包含fix/bug123的修改日志显示合并提交。失败示例若代码不是最新直接合并可能导致冲突需中止合并git merge --abort。处理本地分支落后于远程受保护分支场景远程main分支受保护禁止强制推送本地分支落后于远程更新。解决方案git fetch origin # 获取远程最新状态 git rebase origin/main # 变基到远程main分支细节rebase会重写本地提交历史将本地修改“嫁接”到远程最新提交上。若存在冲突需在变基过程中逐个提交解决。大概率中main是最新的如果本地存在冲突就直接把本地的分支删了再重新检出。成功结果本地分支历史线性化且包含远程最新修改。失败风险若已推送过本地分支变基后强制推送git push -f会破坏协作需团队协商。跨分支开发时的功能commit合并场景需要将feature/A分支的部分功能如某个提交合并到feature/B分支。操作命令git checkout feature/B git cherry-pick commit_hash关键点通过git log feature/A获取目标提交的哈希值。若存在冲突解决后需git cherry-pick --continue。示例git cherry-pick a1b2c3d结果a1b2c3d提交的更改应用到feature/B分支生成新提交。失败情况若提交依赖其他未合并的修改可能导致功能异常。单仓库多分支worktree并行开发在单仓库多分支并行开发场景中git worktree是一个高效的工具允许开发者在同一仓库的不同目录中同时检出多个分支。这种场景常见于需要同时处理多个功能或修复多个 Bug 的情况。1为什么使用git worktree传统的git checkout在同一目录下切换分支时会覆盖工作区内容导致开发者无法同时查看或编辑多个分支的代码。git worktree解决了这一问题通过为每个分支创建独立的工作目录避免了频繁切换分支的麻烦。2 操作命令的步骤创建新的工作树使用以下命令为特定分支创建新的工作树目录gitworktreeaddpathbranchpath是新工作树的目录路径branch是要检出的分支名称。切换到新工作树进入新创建的目录即可直接操作该分支的代码cdpath删除工作树完成开发后可以删除不再需要的工作树gitworktree removepath3 步骤的过程创建新工作树时Git 会在指定路径下生成一个独立的工作目录包含该分支的完整代码和历史记录。每个工作树共享同一个仓库的 Git 数据库但拥有独立的工作区和暂存区。删除工作树时仅移除目录不会影响分支或仓库的其他部分。4 步骤的结果成功多个分支的代码可以同时编辑和测试无需频繁切换分支。失败如果路径已存在或分支不存在命令会报错。例如fatal:pathalready exists5 AI 工具偏好git worktree的原因现代 AI 开发工具如代码生成、自动化测试通常需要同时访问多个分支的代码。git worktree提供了以下优势支持并行处理多个分支的任务提高自动化效率。避免频繁切换分支导致的上下文丢失适合 AI 工具的批量化操作。独立的工作目录减少了文件冲突的风险适合多任务并发场景。配置 Git 记住密码Git 提供了多种方式来记住密码或凭据避免每次推送或拉取时重复输入。以下是几种常用方法1 使用 Git 内置的凭据存储在 Git 中启用凭据存储可以将密码保存在内存或文件中运行以下命令启用凭据存储gitconfig--globalcredential.helper store此命令会将凭据保存在~/.git-credentialsLinux/macOS或%USERPROFILE%\.git-credentialsWindows文件中。2 使用缓存模式临时存储若希望密码仅缓存一段时间可以使用缓存模式gitconfig--globalcredential.helper cache默认缓存时间为 15 分钟可通过以下命令调整例如设置为 1 小时gitconfig--globalcredential.helpercache --timeout36003 使用系统钥匙串macOS/WindowsmacOS 和 Windows 提供了系统级钥匙串管理工具macOSgitconfig--globalcredential.helper osxkeychainWindowsgitconfig--globalcredential.helper wincred4 使用 SSH 密钥替代 HTTPS若项目支持 SSH 协议生成 SSH 密钥并添加到 Git 服务如 GitHub/GitLab可彻底避免密码输入生成 SSH 密钥ssh-keygen-ted25519-Cyour_emailexample.com将公钥~/.ssh/id_ed25519.pub内容粘贴到 Git 服务的 SSH 密钥设置页面。5 注意事项使用store模式时密码以明文存储需确保文件权限安全例如设置chmod 600 ~/.git-credentials。对于团队或公共计算机建议使用缓存模式而非永久存储。完成配置后首次操作仍需输入密码后续操作将自动使用存储的凭据。

更多文章