工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。个别寄存在 ".git目录下" 下的index文件(.git/index)中,所以咱们把暂存区有时也叫作索引(index)。
版本库:工作区有一个暗藏目录.git,这个不算工作区,而是Git的版本库。
第一步:用户名和邮箱。
别离批改用户名和邮箱,其中--global带和不带的区别在于操作文件是.git/config还是~/.gitconfig,如果你应用的是--system则对应的就是/etc/gitconfig文件。
对于是否在最初带username或email,区别在于你是设置还是查看。
git config [--global] user.name [username]git config [--global] user.email [email]
第二步:主机。
列出所有近程主机,应用-v选项(即:git remote -v),能够参看近程主机的网址,应用show hostname能够查看主机hostname的详细信息。
git remote [show hostname]
增加连贯的近程仓库,其中hostname是给仓库起的名称,uri是仓库地址。
git remote add hostname uri
删除连贯的近程仓库,其中hostname是给仓库起的名称。
git remote rm hostname
批改近程主机oldhostname名称为newhostname。
git remote rename oldhostname newhostname
第三步:初始化。
应用该命令会在目录中创立新的Git仓库,本地化的。
git init
把uri指定的仓库代码克隆到本地来,如果加了可选参数dir,示意克隆到该文件夹下。
git clone uri [dir]
第四步:提交。
从近程服务器拉取代码更新,hostname是对应的仓库名称,branchname是分支名称。
git pull hostname branchname
【不举荐间接用这个】增加文件到缓冲区,你能够指定增加的文件filename,也能够应用-A把文件夹下全副文件增加到缓冲区。
git fetch hostname branchnamegit diff localbranchname hostname/branchname[ -- filepath][ >>filePath]git merge hostname/branchname
【举荐应用这个比拟平安】以上命令的含意:首先从近程的hostname的branchname分支下载最新的版本到hostname/branchname分支上,而后比拟本地的branchname分支和hostname/branchname分支的差异,最初进行合并。
最初可选参数 -- filepath是指定比照的文件,不指定就是全副文件。
最初的可选参数 >>filePath示意把差别文件输入到文件,不便查看。
git add filename|-A
提交代码到本地仓库,-m前面的remark示意对这次提交的形容。
git commit [-m remark]
提交代码到近程服务器,hostname是对应的仓库名称,branchname是分支名称。
git push hostname branchname
第五步:日志。
查看日志(-p显示每次提交的内容差别),前面的那些可选参数是对日志过滤当前再显示,-num举个例子:-2示意查看最近2次的提交历史记录,前面的fileName和branchName不便示意查看特定文件和分支的日志,commit代表查看提交日志。
git log [-p] [-num|fileName|branchName|commit]
显示整个本地仓储的commit,包含所有branch的commit,甚至包含曾经撤销的commit,只有HEAD产生了变动,就会在reflog外面看失去,git log只包含以后分支的commit。
git reflog
第六步:回退。
将特定的filename文件回滚到hashname提交。
git checkout hashname filename
用暂存区的所有文件间接笼罩本地文件,不给用户任何确认的机会,能够了解放弃本地批改。
git checkout .
如果发现最新的一次提交完了加某个文件,它会把最新的提交打回暂存区,并尝试从新提交。
git commit —amend
把add增加的文件filename从缓冲区删除。
git reset -- filename
复原到hashname指定的提交时,不保留批改。
git reset --hard hashname
复原到hashname指定的提交时,保留批改。
git reset --soft hashname
回滚提交,其中HEAD是最新的一次提交别名(git revert是用一次新的commit来回滚之前的commit,git reset是间接删除指定的commit。)。
git revert HEAD|hashname
第七步:比拟。
查看二次提交比照批改了什么,能够看见他们之间的全副更改。
git diff commitFromHashname..commitToHashname
执行该命令能够晓得仓库目前的状态,是否是最新代码,有没有批改等。
git status
查看以后全副文件的批改
git diff HEAD
仅查看变动(changes 【not staged】to be commited)
git diff
仅查看变动(changes 【staged】to be commited)
git diff --staged
第八步:合并。
合并分支branchname到以后沉闷分支。
git merge|rebase branchname
第九步:暂存。
暂存以后正在进行的工作,比方想pull最新代码,又不想加新commit,或者另外一种状况,为了fix一个紧急的bug,先stash,使返回到本人上一个commit,改完bug之后再stash pop,持续原来的工作。
git stash
取出最初暂存的,并从暂存栈移除。
git stash pop
将以后的暂存栈信息打印进去。
git stash list
将暂存栈清空。
git stash clear
将你指定版本号为stash@{num}的工作取出来,不会移除。
git stash apply stash@{num}
第十步:标签。
查看曾经打的标签,如果要进行筛选,能够应用-l增加抉择(比方git tag -l v1.会抉择结尾是v1.标签,而git tag -l .2会抉择结尾是.2的,以此类推别的,*就是一个通配符)。
git tag [-l 筛选表达式]
打一个名称为tagname并增加该标签的正文为tagremark的标签,这种是一般的标签(如果你有GPG私钥,把-a换成-s就是后面的tag了)。
git tag -a tagname [-m tagremark]
提交标签tagname到近程hostname。
git push hostname tagname
提交全副标签到近程hostname。
git push hostname --tags
删除标签tagname(本地的)。
git tag -d tagname
删除标签tagname(近程的)。
git push hostname -d tag tagname
第十一步:分支。
查看分支状态,如果应用-r(即:git branch -r)示意查看近程分支状态,-a选项查看所有分支。
git branch
创立一个名称叫branchname的分支,此分支初始化领有的是你创立此分支时沉闷分支。
git branch branchname
切换以后沉闷分支为branchname。
git checkout branchname
删除本地指定分支branchname。
git branch -d branchname
删除近程指定分支branchname。
git push hostname --delete branchname
批改本地分支oldbranchname的名称为newbranchname。
git branch -m oldbranchname newbranchname
实现在本地删除近程曾经不存在的分支。
git fetch --prune