Git代码库安装与管理常用操作

发布于:2025-08-18 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、Git 环境初始化与配置

1.1 安装 Git

  • Windows:从 Git 官网 下载安装包,勾选 “Add Git to PATH” 简化命令行使用。
  • Linux:通过包管理器安装:sudo apt install git(Debian/Ubuntu)或 sudo yum install git(CentOS)。
  • macOS:使用 Homebrew:brew install git,或通过 Xcode Command Line Tools 安装。

1.2 首次配置用户信息

# 设置全局用户名和邮箱(提交代码时显示的身份)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 查看配置信息
git config --list

1.3 配置常用别名(可选)

# 简化常用命令(如用st代替status,co代替checkout)
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm "commit -m"

二、本地代码库基础操作

2.1 初始化新仓库

# 在现有项目目录中初始化Git仓库
cd /path/to/your/project
git init  # 生成.git隐藏目录(仓库核心文件)

2.2 工作区、暂存区、版本库关系

  • 工作区:本地可见的项目文件目录。
  • 暂存区(Index):临时存储待提交的修改,通过 git add 提交到暂存区。
  • 版本库(Repository):.git 目录,存储所有历史版本和元数据,通过 git commit 提交到版本库。

2.3 基础操作流程

# 1. 创建/修改文件后,查看工作区状态
git status  # 显示未跟踪、已修改的文件

# 2. 将文件添加到暂存区
git add filename.txt  # 添加单个文件
git add .  # 添加当前目录所有修改(不包括.gitignore排除的文件)
git add -u  # 只添加已跟踪文件的修改(忽略未跟踪文件)

# 3. 提交暂存区内容到版本库
git commit -m "feat: 添加用户登录功能"  # -m后接提交说明(必填)

# 4. 查看提交历史
git log  # 显示详细历史(按q退出)
git log --oneline  # 简洁显示每条提交(一行一条)
git log --graph --oneline  # 图形化显示分支合并历史

2.4 撤销操作

# 撤销工作区修改(未add的文件)
git checkout -- filename.txt  # 恢复到最近一次commit或add的状态

# 撤销暂存区修改(已add但未commit)
git reset HEAD filename.txt  # 将文件从暂存区移回工作区

# 撤销最近一次commit(保留修改到工作区)
git reset --soft HEAD~1  # HEAD~1表示上一个版本,~2表示上上个

# 彻底回滚到某个版本(谨慎使用!会丢弃后续所有修改)
git reset --hard <commit_id>  # commit_id可通过git log获取

三、分支管理核心操作

