菜鸟科技网

git命令行有哪些常用操作技巧?

Git命令行是开发者日常工作中不可或缺的工具,它通过简洁高效的命令管理代码版本、协作开发以及追踪项目变更,要熟练使用Git命令行,需要从基础配置、仓库操作、分支管理、代码合并与冲突解决、远程仓库交互等多个维度系统学习,以下将详细介绍Git命令行的核心使用方法,帮助开发者快速上手并深入应用。

git命令行有哪些常用操作技巧?-图1
(图片来源网络,侵删)

基础配置与环境初始化

在使用Git命令行前,需先进行用户配置,确保每次提交操作都有明确的身份标识,通过以下命令设置全局用户名和邮箱:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

若需针对特定项目配置,可去掉--global参数,改为项目级配置,还可配置默认分支名、差异工具等个性化选项,

git config --global init.defaultBranch main
git config --global diff.tool vscode

本地仓库操作

仓库初始化与克隆

  • 初始化新仓库:在项目目录下执行git init,会在当前目录创建隐藏的.git文件夹,初始化一个空的Git仓库。
  • 克隆远程仓库:通过git clone [仓库URL]命令将远程仓库完整复制到本地,例如git clone https://github.com/user/repo.git

文件状态与暂存管理

  • 查看状态git status显示工作区、暂存区的文件状态,包括未跟踪、已修改、已暂存等分类。
  • 添加文件到暂存区
    • git add [文件名]:添加指定文件。
    • git add .git add -A:添加所有修改和未跟踪的文件。
  • 撤销暂存git reset [文件名]将已暂存的文件移出暂存区,恢复到工作区。
  • 提交更改git commit -m "提交说明"将暂存区内容提交到本地仓库,-m参数后跟提交信息描述。

历史记录查看

  • git log:查看提交历史,显示每次提交的哈希值、作者、时间及提交信息。
  • git log --oneline:以精简格式显示提交历史,每行仅显示提交哈希的前几位和提交信息。
  • git log --graph --all:以图形化方式展示所有分支的提交历史,便于理解分支合并关系。

分支管理

分支是Git的核心功能之一,允许开发者并行开发不同功能,避免相互干扰。

分支基本操作

  • 创建分支git branch [分支名],例如git branch feature-login
  • 切换分支git checkout [分支名],或使用git switch [分支名](Git 2.23+推荐)。
  • 创建并切换分支git checkout -b [分支名]git switch -c [分支名]
  • 查看分支git branch列出本地所有分支,-r参数查看远程分支,-a查看所有分支。

分支合并与删除

  • 合并分支:切换到目标分支(如main),执行git merge [源分支名],将源分支的提交合并到当前分支。
  • 删除分支git branch -d [分支名]删除已合并的分支,-D强制删除未合并的分支。

变基操作

变基(Rebase)是通过重新提交历史来线性化分支历史,例如将feature分支的提交变基到main分支:

git命令行有哪些常用操作技巧?-图2
(图片来源网络,侵删)
git checkout feature
git rebase main

变基后,feature分支的提交会基于main的最新提交重新生成,历史更整洁,但需注意变基会修改提交历史,不建议用于已共享的分支。

远程仓库交互

远程仓库实现本地代码与云端(如GitHub、GitLab)的同步。

远程仓库管理

  • 查看远程仓库git remote -v显示远程仓库名称及对应的推送/拉取URL。
  • 添加远程仓库git remote add [别名] [URL],例如git remote add origin https://github.com/user/repo.git
  • 重命名/删除远程仓库git remote rename [旧别名] [新别名]git remote remove [别名]

推送与拉取代码

  • 推送代码git push [远程仓库名] [本地分支名],例如git push origin main,首次推送可能需要-u参数建立上游分支关联。
  • 拉取代码git pull [远程仓库名] [远程分支名],相当于git fetch+git merge,从远程仓库拉取最新代码并合并到当前分支。
  • 获取更新git fetch [远程仓库名]仅拉取远程仓库更新,不自动合并,需手动执行git merge

标签管理

标签用于标记重要节点(如版本发布),分为轻量标签和附注标签。

  • 创建标签
    • 轻量标签:git tag [标签名],基于最新提交创建。
    • 附注标签:git tag -a [标签名] -m "标签说明",包含标签者、日期等信息。
  • 推送标签git push origin [标签名]推送单个标签,git push origin --tags推送所有未推送的标签。
  • 查看标签git tag列出所有标签,git show [标签名]查看标签详情。

撤销与回退

  • 撤销工作区修改git checkout -- [文件名]丢弃工作区的未暂存修改。
  • 撤销暂存区修改git reset HEAD [文件名]将文件从暂存区移回工作区。
  • 回退提交
    • git reset --soft [提交哈希]:仅撤销提交,保留修改在暂存区。
    • git reset --hard [提交哈希]:彻底撤销提交并丢弃所有修改(慎用)。
  • 撤销已推送的提交:使用git revert [提交哈希]创建一个新的提交来抵消指定提交的影响,避免修改历史。

冲突解决

当多分支对同一文件的同一部分进行修改并合并时,会产生冲突,冲突文件会包含标记:

git命令行有哪些常用操作技巧?-图3
(图片来源网络,侵删)
<<<<<<< HEAD=======>>>>>>> 分支名

解决冲突的步骤:

  1. 手动编辑冲突文件,删除标记并保留正确内容。
  2. 执行git add [文件名]标记冲突已解决。
  3. 提交合并:git commit完成合并操作。

常用命令速查表

功能分类 命令示例 说明
仓库初始化 git init 初始化本地仓库
克隆仓库 git clone [URL] 克隆远程仓库到本地
查看状态 git status 查看工作区和暂存区状态
添加文件 git add . 添加所有修改到暂存区
提交更改 git commit -m "说明" 提交暂存区内容到本地仓库
查看历史 git log --oneline 精简显示提交历史
创建分支 git branch [分支名] 创建新分支
切换分支 git checkout [分支名] 切换到指定分支
合并分支 git merge [分支名] 合并指定分支到当前分支
推送代码 git push origin [分支名] 推送本地分支到远程仓库
拉取代码 git pull origin [分支名] 拉取远程仓库代码并合并
创建标签 git tag -a v1.0 -m "版本1.0" 创建附注标签
撤销提交 git reset --hard [哈希] 硬重置到指定提交,丢弃修改

相关问答FAQs

Q1: 如何撤销本地已提交的代码?
A1: 根据场景选择不同方法:

  • 若提交未推送到远程仓库,使用git reset --hard HEAD~1(撤销最后一次提交并丢弃修改)或git reset --soft HEAD~1(撤销提交但保留修改在暂存区)。
  • 若提交已推送到远程仓库,使用git revert [提交哈希]创建新提交抵消修改,避免历史记录混乱。

Q2: 合并分支时出现冲突如何解决?
A2: 解决冲突的步骤如下:

  1. 执行git status查看冲突文件,冲突文件会被标记为“both modified”。
  2. 手动打开冲突文件,删除<<<<<<< HEAD、、>>>>>>> 分支名等标记,保留需要的代码内容。
  3. 保存文件后,执行git add [文件名]标记冲突已解决。
  4. 执行git commit完成合并提交,冲突解决完毕。
分享:
扫描分享到社交APP
上一篇
下一篇