0、最重要的一张图要记住,对理解git很关键
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
1、先说git最有用最常使用的一个操作操作
当我们已经把file 进行了 add操作 ,然后这时我们又想忽略这个文件,你就会发现忽略不了。这时可以使用
git rm -r --cached [文件名或者文件夹名字]
先了解git rm -r --cached
背后的原理:
1.若文件存在与stage和repository中时,会将文件从repository中删除,并且从stage中删除,但不会删除本地的实际文件,不过由于文件已经从repository中删除,文件会从tracked
变成untracked
。
2.若文件存在与stage,却不存在与repository中,会将文件从stage中删除,但不会删除本地的实际文件。由于repository中本来就没有这个文件,所以该文件一样会是untracked
状态。
2、在说一下比较常用的git命令的操作
# 在当前目录新建一个Git代码库
$ git init
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url] # https://gitee.com/kuangstudy/openclass.git
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
# git add . 添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
git merge [branch]
# 删除分支
git branch -d [branch-name]
# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
Git相关的配置文件:
1)、Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
2)、C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局
3、再来谈谈使用.ignore插件在IDEA中忽略你要提交的文件
有的时间创建的文件,不想被提交到版本控制的的选项中。在IDEA中安装.ignore插件。创建好了之后:
1.新建.gitignore文件(后面说配置文件规则)
2.将不需要提交到版本控制add ignore中
4、在谈谈.ignore文件的忽略配置规则
-
忽略文件中的空行或以井号(#)开始的行将会被忽略。
-
可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
-
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
例如:
#为注释*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!!lib.txt #但lib.txt除外/temp #仅忽略项目根目录下的TODO文件,不包括其它目录tempbuild/ #忽略build/目录下的所有文件doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt # 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 *.iml # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml .idea/ newshop-mall-biz/target/ newshop-mall-biz/src/test/ *.gitignore
最后在说一个小技巧
怎么最快速将一个java项目让git进行管理?
1、先在gitee(或者其他代码管理平台)创建一个仓库
2、将创建的仓库clone到本地 -----简称远程仓库项目
3、创建你的java项目 -----简称本地项目
4、然后将c远程仓库本项目里的所有文件(包括.git隐藏文件)拷贝到本地项目中,直接全覆盖
5、这是在idea中你就会发现 多了git的一些push pull commit 等操作(若没有出现这些图标)
注:若没有出现这些图标(若按照以下操作还未出现git操作等图标,可能你之前的操作有问题)
1、idea工具类里面查到 VCS ,下拉选项里面选择 Enable Version Control Integration。
2、在弹出框里面选择需要的版本管理工具,如选择Git。