做网站的风险分析南京网站开发个人
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 apply或git stash pop恢复暂存的改动。
