一.基本概念
工作区:本地git管理的文件夹的内容
缓存区:git add将工作区内容更新到缓存区
本地分支:git commit将缓存区内容更新到本地分支
远程分支:git push将本地分支更新到远程服务器端分支
git管理的文件夹内的.gitignore文件可以告诉git不用管理有哪些后缀的文件
若untracked file在版本切换和分支切换前存在于工作区,则该文件会出现在切换后的工作区,且仍处于untrack状态
一个良好的习惯是,再切换分支和切换版本前git add,git commit一遍,保证working tree干净
二.基础指令
git add -A //添加工作区所有文件到缓存区(包括.git,.gitignore等隐藏文件)
git add filename //添加指定文件到缓存区
git commit -m "注释" //将缓存区内容提交到当前分支,并附带备注
git status //比较工作区和分支文件异同(新增或删除了哪些文件)和缓存区的哪些文件还未提交到分支
git clone 仓库url //从远程服务器克隆仓库到本地
git push -u origin master//将远程空仓库克隆到本地后,使用该命令第一次推送本地master分支的所有内容到远端
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
git push //将当前分支push到远程服务器,前提是远程服务器上已有对应分支
git pull //将远程服务器端分支的更新同步到本地分支
git init 仓库名 //在本地工作区创建新的仓库
git push --set-upstream origin //当本地创建新分支想创建远程分支时使用的命令
三.进阶指令
-
指定文件的版本回退
git checkout -- filename //将文件内容恢复到当前缓存区的对应版本
git reset HEAD filename //将该文件的本地分支的版本覆盖缓存区的版本
-
工作区全部内容的版本回退
git reset --hard HEAD^ //回退到上一个commit的版本
git reset --hard 版本号 //上个版本可用HEAD^表示,其余版本号可用git reflog查看;该命令会重置工作区和缓存区为版本库内容(非常实用,我个人用得蛮多的;遇事不决,果断重启emm);若版本回退前有untracked file存在于工作区,切换版本会将该文件带到回退后的版本 -
分支查询、切换操作
git checkout --orphan 分支名 //创建一个与当前分支无关的新分支并切换过去
git checkout -b 分支名 //创建一个从当前分支的子分支并切换过去
git checkout 分支名 //切换到已有的分支
git branch -a //查看本地和远程服务器上的所有分支
git branch -d 分支名 //删除非当前分支的分支
-
其他
git log //显示从最近到最远的提交日志