Git 命令行常用命令使用说明
目录
- 基本配置
- 仓库操作
- 提交文件
- 推送操作
- 远程连接
- 获取远程更新
- 合并与变基
- 冲突解决
- 实用技巧
基本配置
设置用户信息
# 设置全局用户名和邮箱
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 查看配置
git config --list
常用别名设置(可选)
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
仓库操作
初始化仓库
# 在当前目录初始化新仓库
git init
# 克隆现有仓库
git clone <仓库URL>
git clone https://github.com/username/repo.git
查看状态
git status # 查看工作区和暂存区状态
git status -s # 简洁模式查看状态
提交文件
提交单个/多个文件
# 添加单个文件到暂存区
git add filename.txt
# 添加多个文件
git add file1.txt file2.txt
# 添加当前目录所有文件
git add .
# 添加所有修改和新增文件(不包括删除)
git add -A
# 交互式添加
git add -p
提交更改
# 提交暂存区的文件
git commit -m "提交说明"
# 提交所有已跟踪文件的修改(跳过git add)
git commit -am "提交说明"
# 修改上一次提交
git commit --amend -m "新的提交说明"
# 提交并保持文件在暂存区
git commit -m "提交说明" --no-verify
查看提交历史
git log # 查看提交历史
git log --oneline # 简洁模式
git log --graph # 图形化显示分支
git log -p # 显示具体修改内容
推送操作
推送到远程仓库
# 推送到默认远程仓库(通常是origin)的当前分支
git push
# 推送到指定远程仓库和分支
git push origin main
# 强制推送(谨慎使用!会覆盖远程历史)
git push -f origin main
# 推送所有分支
git push --all origin
# 推送标签
git push --tags
远程连接
管理远程仓库
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin <仓库URL>
git remote add origin https://github.com/username/repo.git
# 修改远程仓库URL
git remote set-url origin <新的URL>
# 移除远程仓库
git remote remove origin
# 重命名远程仓库
git remote rename origin newname
多远程仓库
# 添加多个远程仓库
git remote add upstream https://github.com/original/repo.git
# 推送到不同的远程
git push origin main
git push upstream main
获取远程更新
拉取远程更改
# 获取远程更新但不合并
git fetch origin
# 获取并合并到当前分支(推荐)
git pull origin main
# 等同于 git fetch + git merge
git pull
# 获取所有远程分支
git fetch --all
合并与变基
合并操作
# 切换到目标分支
git checkout main
# 合并指定分支到当前分支
git merge feature-branch
# 合并时创建合并提交(默认)
git merge --no-ff feature-branch
变基操作
# 将当前分支变基到目标分支
git rebase main
# 交互式变基(可修改提交历史)
git rebase -i HEAD~3
# 变基过程中跳过当前提交
git rebase --skip
# 中止变基
git rebase --abort
# 继续变基
git rebase --continue
处理远程有更新的情况
方法1:先拉取再合并(推荐新手)
# 1. 暂存本地修改(可选)
git stash
# 2. 拉取远程最新代码
git pull origin main
# 3. 恢复本地修改(如果使用了stash)
git stash pop
# 4. 解决可能的冲突后提交
git add .
git commit -m "合并远程更新"
方法2:变基方式(保持线性历史)
# 1. 拉取远程更新并变基
git pull --rebase origin main
# 2. 如果有冲突,解决后继续
git add .
git rebase --continue
# 3. 如果变基失败,可以中止
git rebase --abort
方法3:先获取再变基
# 1. 获取远程更新
git fetch origin
# 2. 变基到远程分支
git rebase origin/main
# 3. 推送更新
git push origin main
冲突解决
识别冲突
# 查看冲突文件
git status
# 查看具体冲突内容
git diff
解决冲突步骤
- 打开冲突文件,查找冲突标记:
<<<<<<< HEAD
你的代码
=======
远程代码
>>>>>>> branch-name
-
手动编辑文件,选择要保留的代码,删除冲突标记
-
标记冲突已解决
# 添加解决后的文件
git add filename.txt
# 或者添加所有文件
git add .
- 完成操作
# 如果是合并操作
git commit
# 如果是变基操作
git rebase --continue
# 如果放弃解决
git merge --abort # 放弃合并
git rebase --abort # 放弃变基
使用合并工具
# 使用默认的合并工具
git mergetool
# 配置合并工具(如vimdiff)
git config merge.tool vimdiff
实用技巧
撤销操作
# 撤销工作区的修改
git checkout -- filename.txt
# 撤销暂存区的文件(取消git add)
git reset HEAD filename.txt
# 撤销上一次提交(保留修改)
git reset --soft HEAD~1
# 撤销上一次提交(不保留修改)
git reset --hard HEAD~1
# 恢复误删的文件
git checkout HEAD -- filename.txt
分支操作
# 查看分支
git branch # 本地分支
git branch -a # 所有分支(包括远程)
git branch -r # 远程分支
# 创建分支
git branch feature-branch
# 切换分支
git checkout feature-branch
# 创建并切换分支
git checkout -b feature-branch
# 删除分支
git branch -d feature-branch # 安全删除
git branch -D feature-branch # 强制删除
暂存修改
# 暂存当前修改
git stash
# 查看暂存列表
git stash list
# 恢复最近一次暂存
git stash pop
# 恢复指定暂存
git stash apply stash@{0}
# 清除所有暂存
git stash clear
标签管理
# 创建标签
git tag v1.0.0
# 创建带注释的标签
git tag -a v1.0.0 -m "版本1.0.0"
# 推送标签到远程
git push origin v1.0.0
# 推送所有标签
git push origin --tags
最佳实践建议
- 提交前检查状态:
git status
- 提交时写清晰说明:使用规范的commit message
- 频繁提交:小步快跑,避免大量代码一次性提交
- 定期拉取更新:避免长时间不更新导致大规模冲突
- 使用分支开发:主分支保持稳定,功能开发使用特性分支
- 推送前本地测试:确保代码能正常运行
- 谨慎使用强制推送:避免覆盖他人工作
常用工作流程
标准开发流程
# 1. 获取最新代码
git pull origin main
# 2. 创建特性分支
git checkout -b feature/xxx
# 3. 开发并提交
git add .
git commit -m "feat: 添加xxx功能"
# 4. 推送分支
git push origin feature/xxx
# 5. 创建Pull Request(在GitHub/GitLab上)
紧急修复流程
# 1. 基于主分支创建修复分支
git checkout -b hotfix/xxx main
# 2. 修复并提交
git add .
git commit -m "fix: 紧急修复xxx问题"
# 3. 合并到主分支
git checkout main
git merge hotfix/xxx
git push origin main
记住:Git非常强大但也需要谨慎操作,重要操作前可以先备份或创建临时分支测试。