赞
踩
命令:git init
ps:.git目录存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。
形式:用户名、email地址
作用:区分不同开发人员的身份
辨析:这里设置的签名和登录远程库的账号密码没有任何关系
命令:
项目级别/仓库级别:尽在当前本地库范围内有效
git config user.name tom_pro
git config user.email goodMorning_pro@atguigu.com
信息保存位置:当前目录下.git目录中的config文件,即./.git/config文件
系统用户级别:登录当前操作系统的用户范围
git config --global user.name tom_glb
git config --global user.email goodMorning_glb@atguigu.com
信息保存位置:C:\Users\久莘(当前用户目录)中的.gitconfig文件
级别优先级
就近原则:项目级别优先于系统级别,两者都有时,采用项目级别的签名
如果只有系统用户级别的签名,就以系统用户级别的签名为准
两者都没有不允许
命令:git status,查看工作区、暂存区状态
命令:git commit -m "commit message" filename,将暂存区的内容提交到本地库
HEAD@{移动到当前版本需要多少步}
对HEAD指针进行操作
基于索引值操作【推荐】
命令:git reset --hard 局部索引值
使用cat pom.xml查看pom.xml文件内容,内容如下图,可以看到最后插入的一行注释不见了!
基于^符号,只能往后退
命令:git reset --hard HEAD^(一个^符号代表往后退一步,若要退n步,则HEAD后跟n个^符号)
git log --oneline命令只显示当前版本之前的命令,当前版本之后的版本无法显示
基于~符号,只能后退
命令:git reset --hard HEAD~n(向后退n步)
reset命令的三个参数对比:
--soft参数
仅在本地库移动HEAD指针
--mixed参数
在本地库移动HEAD指针
重置暂存区
--hard参数
在本地库移动HEAD指针
重置暂存区
重置工作区
思想:回到这个文件还在的版本
步骤:
1、往本地库提交文件:
vim aaa.txt
,在工作区新建文件aaa.txt
git add aaa.txt
,将aaa.txt添加到暂存区
git commit -m "new file aaa.txt"
,将aaa.txt提交到本地库
2、删除文件:
rm aaa.txt
,在工作区将aaa.txt删除
git add aaa.txt
,添加到暂存区
git commit -m "delete aaa.txt" aaa.txt
,提交大本地库
3、恢复文件:
git reflog
,查询提交历史
git reset --hard b763b68
,后退到没有删除的那一版,如下图
ll
,查看工作区文件,发现aaa.txt已恢复
总结:
删除操作已经提交到本地库(即上面流程),指针位置指向历史记录,便可恢复文件
删除操作尚未提交到本地库(即删除文件时,没有进行git commit -m "delete aaa.txt" aaa.txt
这一步),指针位置使用HEAD即可
使用vim aaa.txt
对aaa.txt的内容进行修改
使用git diff aaa.txt
命令查看aaa.txt文件修改前后的区别,红色表示修改前的,绿色表示修改后的,该命令是和暂存区的aaa.txt文件进行比较
使用git add aaa.txt
命令将aaa.txt文件添加到暂存区,再使用git diff aaa.txt
命令,会发现,没有区别!
使用git diff HEAD aaa.txt
命令,查看和本地库中aaa.txt文件的区别,HEAD是指针,可换成其他版本的索引
git diff HEAD
命令,不指定文件名,比较工作区中所有的文件
在版本控制过程中,使用多条线同时推进多个任务。
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
1、查看所有分支
命令:git branch -v
2、创建分支
命令:git branch 分支名
创建hot_fix分支,当前分支依然是master
3、分支切换
命令:git checkout 分支名
4、分支合并
首先在hot_fix分支上修改aaa.txt文件,并提交到本地库,如下图所示
此时,master分支并没有变,要想master分支的文件也改变,需要合并hot_fix分支到master
第一步,git checkout master
切换到master分支
第二步,git merge hot_fix
合并hot_fix分支
冲突原因:两个分支恰好修改同一个文件的同一位置
以修改aaa.txt文件为例,aaa.txt的内容如下:
master分支修改aaa.txt文件,修改后的文件内容如下图。并把修改后的aaa.txt提交到本地库
使用cat aaa.txt
命令查看aaa.txt文件内容
会发现:位置1不再仅显示hot_fix分支;位置2是当前分支hot_fix的修改内容,位置3是master分支的修改内容,需要人为选择使用哪个分支
解决冲突
人为操作aaa.txt文件,即使用vim aaa.txt
对文件冲突进行修改
使用git add,git commit命令提交到本地库,注意此时git commit不加文件名
在github上创建仓库
git remote add origin ***.git
,表示给***.git地址取得别名是origin
git remote -v
,查看当前所有远程地址别名
git push origin master
,将本地的 master 分支推送到 origin 主机的 master 分支。
git clone 远程库地址
效果:
完整的把远程库下载到本地
创建origin远程地址别名
初始化本地库
pull=fetch+merge
git pull 远程库别名 远程分支名
git fetch 远程库地址别名 远程分支名
git merge 远程库地址别名/远程分支名
要点
如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取。
拉取下来后如果进入冲突状态,则按照“分支解决冲突”操作解决即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。