版本控制 git - 速通
版本控制 git
git配置
- 查看系统配置:git config --system --list
- 查看用户配置(global)配置: git config --global --list
所有的配置都是保存在本地的 Git安装目录下gitconfig -system 系统级的配置文件
保存在登录用户的配置文件 c:\Users\Adminstrator.gitconfig 只适用于登录用户的配置文件 -global全局
- 设置用户名:git config --global user.name "zhy"
- 设置用户邮箱:git config --global user.email "zhy_post@sina.com"
git 原理
操作图
上图标注了四个工作区域之间的交互操作 (在git bash下)
git 有四个工作区域: 工作目录(Working Directory)暂存区(Stage/index)资源库、本地仓库(Repository或者Git Directory)另外还有 远程git仓库(Remote Directory)
- Working Directory:工作区,日常工作存放代码
- Stage/index:暂存区,用于临时存放改动,本质是一个文件,保存即将提交的文件改动信息
- Repository: 本地仓库,存放提交的所有版本数据,其中HEAD指向最新放入仓库的版本
- Remote Directory:远程仓库,托管代码的服务器
git项目创建
存在两种方式 在本地创建 从远程仓库克隆
- 本地仓库搭建
- 在目标目录--->右键--->git bash
- 初始化git: git init
- 远程仓库克隆
- 选好本地目录--->右键--->git bash
- git clone [url] (需要点击网上该项目的 【克隆】 获取url)
- 该命令是从远程仓库完全镜像一份到本地
- 文件状态
- Untracked: 未跟踪,此文件在文件夹中但没有提交加入git库,不参与版本控制,需要通过git add将状态变更未Staged
- Unmodify: 文件已经入库,没有修改,意思是本地库中的文件和工作文件夹中的文件完全一致,这种类型的文件如果被修改 就会变为 Modify 也可以使用git rm移除版本库,则变为Untracked文件
- Modified: 文件已修改,仅仅是修改没有其他操作,这样的文件可以通过过git add进入暂存staged状态,使用git checkout 则丢弃修改返回unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改
- Staged: 暂存状态,执行git commit则将修改同步到库中,这时库中文件和本地文件又变为一致,文件为Unmodify状态,执行git reset HEAD filename 取消暂存,文件状态为Modified
- 上述文件的4种状态可以通过一下命令查询
#查看指定文件状态
git status [文件名]
#查看所有文件状态
git status
#git add . 添加文件到暂存区
#git commit -m "说明信息" 提交暂存区的内容到本地仓库
- 配置文件忽略规则
哪些文件需要忽略,不提交(如:.class 和 idea的文件) 哪些需要提交(如:jar包 .java等文件)
#配置语法:
#以斜杠“/”开头表示目录;
#以星号“*”通配多个字符;
#以问号“?”通配单个字符
#以方括号“[]”包含单个字符的匹配列表;
#以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
#常用配置
# 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
被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。
使用码云 gitee
- 注册--->登录
- 绑定SSH公钥,实现免密登录
- 生成ssh公钥 ssh-keygen
- 三次回车即可
- 到本地 C:\Users{登录账户}.ssh 路径下找到公钥
- git可以连接到你的码云仓库 其他github仓库同理
- 新建一个仓库
- 克隆到本地
IDEA集成git
- 新建项目 绑定git
- 将远程仓库的git 相关文件拷贝到需要绑定的项目中即可
- 复制后git操作
- 在ideaTerminal中就可以用命令操作了
- git add .(添加所有文件到缓存区)
- git commit (提交文件到本地仓库)
- git push (push文件到远程仓库)
git分支
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
git 完