Git树是一个版本控制系统中的数据结构,它记录了项目的历史变化。你可以把它想象成一棵树,树的每个节点代表着一个提交,也就是项目的一个版本。每个提交都包含着对项目文件的一系列修改,以及指向其父节点(上一个版本)的链接。这些提交节点以及它们之间的链接形成了一个有向无环图(DAG),我们通常把它称为“提交树”或“提交图”。
1.第一次初始化
-
git init
: 初始化一个新的Git仓库。 -
git add .
: 将当前目录下的所有文件添加到暂存区。 -
git commit -m ‘first commit’
: 提交暂存区中的文件到版本库,并附上提交消息为“first commit”。 -
git remote add origin git@github.com:帐号名/仓库名.git
: 添加远程仓库,命名为origin,地址为git@github.com:帐号名/仓库名.git。 -
git pull origin master
: 从远程仓库的master分支拉取最新的更改到本地仓库。 -
git push origin master
: 将本地提交推送到远程仓库的master分支。选项-f
用于强制推送。 -
git clone
: 克隆一个远程仓库到本地。
2.工作基本操作
-
git checkout master
: 切换到主分支。 -
git fetch origin
: 从远程仓库获取最新变更。 -
git checkout -b dev origin/master
: 基于主分支创建名为dev的新分支,并将其设置为跟踪远程的master分支。 -
git add .
: 将当前目录下的所有修改添加到暂存区。 -
git commit -m ‘xxx’
: 将暂存区的文件提交到本地仓库,并附上提交消息为'xxx'。 -
git fetch origin
: 从远程仓库获取最新变更。
3.初始化仓库
git init
4.查看仓库当前状态
git status
5.文件相关操作
1) 将文件添加到仓库:
-
git add 文件名
: 将工作区的某个文件添加到暂存区。 -
git add .
: 将当前工作区的所有文件都加入暂存区。 -
git add -u
: 添加所有被跟踪的文件中被修改或删除的文件信息到暂存区,不处理未跟踪的文件。 -
git add -A
: 添加所有被跟踪的文件中被修改或删除的文件信息到暂存区,包括未跟踪的文件。 -
git add -i
: 进入交互界面模式,按需添加文件到缓存区。
2)将暂存区文件提交到本地仓库:
-
git commit -m “提交说明”
将暂存区内容提交到本地仓库 -
git commit -a -m “提交说明”
跳过缓存区操作,直接把工作区内容提交到本地仓库
3)比较文件异同
-
git diff
: 比较工作区与暂存区的差异。 -
git diff 分支名
: 比较工作区与指定分支的差异,远程分支使用remotes/origin/分支名
表示。 -
git diff HEAD
: 比较工作区与最新提交的内容的差异。 -
git diff 提交id 文件路径
: 比较工作区某文件当前版本与历史版本的差异,提交id是目标版本的标识。 -
git diff –stage
: 比较工作区文件与上次提交的差异(1.6版本前用–cached
)。 -
git diff 版本TAG
: 比较从某个版本后的所有改动内容。 -
git diff 分支A 分支B
: 比较分支A和分支B之间的差异,也支持比较两个TAG。 -
git diff 分支A…分支B
: 比较两分支在分叉后各自的改动。
另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 –stat 参数
6.查看历史记录
-
git log
: 查看所有提交记录,包括SHA-A校验和、作者名称、邮箱、提交时间和提交说明。 -
git log -p -次数
: 查看最近指定次数的提交记录,并显示每次提交的详细内容变更。 -
git log --stat
: 简略显示每次提交的内容更改。 -
git log --name-only
: 仅显示已修改的文件清单。 -
git log --name-status
: 显示新增、修改、删除的文件清单。 -
git log --oneline
: 让提交记录以精简的一行输出。 -
git log --graph --all --oneline
: 图形展示分支的合并历史,以及所有提交记录的一行输出。 -
git log --author=作者
: 查询指定作者的提交记录。与grep同时使用需要添加一个--all-match
参数。 -
git log --grep=过滤信息
: 列出提交信息中包含指定过滤信息的提交记录。 -
git log -S查询内容
: 列出提交记录中引入或删除指定内容的提交。S和查询内容之间没有空格。 -
git log fileName
: 查看某文件的修改记录。
7.代码回滚
-
git reset HEAD^
: 将当前HEAD指向的版本回退到上次提交的版本,但保留工作区和暂存区的修改。 -
git reset HEAD^^
: 将当前HEAD指向的版本回退到上上次提交的版本,以此类推,或者使用~
后跟次数指定回退的版本数。 -
git reflog
: 查看引用日志,即查看当前仓库的操作记录,包括HEAD的变动。 -
git reset --hard 版本号
: 将当前HEAD指向的版本回退到指定的版本号,同时重置暂存区和工作区。选项--soft
表示只改变HEAD指针指向,不改变暂存区和工作区;选项--mixed
表示修改HEAD指针指向,暂存区内容丢失,但工作区不变;选项--hard
表示修改HEAD指针指向,暂存区内容丢失,工作区恢复至指定版本状态。
8.版本库相关操作
-
git rm 文件名
: 从版本库中删除指定文件,并将删除操作添加到暂存区。 -
git rm -r --cached folder
: 递归地删除 folder 文件夹及其所有内容的跟踪记录,但不会删除实际的文件。 -
git checkout -- 文件名
: 将版本库中的文件替换工作区的文件,即撤销对工作区文件的修改,恢复到最近一次提交的状态。
9.远程仓库相关操作
同步远程仓库:
git push -u origin master
将本地的master分支内容推送到远程仓库origin,并建立本地master分支与远程master分支的关联。本地仓库内容推送到远程仓库:
git remote add origin git@github.com:帐号名/仓库名.git
将本地仓库关联到远程仓库,命名为origin,地址为git@github.com:帐号名/仓库名.git。从远程仓库克隆项目到本地:
git clone git@github.com:git帐号名/仓库名.git
从远程仓库克隆项目到本地。查看远程库信息:
git remote
查看当前仓库配置的远程仓库信息。-
拉取远程分支到本地仓库:
git checkout -b 本地分支 远程分支 # 会在本地新建分支,并自动切换到该分支 git fetch origin 远程分支:本地分支 # 会在本地新建分支,但不会自动切换,还需checkout git branch --set-upstream 本地分支 远程分支 # 建立本地分支与远程分支的链接
同步远程仓库更新:git fetch origin master
从远程仓库origin的master分支获取最新变更,但不合并到当前分支。
10.分支相关操作
-
git checkout -b dev
: 创建并切换到名为dev的新分支。 -
git branch dev
: 创建名为dev的新分支,但不切换到该分支。 -
git checkout dev
: 切换到名为dev的分支。 -
git branch
: 查看所有分支。
合并分支:
-
git merge dev
: 将名为dev的分支合并到当前分支。这种合并会产生一个新的合并提交,并且合并后的历史记录会显示分支的合并情况。 -
git merge --no-ff -m “merge with no-ff” dev
: 使用普通模式合并名为dev的分支到当前分支。选项--no-ff
表示禁用快速合并(Fast-forward),这样合并后的历史记录中会保留分支的信息,能够清晰地看出曾经进行过合并。
删除分支:
git branch -d dev
查看分支合并图:
git log –graph –pretty=oneline –abbrev-commit
11.git相关配置
安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):
-
git config --global user.name “用户名”
: 设置全局Git用户名为“用户名”。 -
git config --global user.email “用户邮箱”
: 设置全局Git用户邮箱为“用户邮箱”。 -
git config --global user.name
: 查看全局Git用户名是否配置成功。 -
git config --global user.email
: 查看全局Git用户邮箱是否配置成功。
其他配置相关:
-
git config --global --list
: 查看全局设置相关参数列表。 -
git config --local --list
: 查看本地设置相关参数列表。 -
git config --system --list
: 查看系统配置参数列表。 -
git config --list
: 查看所有Git的配置,包括全局、本地和系统级别的配置。 -
git config --global color.ui true
: 设置全局Git颜色显示为true,即启用Git相关颜色显示。
13.撤消某次提交
-
git revert HEAD
: 撤销最近的一个提交,并创建一个新的提交来反转该提交引入的更改。 -
git revert 版本号
: 撤销指定版本号的提交,并创建一个新的提交来反转该提交引入的更改。
14.标签
-
git tag 标签
: 在当前HEAD指向的提交上打上标签。 -
git tag
: 显示所有标签。 -
git tag 标签 版本号
: 给指定的commit版本添加标签。 -
git show 标签
: 显示指定标签的详细信息。
15.clean
-
git clean
: 命令可以用来删除当前目录下没有被 Git 管理的文件,包括编译生成的文件、临时文件等不需要的文件,提高代码仓库的整洁性。命令默认不会删除目录,只会删除文件。如果要删除目录,需要加上 -d 参数。
-git clean -n
: 查看删除文件列表
-git clean -f -x
: 命令来强制删除。