Git作为分布式版本控制系统,是现代软件开发中不可或缺的工具,它能够高效地管理代码变更、协作开发以及追踪项目历史,掌握Git的简单命令是每一位开发者的必备技能,下面将详细介绍常用的Git命令及其使用场景。

初始化与配置
在使用Git管理项目之前,首先需要初始化一个仓库或配置用户信息。git init
命令用于在当前目录创建一个新的Git仓库,执行后会在该目录下生成一个隐藏的.git
文件夹,其中包含了所有的版本控制信息,在项目文件夹中运行git init
,即可将本地目录转变为Git仓库,而用户信息配置则是通过git config
命令完成的,包括用户名和邮箱,这些信息会记录在每一次的提交中,全局配置使用git config --global user.name "Your Name"
和git config --global user.email "your.email@example.com"
,其中--global
参数表示配置对当前用户的所有仓库生效;若仅对当前仓库生效,则去掉该参数。
仓库状态与文件操作
了解仓库的当前状态是日常操作的基础,git status
命令可以显示工作目录和暂存区的状态,包括哪些文件被修改、哪些文件未被跟踪等,通过git status
,开发者可以清晰地知道哪些文件需要被提交。git add
命令用于将文件从工作区添加到暂存区,这是提交前的必要步骤。git add filename.txt
将指定文件添加到暂存区,git add .
则添加所有修改和新增的文件(不包括被删除的文件),如果需要添加被删除的文件,可以使用git add --all
,当文件添加到暂存区后,git commit
命令将暂存区的文件提交到本地仓库,-m
参数用于添加提交说明,如git commit -m "feat: 添加用户登录功能"
,清晰的提交说明有助于后续查看历史记录,如果提交后发现需要修改,可以使用git commit --amend
来修改最后一次提交的说明或内容。
版本历史与查看
查看版本历史是理解项目演进过程的关键,git log
命令以时间顺序显示提交历史,包括提交哈希、作者、日期和提交说明,默认情况下,git log
会显示所有提交的详细信息,使用--oneline
参数可以简化输出,每行只显示提交哈希的前几位和提交说明,若需要查看特定文件的修改历史,可以使用git log filename.txt
。git show
命令用于显示某次提交的详细修改内容,如git show <commit-hash>
会显示该提交的元数据和具体变更。git diff
命令用于查看工作区与暂存区之间或暂存区与本地仓库之间的差异,git diff
显示工作区与暂存区的差异,git diff --staged
显示暂存区与本地仓库的差异,这对于确认即将提交的内容非常有帮助。
分支管理
分支是Git的核心特性之一,它允许开发者在不同的功能或修复上独立工作而互不干扰。git branch
命令用于列出、创建和删除分支。git branch
会显示所有本地分支,当前分支前会有标记;git branch new-branch
创建一个名为new-branch
的新分支;git branch -d old-branch
删除已合并的分支,-D
参数强制删除未合并的分支,切换分支使用git checkout
命令,如git checkout new-branch
切换到new-branch
分支,如果分支不存在且指定了提交哈希或路径,git checkout -b new-branch
会基于当前分支创建并切换到新分支。git merge
命令用于将指定分支合并到当前分支,例如在main
分支上运行git merge feature-branch
,会将feature-branch
的修改合并到main
分支,如果存在冲突,需要手动解决后再次提交。

远程仓库操作
远程仓库是团队协作和代码托管的基础,通常使用GitHub、GitLab等平台。git remote
命令用于管理远程仓库,git remote -v
显示所有远程仓库的名称和URL,git remote add origin https://github.com/username/repository.git
添加一个名为origin
的远程仓库。git push
命令将本地分支的提交推送到远程仓库,git push origin main
将本地的main
分支推送到远程的origin
仓库;首次推送或需要设置远程分支跟踪时,可以使用git push -u origin main
,-u
参数会建立本地分支与远程分支的跟踪关系。git pull
命令用于从远程仓库拉取并合并代码,相当于git fetch
和git merge
的组合,git pull origin main
会拉取远程main
分支的修改并合并到当前分支。git fetch
则仅拉取远程仓库的更新而不合并,适合在合并前查看远程变更。
撤销与恢复
在开发过程中,撤销操作是不可避免的。git reset
命令用于撤销提交或重置暂存区,git reset --soft HEAD~1
将最后一次提交回退到暂存区,文件保留在工作区;git reset --mixed HEAD~1
将最后一次提交回退到工作区,这是默认行为;git reset --hard HEAD~1
彻底丢弃最后一次提交及其所有修改,需谨慎使用。git checkout
或git restore
(新版Git推荐)可以恢复文件到最近一次提交的状态,如git restore filename.txt
会将工作区的filename.txt
恢复为暂存区或最近提交的状态,如果需要撤销已推送的提交,可以使用git revert
,它会创建一个新的提交来抵消指定提交的修改,避免历史记录混乱。
常用命令速查表
命令分类 | 命令格式 | 功能描述 |
---|---|---|
初始化与配置 | git init | 初始化Git仓库 |
git config --global user.name | 设置全局用户名 | |
git config --global user.email | 设置全局邮箱 | |
仓库状态与文件 | git status | 查看仓库状态 |
git add . | 添加所有文件到暂存区 | |
git commit -m "msg" | 提交暂存区文件到本地仓库 | |
版本历史与查看 | git log --oneline | 查看简化版提交历史 |
git diff | 查看工作区与暂存区差异 | |
git show |
显示某次提交的详细修改 | |
分支管理 | git branch | 列出本地分支 |
git checkout -b new-branch | 创建并切换到新分支 | |
git merge feature-branch | 合并指定分支到当前分支 | |
远程仓库操作 | git remote add origin | 添加远程仓库 |
git push origin main | 推送本地分支到远程仓库 | |
git pull origin main | 拉取远程仓库更新并合并 | |
撤销与恢复 | git reset --soft HEAD~1 | 撤销最后一次提交到暂存区 |
git restore filename.txt | 恢复文件到最近提交状态 | |
git revert |
撤销指定提交的修改 |
相关问答FAQs
问题1:如何撤销已经提交到远程仓库的提交?
解答:撤销已推送到远程仓库的提交,推荐使用git revert
命令,首先通过git log
找到需要撤销的提交哈希,然后执行git revert <commit-hash>
,这会创建一个新的提交来抵消目标提交的修改,完成本地撤销后,使用git push origin <branch-name>
将撤销操作推送到远程仓库。git revert
不会修改历史记录,适合团队协作;如果需要强制修改历史(如删除敏感信息),可使用git reset --hard
后强制推送,但会覆盖远程历史,可能导致协作冲突,需谨慎使用。
问题2:合并分支时出现冲突如何解决?
解答:合并冲突发生时,Git会标记冲突的文件,开发者需要手动编辑这些文件,解决冲突后重新提交,解决步骤如下:1)运行git merge <branch-name>
触发合并,冲突文件中会出现<<<<<<<
、、>>>>>>>
等标记,分别表示当前分支、冲突分隔符和目标分支的内容;2)打开冲突文件,根据业务逻辑修改内容,删除标记符号;3)使用git add <filename>
将解决冲突的文件添加到暂存区;4)运行git commit
完成合并提交,如果无法解决冲突,可使用git merge --abort
取消合并,恢复到合并前的状态。
