本地库初始化
git init
(注意:.git目录中存放的是本地库的相关子目录和文件,不要删除,也不要胡乱修改)
设置签名
git config user.name [用户名]
git config user.email [email]
一.基本操作
1.状态查看操作
git status
查看工作区,暂存区的状态
2.添加操作
git add[file name]
将工作区的文件添加到暂存区
3.提交操作
git commit[file name](这个是进入vim编辑器里面进行新的操作)
git commit -m "sss " [file name](-m后面的内容就是提交的描述,不用再进入vim编辑器进行操作)
将暂存区的内容提交到本地库
(在vim当中输入set nu可以显示行号 ,wq是退出)
4.文件历史版本的查看
git log
git log --pretty=oneline(便于查看)
git log --oneline(上面的简化版 )
git reflog(能显示后退所需的步骤)
多频显示控制方式:
空格向下翻页
b向上翻页
q 退出
二.前进后退
1.基于索引值操作
git reset --hard [局部索引值]
2.使用 ^ 符号
git reset --hard HEAD^
(一个^表示后退一步,n个表示后退n步)
3.使用 ~符号
git reset --hard HEAD~n
(表示后退n步)
三.reset命令的三个参数对比
1.–soft 参数
仅仅在本地库移动HEAD指针
2,–mixed参数
在本地库移动HEAD指针
重置暂存区
3.–hard参数
在本地库移动HEAD指针
重置暂存区
重置工作区
四.删除文件并找回
前提:删除前,文件存在时的状态提交到了本地库
操作:git reset --hard[指针位置]
1.删除操作已经提交到本地库:指针位置指向历史记录
2.删除操作未提交到本地库:指针位置使用HEAD
五.比较文件差异
git diff[文件名]
将工作区中的文件和暂存区进行比较
git diff[本地库中历史版本][文件名]
将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件
六.分支操作
分支的作用:分支对于团队来说作用太大了。比如说一个项目现在是1.0版,那么开发团队可能要同时进行1.1版和2.0版的开发,这样代码就会出现较大分歧。这时候就需要用到分支了,不同的任务组在不同的分支上开发,互相之间不会影响。再比如说,需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,也就是说,主线上都是稳定的代码,可以直接拿来发布的。
创建分支
git branch[分支名]
查看分支
git branch -v
切换分支
git checkout[分支名]
合并分支
第一步 :切换到接受修改的分支(被合并,增加新内容)上
git checkout[被合并分支名]
第二步:执行merge命令
git merge[有新内容分支名]
解决冲突
第一步:编辑文件,删除特殊符号
第二部:把文件修改到满意的程度,保存退出
第三步:git add[文件名]
第四步:git commit -m"日志信息"
(注意:此时commit一定不能带具体文件名)
git底层采用的就是SHA-1算法
git的文件管理机制相当于把数据看作是小型文件系统的一组快照.每次提交更新时git都会对当前的全部文件制作一个快照并保存这个快照的索引,为了高效,如果文件没有修改,git不再重新存储该文件,而是只保留一个连接指向之前存储的文件。所以git的工作方式可以称之为快照流。
git分支管理的本质是创建和移动指针。
github的远程库
再创建好了以后在git里面可以保存自己的远程库的地址
git remote -v
查看保存的远程库地址
git remote add origin [网址]
保存远程库
推送文件
git push origin [分支名]
克隆
git clone[远程地址]
完整的把远程库下载到本地
创建origin远程地址别名
初始化本地库
拉取
pull=fetch+merge
git fetch [远程库地址别名][远程分支名](只是把远程库的文件拉取到本地,但是不会修改本地为文件)
git merge [远程库地址别名/远程分支名](合并文件内容)
git pull [远程库地址别名][远程分支名]