简单概念
workapace: 工作区 当前目录
Index/Stage: 暂存区 git add 后添加文件的相关信息(文件名、大小…),暂存区标记了你当前工作区中,那些内容被Git整理的
Repository: 本地仓库 git commit 后同步index的目录树到本地仓库
Remote: 远程仓库
基本操作
git init 在当前目录初始化一个git代码库
git add [file] 添加指定的文件信息到暂存区
git commit -m “添加信息” 注:一定要加-m “” 常常忘掉,报错
git rm [file] 见下面代码片段
[ubpara Garden]$git rm readme.md
error: 下列文件索引中有变更
readme.md
(使用 --cached 保留本地文件,或用 -f 强制删除)
//若要删除add添加到暂存区的文件,但没有commit时,会报错提示
git mv [old] [new] 同时修改暂存区文件的文件名,并同步到工作区
git status 显示有变更的文件
git log [–oneline] [–graph] [–all] [n] 显示版本历史
[--oneline] 简化信息一行显示
[--all] 显示所有分支,不加仅显示当前分支
[--graph] 显示版本信息加颜色(主要在针对多分支)
[n] 显示n条历史信息
git branch -av 查看版本分支(包括本地和远程) 下面会介绍
版本穿梭
HEAD 指向当前处分支的最新的提交点(commit)
1.回退
1.[ubpara Garden]$ git log --oneline
0ae3563 Third
9aaf784 Second
c6ce7be First
a595411 2019.1.17
2.[ubpara Garden]$ git reset --hard c6ce7be //将头指针指向版本号
HEAD 现在位于 c6ce7be First
3.[ubpara Garden]$ git log --oneline //查看当前分支版本已经回退到First
c6ce7be First
a595411 2019.1.17
2.版本恢复
现在又想恢复回原来的工作区
1.[ubpara Garden]$git reflog //查找到之前的版本号
c6ce7be HEAD@{0}: reset: moving to c6ce7be
0ae3563 HEAD@{1}: commit: Third
9aaf784 HEAD@{2}: commit: Second
c6ce7be HEAD@{3}: commit: First
a595411 HEAD@{4}: commit: 2019.1.17
b9c7768 HEAD@{5}: commit (initial): first commit
2.[ubpara Garden]$git reset --hard 0ae3563 //将头指针指向版本号
HEAD 现在位于 0ae3563 Third
3.[ubpara Garden]$git log --oneline
0ae3563 Third
9aaf784 Second
c6ce7be First
a595411 2019.1.17
b9c7768 first commit
注: 若git reset 版本号 (不加–hard ) 只是将暂存区恢复到版本,工作区还没有改变,需要
‘git checkout – README.md’ 清理工作区成变更之前的样子(-- 代表原来的)
总结:不同版本之间的穿越,基于获取不同版本的版本号(哈希数),然后将头指针指向此版本(reset --hard),同时同步工作区.
分支管理
指令操作
git branch -av //查看分支
不加'-av':列出所有本地分支
'-a':列出所有本地分支和远程分支
'-v':列出分支的细节信息
git branch -d [branch-name] //删除分支
(注意:删除分支的时候,不能在当前分支,而同时删除当前分支)
git branch -D [branch-name] //丢弃一个没有被合并过的分支,-D强行删除
git checkout -b [branch-name] //新建一个分支,并且切换到该分支 (不加-b 依然停留在当前分支)
==相当于
git branch [branch-name]
git checkout [branch-name]
git checkout [branch-name] //切换分支,并更新工作区
git checkout - //切换到上一个分支
git merge [branch-name] //合并指定分支到当前分支
主分支:当初始化后(git init) 第一次提交(git commit)会自动生成master 主分支,master主分支一旦生成,不能删除
第一次使用合并分支的时候,会冒出疑问,若同一个地方修改了如何合并分支。不用担心,若出现冲突,当前分支的文件中会将其内容都添加到工作区(如下)。当你进行修改,提交到仓库才行。
<<<<<<< HEAD
# branch +2
=======
# branch +1
>>>>>>> new
分支策略
1.master分支应该是非常稳定的,仅用来合并分支、发布新版本
2.一般会新建一个分支dev
标签管理
标签总是和某个commit挂钩,如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签
git tag [tag-name] //为当前commit打一个新的标签
git tag [tag-name] [版本号] //在此版本号打一个新的标签
git tag -a [tag-name] -m "message" [版本号]
git tag //查看所有标签
git show [tag-name] //查看标签信息
git tag -d [tag-name] //删除标签
远程仓库
本地Git仓库和GitHub仓库建立连接–>廖雪峰Git教程
git remote add origin git@github.com:zhoupara/Garden.git //关联
远程库名
git push -u origin master //将master分支的内容推送到origin远程库
git clone git@github.com:zhoupara/Garden.git //从远程库克隆