Git&GitHUP总结
一、git简介
1、git结构
2、git 和 代码托管中心
代码托管中心的任务:维护远程库
局域网环境下:
GitLab 服务器
外网环境下:
GitHub
码云
3、本地库和远程库
二、git 命令行操作
1、本地库初始化
git init
.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改
2、设置签名
形式
用户名:tom
地址 : houchen@163.com
作用:区分不同开发人员的身份
注意:这里设置的签名和登录远程库(代码托管中心)的账号密码没有任何关系
命令:
项目级别/仓库级别:仅在本地库范围内有效
git config user.name xxx
git config user.email xxx@xx,com
信息保存的位置:.git/config
系统用户级别:登录当前系统的用户范围
git config --global user.name xxx
git config --global user.email xxx@xx,com
信息保存位置:~/.gitconfig 文件
级别优先级
就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
如果只有系统用户级别的签名,就以系统用户级别的签名为准
二者都没有不允许
3、基本操作
1)状态查看操作:
git status
查看工作区,暂存区的内容
2)添加操作( 工作区 --> 暂存区 )
git add [filename]
将工作区的“新建、修改” 添加到暂存区
3)提交操作
git commit -m "commit message" [file name]
将暂存区的内容提交到本地库
4)查看历史记录
git log :
显示所有提交过的版本信息
空格向下翻页
b 向上翻页
q 退出
git log --pretty=oneline
git log --oneline
git reflog :
可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
5)版本前进后退
本质就是 HEAD指针的前进和后退
①、基于索引值操作【推荐】
git reset --hard [版本的索引(hash值)]
②、使用 ^ 符号 : 只能后退
git reset --hard HEAD^
注:一个^表示后退一步,n 个表示后退 n 步
③、使用 ~ :只能后退
git reset--hard HEAD~n
后退n步
6)reset 命令的三个参数对比(用于本地版本回退,很重要)
xxx 表示的是HEAD
git reset xxx : 撤销暂存 会将文件从暂存区撤销到工作区(未被追踪的状态)
git reset --soft xxx 不删除本地代码变动,不撤销add,撤销commit
git reset --mixed xxx 不删除本地代码变动,撤销commit,撤销add
git reset --hard xxx 删除本地代码变动,撤销commit,撤销add
7)删除文件并找回
前提:删除前,文件存在时的状态提交到了本地库
操作:git reset --hard [指针位置] (其实就是本地库回退)
删除操作已经提交到本地库:指针位置指向历史记录
删除操作未提交到本地库:指针位置指向HEAD
8)比较文件差异
gitdiff[文件名]
将工作区中的文件和暂存区进行比较
gitdiff[本地库中历史版本][文件名]
将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件
4、分支管理
1)什么是分支
在版本控制的过程中,使用多条线同时推进多个任务
2)分支的好处
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任 何影响。失败的分支删除重新开始即可
3)分支的操作
创建分支:git branch 分支名
查看分支:git branch -v
切换分支:git checkout 分支名
合并分支:
① 切换到接受修改的分支上:git checkout 【j分支名】
② 执行merge 命令 : git merge 【分支名】
解决合并分支时,产生的冲突
冲突的表现
冲突的解决:
① 编辑文件,删除特殊符号
② 把文件修改到满意的程度 保存退出
③ git add
④ git commit -m "日志信息" 【注意:此时不能带文件名】
三、git 的基本原理
1、哈希
校验:文件经过网络传输后,是否改变
2、git 保存版本的机制
Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前 的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的 工作方式可以称之为快照流。
3、Git分支管理机制
四、GitHub
1、创建远程库
2、创建远程库地址别名
git remote -v :查看当前所有远程地址别名
git remote add [别名] [远程地址]
3、推送操作
git push 【别名】【分支名】
4、克隆操作
git clone 【远程地址】
此时克隆做了三个操作:
1)完整的把远程库下载到本地
2)创建 origin远程地址别名
3)初始化本地库
5、团队成员邀请
6、拉取
pull = fetch + merge
git fetch 【远程仓库别名】【远程分支名】
git merge 【远程仓库别名】【远程分支名】
git pull 【远程仓库别名】【远程分支名】
7、解决冲突
如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉 取。
拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
8、跨团队协作
1)fork
2)clone到本地修改,然后推送到远程
3) PullRequest
4)审核代码
5)合并代码
6)将远程库修改拉取到本地
五、Eclipse操作git
1、工程初始化为本地仓库
工程→右键→Team→ShareProject→Git
设置本地库范围的用户签名
一些图标的解析
2、Eclipse中忽略git不需要进行管理的文件
1)创建 Java.gitignore 文件
# Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .classpath .project .settings target
2)在~/.gitconfig 文件中引入上述文件
[core]
excludesfile=C:/Users/林汐/Java.gitignore
3)检验配置是否起效
3、推送到远程库
4、将远程库的工程克隆到本地
1)Import 项目 from git