前言
因为结合了开发中可能遇到的场景,篇幅较长,不过我觉得很有助于你理解 git 的运作机制,而不是死记硬背命令。
HEAD指针 始终指向的是当前分支的最新版本号,HEAD^, HEAD^^, ^ 的个数 n 或 HEAD~n,n 代表前 n 个版本号。
在项目中直接使用 linux rm 只会删除工作区的文件,git rm 同在删除工作区文件的同时删除 stage 中的,或使用 git rm --cached 只删除 stage 中的。
一些基本的操作
#全局配置git config --global user.name "your username"git config --global user.email youremail@email.comgit config --global color.ui true#mkdir git_proj & cd git_projgit initecho "# readme.md" >> README.mdgit add README.mdgit commit -m "readme commit"# 添加远程仓库 并给它取个别名 origingit remote add origin git@github.com:username/repositoryName.git# 将本地仓库推送至 origin 的 master 分支并与此分支关联(-u 的作用,后期不必在使用)git push -u origin master# 从远程仓库 origin 的 master 分支获取最新源码并下载到 tmp 分支git fetch origin master:tmp# 比对 tmp 分支于 master 分支做了哪些改动git diff master tmp# 合并 tmp 分支到 master 分支git merge tmp# clone copy 一个完整的远端仓库到本地git clone git@github.com:username/repositoryName.git# pull 获取 origin 的 master 分支并直接和当前分支合并# 所以可能会发生冲突git pull origin master
checkout
checkout 命令有两个主要作用:切换分支 和 回滚文件到当前的 stage 版本 或 repository 版本
1、切换分支
# 切换到 new_branch 分支git checkout new_branch# 创建并切换到 new_branch 分支git checkout -b new_branch
2、回滚工作区的文件到最新 stage 版本 或 repository 版本,即从 stage 或 repository 中检出最新版本
# -- 是文件标示符 表名后面的参数为文件 避免产生切换 branch 的歧义git checkout -- <filename>
回滚时会先检查 stage 中是否有对应的文件,如果没有才会使用 repository 中最新的版本。而当对某文件进行了多次修改和 add 操作后,使用 checkout 我们只能将文件回滚到最新一次的 add 的版本。
但在某些场景下我们可能想回滚到 repository 中的最新版本,怎么做呢?配合 reset 命令的可以很容易做到。
先给出命令:
git reset HEAD <filename> & git checkout -- <filename>
这样就可以将工作区的 filename 回滚到 repository 中的最新版本了。具体原理我们将在实例中详细的讲解。
reset
git 的 reset 命令比较绕,需要耐心的理解。简单来说,reset 有三种重置级别,我们需要准确理解每个级别的作用。
soft:回退版本号。作用于 repository
新闻热点
疑难解答