供以后参考。随笔。
git分为工作区、暂存区、对象区(又称之为本地仓库、本地分支)。
命令:git add:将工作区中文件放入缓存区
命令:git commit:将暂存区的内容 提交的 对象区(本地分支)
命令:git Push:将对象区(本地分支)的内容 推送到 远程分支
命令:git pull:将远程分支中的内容 拉取到 对象区(本地分支)
Git中文件的三种状态状态:
Modified
Staged
comminted
工作区 对应的状态 modified
暂存区 对应的状态 staged
对象区 对应的状态 comminted
添加文件命令:touch 文件名
Ctrl +A : 跳转到命令开头
Ctrl + E : 跳转到命令末尾
Ctrl +C : 放弃当前命令跳转到下一行
用户名和邮箱设置
1、Git config --global (给整个计算机设置,一般不用)
2、Git config --system (给当前用户设置)
3、Git config --local (给当前项目设置)
示例:给当前项目设置用户名和邮箱
git config --local user.name 'LYH'
git config --local user.email '[email protected]'
优先级:3 --> 2 -->1
也可以手动打开文件去添加用户名和密码。
常用操作:
命令:git init //当前文件夹由git托管
命令:rm -rf .git //取消git托管
命令:git status //查看状态
命令:git add 文件名 //把指定文件添加到暂存区
命令:git add . //把所有工作区的文件添加到暂存区
命令:git restore --staged 文件名 //把暂存区的文件转移到工作区
命令:git commint -m "注释" //把暂存区的文件添加的对象区(或者说本地仓库)
如果某个文件已经提交,并对其进行了修改,可以放弃修改操作(还原到已提交状态)
命令:git restore 文件名
或者:git checkout -- 文件名
删除
命名:git rm 文件名 //删除指定文件,指定文件从对象区转移到暂存区
执行"git rm 文件名“ 命令后,执行命令:git commit -m "注释",才能将指定文件从git中彻底删除
命令:rm 文件名 //删除指定文件。指定文件从对象区转移到了工作区
要彻底删除,还需要执行命令:git add 文件,把文件从工作区转移到暂存区,然后执行git commit 命令才能彻底从删除
如果执行命令“git rm 文件名”后悔了。则需要先执行命令:git restore --staged 文件名 ,把删除文件从暂存区移到工作区,再执行命令:git restore 文件名,文件就会彻底恢复了。
忽略文件:gitignore
再项目中往往有很多文件是不想提交的。这个时候你需要再git项目中创建.gitignore文件。把需要忽略的文件的文件路径添加到.gitignore文件中
* :通配符
!: 排除符
dir/ :忽略该目录下的所有文件
dir/*.txt :忽略dir目录下的所有txt文件
分支:一个commint链,一条工作的记录线
命令:git branch //查看分支
命令:git branch 分支名 //创建分支
命令:git checkout 分支名 //切换分支
命令:git branch -d 分支名 //删除分支(不能删除当前分支)
其他不能删除的情况:包含“未合并”的分支,删除分支之前先合并
强行删除分支命令:git branch -D 分支名
创建并切换分支:git checkout -b 分支名
细节:
1、如果如果再分支A进行了写操作,但操作局限在工作区(没有add,commit)。在master中能够看到该操作,如果分支A中进行了写操作,最终对A进行了commit(提交到工作区),master分支是看不到的
2、如果在分支A中进行了写操作,但只局限在工作区(没有add commit)。删除A分支是可以成功的
合并:git merge new_branch
命令:git branch -v 查看最近一次提交的记录
分支名(master) :指向当前提交的(commit)。
HEAD:指向当前分支的分支名
可以把分支看成一个单链表,后一次commit保留了前一次commit的信息。
如果一个分支靠前(dev),另一个落后分支(master)。如果不冲突,master可以通过merge直接追赶上dev,称之为fast forward
fast forword本质就是指针移动,分支指针的移动,注意:跳过的中间commit,仍会保留。可以通过git log命令确认。
使用fast forword需要注意的地方
1、使用fast forword合并分支,两个分支会归于一个commit
2、使用fast forword合并分支,会丢失分支信息
命令:git log --graph //用图的方式查看日志
使用fast forword合并分支,日志如下:
Git在merge时,默认使用的是fast forword,也可以禁止使用fast forword来合并分支,
注意点:
1、合并时,两个分支不会归于一点commit,(主动合并的分支会前进一步)
2、分支信息完整
命令:git merge --no-ff 分支名
使用:git log --graph命令查看日志。截图如下::