根据一个例子来进行理解大致整个提交的流程:(Linux环境下)
先创建一个目录:mkdir MyProject
然后进入到该目录:cd MyProject
初始化该目录(创建仓库):git init(这个时候,会在MyProject目录下存在一个隐藏文件.git,Git就是通过该文件来进行文件的跟踪)
在该目录下写自己需要的文件:touch README.md
将文件放到暂存区:git add README.md
将文件提交到Git仓库:git commit -m "add a readme file"
查看文件的状态:git status
只同步当前分支的代码:git pull
Untracked files(未跟踪的文件):指的就是那些在工作区新添加的文件。
将最后一次提交到Git仓库的文件恢复到暂存区域:git reset HEAD <file> ...
如果自己在工作区新添加了一个文件,并执行操作:
git add file
那么再执行:
git reset HEAD
那么效果就是撤销了:git add file的这一步操作
当我们刚把一个文件保存到暂存区域,然后又在工作区将文件的内容进行了修改,此时执行:
git checkout -- <file>...
那么执行的效果是:Git会用暂存区域的文件将我们工作区的文件覆盖
在工作区域:显示的颜色是红色;在暂存区域:显示的颜色是绿色
查看提交的历史记录:git log
git log --decorate:显示HEAD的指向
git log --decorate --oneline:一行只显示一个快照
git log --decorate --oneline --graph --all:以图像化的方式显示所有分支,并显示HEAD的指向,一行只显示一个
stage:驿站 repository:仓库
git reset --soft HEAD~
移动HEAD的指向,将其指向上一个快照
git reset --mixed HEAD~
移动HEAD的指向,将其指向上一个快照;然后将HEAD移动后的快照回滚到暂存区域
git reset --hard HEAD~
移动HEAD的指向,将其指向上一个快照;然后将HEAD移动后的快照回滚到暂存区域;最后将暂存区域的文件还原到工作目录
将快照回滚到指定版本(id用了哈希算法。。。根据指定的id可以往前滚,也可以往后滚):git reset id(这个id就是git log之后显示结果中的那些乱七八糟的数字)
比较暂存区域与工作目录:git diff
创建分支:git branch 分支名
切换分支:git checkout 分支名
repo sync #同步代码(使工作区的代码和server上的代码相同)
HEAD #表示当前版本,HEAD~:表示上一个版本,HEAD~~:表示上上个版本,HEAD~23:表示往上23个版本