Git 是一个开源的分布式版本控制系统,用于跟踪文件的变化,特别是源代码的管理。它最初由 Linus Torvalds 为了开发 Linux 内核而创建,现在已成为软件开发中最流行的版本控制工具之一。
Git 的主要特点
分布式架构:
每个开发者的本地仓库都是完整的,而不仅仅是从远程服务器克隆的状态。这使得大多数操作(如提交和查看历史)可以在本地完成,不依赖于网络。
快速性能:
Git 在大多数操作上非常快,因为它的数据结构允许快速访问和修改。
数据完整性:
Git 使用 SHA-1 哈希算法来确保数据的完整性。每一次提交都会生成一个唯一的哈希值,确保内容在存储过程中的一致性。
强大的分支管理:
Git 支持轻量级的分支创建和切换,可以方便地进行实验和特性开发,随后再将分支合并回主分支。
非线性开发:
通过分支和合并,Git 允许多个开发者同时在不同的功能上工作,最终将更改合并到主线。
Git 的基本概念
仓库(Repository):用于存储项目的地方。Git 仓库可以是本地的,也可以是远程的。
提交(Commit):对文件的修改记录。每次提交都有一个唯一的 ID 和描述信息。
分支(Branch):用于开发新特性的隔离环境。主分支通常称为 main 或 master。
标签(Tag):用于标记特定的提交,通常用于发布版本。
暂存区(Staging Area):在提交之前,文件的修改会被放入暂存区,以便形成一个提交。
一、基础指令
git init:
用途描述:用于初始化一个新的 Git 仓库,在一个空目录中创建跟踪文件版本历史所需的隐藏 .git 目录。
# 在一个空目录中执行
cd /path/to/empty/directory
git init
git clone :
用途描述:克隆一个远程仓库到本地,方便在本地进行开发和版本控制。
git clone https://github.com/username/repository-name.git
git add 或 git add.:
用途描述:将文件添加到暂存区,准备进行提交。可以是单个文件路径,.表示当前目录下的所有文件。
git add myfile.txt
# 或添加当前目录下所有文件
git add.
git commit -m “”:
用途描述:提交暂存区的文件到本地仓库,并提供一个描述本次提交更改内容的提交消息。
git commit -m "Added new feature"
git status:
用途描述:查看当前仓库的状态,显示哪些文件被修改、暂存或未被跟踪等信息。
git status
git log:
用途描述:查看提交历史,包括每次提交的哈希值、作者、提交时间和提交消息等信息。
git log
二、分支操作指令
git branch:
用途描述:列出本地分支,显示当前所在分支以及所有本地分支的名称。
git branch
git branch :
用途描述:创建一个新分支,用于并行开发或进行不同的功能开发。
git branch new-feature-branch
git checkout :
用途描述:切换到指定分支,以便在该分支上进行开发。
git checkout new-feature-branch
git merge :
用途描述:将指定分支合并到当前分支,如果两个分支有冲突,需要手动解决冲突后再提交合并结果。
git merge feature-branch
git branch -d :
用途描述:删除已经合并到其他分支的本地分支,以保持分支的整洁。
git branch -d old-branch
三、远程仓库操作指令
git remote add :
用途描述:添加一个远程仓库,通常使用 origin 作为别名,以便与远程仓库进行交互。
git remote add origin https://github.com/username/repository-name.git
git remote -v:
用途描述:查看远程仓库信息,包括远程仓库的名称和 URL。
git remote -v
git push :
用途描述:将本地分支推送到远程仓库的对应分支上,与团队成员共享代码更改。
git push origin main
git pull :
用途描述:从远程仓库拉取最新的更改并合并到当前分支,保持本地仓库与远程仓库同步。
git pull origin main
四、其他常用指令
git stash:
用途描述:暂存当前工作区的修改,当需要切换分支但又不想提交当前的修改时,可以使用这个命令,稍后可以恢复暂存的修改。
git stash
git diff:
用途描述:查看文件的差异,可以比较工作区与暂存区、工作区与 HEAD(最新提交)、两个分支之间等的文件差异。
# 比较工作区与暂存区的差异
git diff
# 比较工作区与 HEAD 的差异
git diff HEAD
git reset :
用途描述:回退到指定的提交,可以强制回退或保留工作区的修改,用于撤销错误的提交或回到特定的版本。
# 强制回退到指定提交
git reset --hard <commit-hash>
# 回退到指定提交但保留工作区的修改
git reset --soft <commit-hash>
git rebase:
用途描述:重新应用一系列提交,可以将一个分支的提交应用到另一个分支上,通常用于整理提交历史或保持分支的线性历史。
git rebase target-branch
git tag :
用途描述:创建一个标签,用于标记特定的提交,可以用于发布版本或标记重要的里程碑。
git tag v1.0
五、文件操作相关
git rm :
用途描述:从版本控制中删除文件,并将其从暂存区和工作目录中移除。
git rm myfile.txt
git mv :
用途描述:重命名文件或移动文件,将文件的重命名或移动操作纳入版本控制。
git mv oldfile.txt newfile.txt
六、查看特定内容
git show :
用途描述:显示指定提交的详细信息,包括提交的哈希值、作者、提交时间、提交消息以及所涉及的文件更改。
git show <commit-hash>
git show ::
用途描述:显示指定提交中某个文件的内容,用于查看特定提交中某个文件的状态,追踪文件的历史变化。
git show <commit-hash>:myfile.txt
七、高级分支操作
git cherry-pick :
用途描述:将指定的提交应用到当前分支,从一个分支中挑选特定的提交,并将其应用到另一个分支上,而不引入其他提交。
git cherry-pick <commit-hash>
git reflog:
用途描述:显示 Git 仓库的引用日志,记录了 HEAD 和分支引用的所有变化,可以用于恢复丢失的提交或回到过去的状态。
git reflog
八、配置相关
git config --global user.name “”:
用途描述:设置全局的用户名,这个用户名会出现在你的提交中。
git config --global user.name "Your Name"
git config --global user.email “”:
用途描述:设置全局的用户邮箱,同样会出现在提交中。
git config --global user.email "your@email.com"
git config --list:
用途描述:列出所有的 Git 配置,包括全局配置和本地仓库配置,方便查看当前的配置设置。
git config --list
九、子模块相关(如果你的项目使用子模块)
git submodule add :
用途描述:将一个外部仓库作为子模块添加到当前项目中,方便管理多个相关项目的代码。
git submodule add https://github.com/username/submodule-repo.git submodule-path
git submodule update --init --recursive:
用途描述:初始化并更新所有子模块,在克隆包含子模块的项目后,获取子模块的内容。
git submodule update --init --recursive
十、远程仓库高级操作
git remote rename :
用途描述:重命名远程仓库的别名,方便管理多个远程仓库或更改默认的远程仓库别名。
git remote rename old-name new-name
git remote prune :
用途描述:删除远程仓库中已经不存在的分支的本地跟踪分支,保持本地远程分支跟踪的整洁。
git remote prune origin
十一、合并冲突处理
git mergetool:
用途描述:启动一个合并工具来帮助解决合并冲突,当合并两个分支出现冲突时,使用合并工具可以更直观地解决冲突。
git mergetool
git diff --merge:
用途描述:查看合并冲突的具体差异,在解决合并冲突时,了解冲突的具体位置和内容。
git diff --merge

被折叠的 条评论
为什么被折叠?



