Git常用命令详解:掌握版本控制的核心操作

Git作为世界上最流行的分布式版本控制系统,以其强大的分支管理、高效的协同工作能力和完善的版本追溯功能,深受广大开发者喜爱。熟练掌握Git的常用命令是每一位程序员必备的技能。本文将深入解析Git中那些最为基础且实用的命令,助您在日常开发工作中游刃有余。

一、初始化与配置

1. git init

用途: 在当前目录下创建一个新的Git仓库。

git init

执行此命令后,Git会在当前目录下生成一个隐藏的.git目录,其中包含了管理仓库所需的必要文件和数据结构。至此,该目录便成为了Git仓库的根目录,您可以开始在此处进行版本控制。

2. git config

用途: 设置Git的全局或局部配置选项。

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

使用git config可以设置Git的用户信息、编辑器偏好、代理设置等。上述命令设置了全局的用户名和电子邮件地址,它们将随您的每一次提交一同记录。如果您需要为特定仓库设置不同的配置,去掉--global即可。

二、工作区与暂存区操作

3. git add

用途: 将工作区的文件添加到暂存区(Staging Area)。

git add <file>
git add .

git add <file>将指定文件的当前状态添加到暂存区,准备纳入下一次提交。使用git add .可将所有修改、新添加或删除的文件一次性添加到暂存区。

4. git rm

用途: 从工作区和暂存区移除文件,并跟踪其删除状态。

git rm <file>

此命令会从工作目录中删除指定文件,并将其从暂存区移除,以便在下一次提交时记录该文件的删除操作。

5. git restore

用途: 撤销工作区的改动或恢复暂存区的文件到HEAD版本。

git restore <file>           # 恢复工作区文件到最近提交状态
git restore --staged <file>  # 取消对文件的暂存,恢复到HEAD状态

git restore命令可以用来撤销对工作区文件的改动,或者将已暂存的文件恢复到最近提交的状态,不保留本地更改。

三、提交与版本回溯

6. git commit

用途: 将暂存区的改动提交到本地仓库,形成一个新的提交点。

git commit -m "Commit message describing changes"

通过-m参数后跟提交说明,将暂存区的所有改动保存为一个提交对象,并附带提供的说明文字。提交是Git版本控制的基本单元,每个提交都包含一个指向父提交的指针和一组改动。

7. git commit --amend

用途: 修改最近一次提交的信息或合并未暂存的改动。

git commit --amend -m "New commit message"

此命令允许您修改最近一次提交的说明,或者将当前未暂存的改动合并到最近那次提交中,从而保持提交历史的整洁。

8. git log

用途: 显示提交历史,包括作者、日期、提交信息等。

git log
git log --oneline --graph --decorate

git log默认显示详细的提交历史。加上--oneline--graph--decorate参数,可以得到简洁、图形化且带有分支标记的提交历史视图。

9. git reset

用途: 重置当前分支的HEAD指向,撤销提交或回滚暂存区和工作区的改动。

git reset HEAD <file>         # 从暂存区移除文件,保留工作区改动
git reset --hard HEAD~1       # 回退至上一个提交,丢弃所有未提交的改动
git reset --hard <commit-id>  # 强制回退到指定提交,丢弃所有后续提交和未提交的改动

git reset提供了不同级别的重置操作,可以根据需要撤销暂存、回滚提交或彻底回到过去的某个提交状态。

四、分支与合并

10. git branch

用途: 列出、创建或删除分支。

git branch                  # 列出所有本地分支
git branch new-branch       # 创建名为new-branch的新分支
git branch -d old-branch    # 删除已合并的old-branch分支
git branch -D stubborn-branch # 强制删除未合并的stubborn-branch分支

通过git branch命令,您可以查看、创建和删除分支,便于在不同开发线程间切换和管理代码版本。

11. git checkout / git switch

用途: 切换到指定分支或恢复工作区文件。

git checkout <branch>
git switch <branch>

git checkout <file>           # 从HEAD恢复单个文件到工作区
git switch --discard-changes <file> # 类似效果,适用于较新版本Git

git checkout(或git switch,推荐在较新版本Git中使用)用于切换分支或恢复工作区文件到指定提交或分支的状态。注意,对于文件恢复操作,git switch在较新版本中提供了更明确的选项。

12. git merge

用途: 合并指定分支到当前分支。

git merge <branch>

执行此命令后,Git将尝试将指定分支的改动合并到当前分支,如果合并过程中遇到冲突,需要手动解决冲突并再次提交。

13. git rebase

用途: 将当前分支的提交历史“重放”到另一分支顶部,实现线性化的提交历史。

git rebase <branch>

git rebase用于在保持提交内容不变的前提下,改变提交的历史顺序,使其看起来像是直接基于目标分支进行的开发。这有助于保持分支历史的清晰和整洁,但需要注意可能会引入冲突,且不应在已推送至公共仓库的分支上执行。

五、远程操作

14. git fetch

用途: 从远程仓库获取最新的分支和提交信息,但不自动合并。

git fetch origin

git fetch从指定的远程仓库(如origin)拉取所有分支的最新提交信息,但不会自动合并到本地对应分支,而是将远程分支更新保存为远程跟踪分支(如origin/main)。

15. git pull

用途: 获取远程分支的最新改动并自动合并到当前分支。

git pull origin main

git pull相当于git fetch后紧跟git merge,它会从远程仓库拉取指定分支的最新提交,并尝试将其合并到当前分支。

16. git push

用途: 将本地分支的提交推送到远程仓库。

git push origin <local-branch>:<remote-branch>

此命令将本地指定分支的提交历史推送至远程仓库的相应分支。若省略远程分支名,默认推送到同名分支。如果远程分支不存在,且远程仓库允许自动创建分支,会创建新的远程分支。

六、其他实用命令

17. git status

用途: 查看当前工作目录和暂存区的状态。

git status

git status是日常开发中频繁使用的命令,它显示哪些文件被修改、新增、删除以及哪些文件处于暂存状态,帮助您了解当前工作区与最近提交之间的差异。

18. git diff

用途: 显示工作区、暂存区或提交之间的文件差异。

git diff              # 工作区与暂存区之间的差异
git diff --cached     # 暂存区与最近提交之间的差异
git diff <commit-id>  # 工作区与指定提交之间的差异

git diff命令用于比较不同版本间的文件内容差异,是定位代码变化、排查问题的重要工具。

19. git stash

用途: 暂存当前未提交的改动,清理工作区以便进行其他任务。

git stash
git stash list
git stash apply      # 恢复最近一次stash的内容
git stash drop       # 删除最近一次stash

git stash用于临时保存未提交的改动,使工作目录恢复到干净状态,便于切换分支或处理紧急任务。之后可以通过git stash applygit stash pop恢复暂存的改动。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值