Git系列(1) ----单人本地库操作
1、Git 安装步骤:
1> 选择需要安装到的文件夹
2>关联右键菜单
3> 文件编辑器选择(保持默认)
4> 命令行窗口选择
5> 通信方式
6> 换行符(Linux LF替换windows CRLF)
7> 命令行窗口类型选择
8> 其他配置选项(保持默认)
9>推送到本地库时的新特性,可以提高速度(可以不选)
10> 完成安装,
- Git 单人开发
1>创建文件路径,cd进入,执行git init初始化操作
2>.git 文件夹放的是本地库相关的子目录和文件,不需要修改。
3>设置签名,分为项目级别/系统用户级别:
注册用户:[email protected] git147258963
项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name teammate_zs
git config user.email [email protected]
系统用户级别:登录当前操作系统的用户范围
git config --global user.name teammate_zs
git config --global user.email [email protected]
级别优先级:
就近原则:项目级别优先于系统用户级别,二者都有时,则采用项目级别的签 名
如果只有系统级别的签名,就以系统用户级别的签名为准
二者同时没有,不允许。必须设置其中一个。
设置信息保存在config文件中:
4>git status 查看状态,需要在项目目录下才可以使用:
本地创建一个文件,再次使用 git status 来查看状态,新增未追踪文件显示为红色:
使用 git add 对文件进行追踪后,显示为绿色,此时文件被提交到暂存区(可以撤回):
如果认为此次add 操作有误,可以执行撤回操作:
git rm --cache text.txt
执行撤回操作后,此时文件状态重新变回到未追踪红色状态:
从新提交到暂存区,并提交到本地库,中间会自动弹出输入界面,需要输入此次提交注释信息:
修改文件后,再次 git status 状态查看(仍然是红色提示,但是提示信息不同:modified):
提交到暂存区:
推送到本地库,可以使用-m 参数来指定此次的注释信息,不必弹出编辑界面:
使用git log 可以实现git 版本的前进和后退,有多次提交版本的记录时,单屏显示不完时,使用空格来翻页,翻页结束后,可以按b来退出。
默认显示详细信息,篇幅较大,可以使用 --oneline来显示精简信息,oneline有两种用法:git log --oneline git log --pretty=oneline
版本的前进和后退,有两种方式:
1> 使用版本号进行绝对定位
git reset --hard [770cd6--版本号)],切换到第三次版本后,本地内容已经发生来变更
2>使用 HEAD^进行相对于当前HEAD指针位置进行相对移动:
该种方式,如果需要一次移动多个版本号,每移动一个版本号,就增加一个^。
git rest --hard HEAD^^^ [相对于当前指针位置移动3个版本]
如果需要移动的版本比较多,则使用数字来进行指定需要后退的版本号:
git rest --hard HEAD~6 [相对于当前指针位置移动6个版本]
git reflog 显示全部的版本信息,git log --oneline 显示当前版本之后的所有版本,当前已经没有版本可以回退,使用git log --oneline 没有信息展示,但是 git reflog还是全量版本信息:
git reset 的三种模式:--soft、--mixid、--hard,分别对应的操作为:
soft :仅仅在本地库移动HEAD指针
mixed:在本地库移动HEAD指针、重置暂存区
hard:在本地库移动HEAD指针、重置暂存区、重置工作区
当前版本指针指向最新的版本:
使用--soft回退到上一个版本,显示为绿色,此时cat test.txt 查看文件内容,发现内容并没有发生变化,但是状态发生了改变了,实际是因为本地库中的状态发生了改变,和工作区中的状态不再一致导致:
重新回到原始状态,使用mixed返回到上一个版本,显示为红色的原因同上,为本地库和暂存区的状态发生了改变,但是工作区的状态没有改变,他们的状态不一致导致:
重新回到原始状态,使用hard返回到上一个版本,状态显示为未更改,因为虽然版本指针发生了改变,但是同时更改的是本地库、暂存区、工作区的指针,更改后仍然一致:
git commit 操作之后,仍然删除了本地的文件,此时有两种可以进行的操作:
前提:创建另外一个文件wantDelete.txt,然后提交到本地库
1.该文件确实需要删除,不只需要删除本地文件,还需要同时提交到本地库中:
2.本地删除完之后,发现误删了文件,需要撤回删除操作(我称之为时空穿梭),不至于误删之后跑路,但此种操作有个前提,就是该版本已经提交到了本地库,否则神仙来了也回天乏术,只能委屈一下发际线,往后再退两公分,重新写一个版本了......
文件的差异对比:
编辑wantDelete.txt 文件,删除一行,增加一行之后,使用diff对比该文件:
git diff 后不跟文件名时,对比的是工作区中的所有文件差异:
分支查看:
分支创建:git branch sub_branch,此时两个分支版本号相同。
使用 checkout 来进行分支切换: git checkout sub_branch,绿色带*为目前所在的分支:
本地修改文件并提交到本地库后,两个分支的版本号已经不同:
同步到主分支:此时如果想要将 sub_branch上的做的分支同步到 master上,必须切换到master分支进行操作。
切换回到master分支并执行merge操作后,两个分支的版本号再次相同:
版本的冲突处理:在主分支上修改了文件,并同步到本地库中:
然后,执行合并操作,该合并操作可以在切换到主分支上进行,也可以在当前分支上进行,区别就是,在哪个分支上进行merge操作,该分支上完成后,即为最新的文件:
提示文件冲突:
cat test.txt 进行文件查看:
手动对该冲突文件进行修改,合并后(打开冲突的文件,删除多余的指示符,<<<<<<,>>>>>,=====。确定内容并编辑保存),使用git add 提交到暂存区:
git add 提交之后,git status 仍然为冲突待合并状态:
需要使用 git commit 进行提交,但是不能指定文件名:
去掉文件名再次提交(完成后待合并的标示已经去掉):