3.1 分支概念与作用

  • 主分支(main/master):存放稳定可发布的代码,禁止直接修改。
  • 功能分支(feature/*):开发新功能,如 feature/user-auth
  • 修复分支(bugfix/*):修复生产环境问题,如 bugfix/login-error
  • 发布分支(release/*):准备发布版本,如 release/v1.0.0

3.2 分支操作命令

# 1. 查看分支
git branch  # 显示本地分支(当前分支前带*)
git branch -r  # 显示远程分支
git branch -a  # 显示本地+远程所有分支

# 2. 创建并切换到新分支
git checkout -b feature/payment  # 等价于 git branch feature/payment + git checkout feature/payment
# 或Git 2.23+支持的新命令
git switch -c feature/payment

# 3. 切换已有分支
git checkout main
# 或新命令
git switch main

# 4. 删除本地分支(需先切换到其他分支)
git branch -d feature/old-feature  # -d安全删除(确保已合并)
git branch -D feature/unused-feature  # -D强制删除(未合并也可删)

# 5. 合并分支(如将功能分支合并到main)
git checkout main  # 切换到目标分支
git merge feature/payment  # 合并feature/payment到当前分支

# 6. 解决合并冲突
# 冲突时git status会显示冲突文件,打开文件找到<<<<< HEAD和>>>>>标记的冲突区域
# 手动编辑保留正确代码后,执行:
git add conflicted_file.txt
git commit -m "fix: 解决合并冲突"

四、远程仓库协作(GitHub/GitLab)

4.1 关联远程仓库

# 1. 克隆远程仓库到本地(首次获取项目)
git clone https://github.com/your-username/your-repo.git  # HTTPS方式
# 或SSH方式(需配置SSH密钥,更安全)
git clone git@github.com:your-username/your-repo.git

# 2. 本地仓库关联远程仓库(已有本地仓库时)
git remote add origin https://github.com/your-username/your-repo.git
# 查看远程仓库信息
git remote -v

4.2 拉取与推送代码

# 1. 拉取远程分支最新代码(避免冲突)
git pull origin main  # 拉取远程main分支到本地当前分支

# 2. 推送本地分支到远程
git push origin feature/payment  # 推送本地feature/payment到远程同名分支
# 首次推送新分支需设置上游关联
git push -u origin feature/payment  # 后续可直接用git push

# 3. 推送标签(用于版本发布)
git tag v1.0.0  # 创建标签
git push origin v1.0.0  # 推送单个标签
git push origin --tags  # 推送所有本地标签

4.3 团队协作流程

  1. 从远程 main 分支拉取最新代码:git pull origin main
  2. 创建功能分支:git switch -c feature/xxx
  3. 开发过程中定期提交:git add . && git cm "xxx"
  4. 开发完成后拉取远程 main 分支更新:git pull origin main(解决本地冲突)
  5. 推送功能分支到远程:git push -u origin feature/xxx
  6. 在 GitHub/GitLab 上发起 Pull Request(PR)/Merge Request(MR)
  7. 代码审核通过后合并到 main 分支,删除功能分支。

五、高效技巧与问题排查

5.1 .gitignore 文件配置

创建 .gitignore 文件排除无需跟踪的文件(如编译产物、日志、IDE 配置):

# .gitignore示例
# 排除编译生成的目录
build/
dist/
# 排除日志文件
*.log
# 排除IDE配置(VS Code)
.vscode/
# 排除特定语言文件
__pycache__/  # Python
node_modules/  # Node.js

5.2 stash 暂存工作区

临时切换分支时,可暂存未提交的修改:

# 暂存当前工作区修改
git stash save "暂存登录功能的半成品"

# 查看所有stash
git stash list

# 恢复最近一次stash并删除stash记录
git stash pop

# 恢复指定stash(如stash@{1})
git stash apply stash@{1}  # apply保留stash,pop删除stash

5.3 查看文件修改内容

# 查看工作区与暂存区的差异
git diff filename.txt

# 查看暂存区与版本库的差异
git diff --cached filename.txt

# 查看工作区与版本库最近一次commit的差异
git diff HEAD filename.txt

# 查看两个版本之间的差异
git diff <commit_id1> <commit_id2>

5.4 常见问题解决

  1. 提交信息写错
    git commit --amend -m "correct message"(仅修改最近一次未推送的 commit)

  2. 误删分支恢复
    找到分支最后一次提交的 commit_id:git reflog,然后恢复:git checkout -b recover-branch <commit_id>

  3. 本地分支与远程分支不一致
    拉取时强制覆盖:git pull origin main --rebase(rebase 方式合并,保持历史整洁)

  4. 撤销已推送的 commit
    创建新 commit 抵消旧修改:git revert <commit_id>(安全,不修改历史)

六、进阶操作:Rebase 与 Cherry-pick

6.1 Rebase(变基)保持历史整洁

相比 merge 的 “分叉历史”,rebase 可将分支修改 “嫁接” 到目标分支上,形成线性历史:

# 在功能分支上rebase到main,避免合并节点过多
git switch feature/payment
git rebase main  # 将main的最新修改合并到当前分支,解决冲突后继续
# 冲突解决后:git add . && git rebase --continue
# 放弃rebase:git rebase --abort

# 推送rebase后的分支(需强制推送,谨慎!)
git push origin feature/payment --force-with-lease  # 比--force更安全

6.2 Cherry-pick(挑选提交)

将某个分支的特定 commit 应用到当前分支:

# 1. 在源分支查看commit_id
git log --oneline feature/bugfix  # 假设目标commit_id是abc123

# 2. 切换到目标分支
git switch main

# 3. 应用该commit
git cherry-pick abc123  # 若冲突,解决后git add . && git cherry-pick --continue

七、Git 命令速查表

功能分类 常用命令
配置 git config --global user.name "Name"git config --list
初始化与克隆 git initgit clone <url>
暂存与提交 git add <file>git commit -m "msg"git status
历史查看 git loggit log --onelinegit log --graph
分支操作 git branchgit checkout -b <branch>git merge <branch>
远程协作 git remote add origin <url>git pullgit push
撤销与回滚 git reset --hard <commit>git checkout -- <file>git revert <commit>
暂存与标签 git stashgit stash popgit tag <tagname>git push origin <tag>
进阶操作 git rebase <branch>git cherry-pick <commit>

网站公告

今日签到

点亮在社区的每一天
去签到