- 先容:
- 在项目中,我们可能一起提交多个文件
- git add -A:提交所有变革
- git add -u:提交被修改(modified) 和被删除文件(deleted) 文件,不包罗新文件(new)
- git add .:提交新文件(new) 和被修改文件(modified) ,不包罗被删除文件(deleted)
- 使用 Git 的过程中,有些文件无需纳入 Git 管理,也不希望它们出如今未跟踪列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具主动生成的文件等。
- 此时,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git 会根据这些模式规则来判断是否将文件添加到版本控制中
- 留意:在 windows 下可以创建文件名为 .gitignore,保存之后系统会主动重定名为 .gitignore
- 格式规范:
- 所有空行大概以注释 # 开头的都会被 Git 忽略
- 可以使用标准的 glob 模式匹配
- 匹配模式末了跟 / 分析要忽略的文件是 目次
- 要忽略指定模式外的文件或目次,可以在模式前加上 !进行取反
- glob 模式:
- *:匹配零个或多个恣意字符
- [ ]:匹配恣意一个在方括号中的字符,如 [ab]:匹配 a 大概匹配 b
- ?:匹配一个恣意字符
- [ n - m]:匹配所有在这两个字范围内的字符,如 [ 0 - 9 ]:表示匹配所有 0 到 9 的数字
- 匹配实例:
- logs/:忽略当前路径下的 logs 目次,包罗 logs 下的子目次和文件
- /logs.txt:忽略根目次下的 logs.txt 文件
- *.class:忽略所有后缀为 .class 的文件
- ·······
- 案例:
- 在必要创建 .gitignore 文件的文件夹,右键选择 Git Bash 进入命令行,进入项目所在目次
- 输入 touch .gitignore ,文件夹就会生成一个 ".gitignore " 文件
- 然后用编辑器打开这个文件进行编辑即可
- 编写要忽略的文件:
- 创建两个文件:
- 查察状态发现 testclass.class 文件不在工作区
- 提交也不会进入暂存区:
- 定义全局的 .gitignore:
- 除了可以在项目中定义 .gitignore 文件外,还可以设置全局的 .gitignore 文件来管理所有 Git 项目的行为
- 这种方式在不同的项目开发者之间是不共享的,是属于项目之上 Git 应用级别的行为
- 可以在恣意路径下创建对应的 .gitignore 文件,然后使用以下命令设置:
- git config --global core.excludesfile ~/.gitignore
- .gitignore 规则不生效:
- .gitignore 只能忽略那些原来没有被 track 的文件,假如某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的
- 一定要养成在项目开始就创建 .gitignore 文件的风俗
- Java 开发通用模板:
- ######################
- # 解决java产生文件
- ######################
- *.class
- # Mobile Tools for Java (J2ME)
- .mtj.tmp/
- # Package Files #
- *.jar
- *.war
- *.ear
- # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
- hs_err_pid*
- ######################
- # 解决maven产生的文件
- ######################
- target/
- **/target/
- pom.xml.tag
- pom.xml.releaseBackup
- pom.xml.versionsBackup
- pom.xml.next
- release.properties
- dependency-reduced-pom.xml
- buildNumber.properties
- .mvn/timing.properties
- ######################
- # 解决各类编辑器自动产生的文件
- ######################
- *.iml
- ## Directory-based project format:
- .idea/
- # if you remove the above rule, at least ignore the following:
- # User-specific stuff:
- # .idea/workspace.xml
- # .idea/tasks.xml
- # .idea/dictionaries
- # Sensitive or high-churn files:
- # .idea/dataSources.ids
- # .idea/dataSources.xml
- # .idea/sqlDataSources.xml
- # .idea/dynamic.xml
- # .idea/uiDesigner.xml
- # Gradle:
- # .idea/gradle.xml
- # .idea/libraries
- # Mongo Explorer plugin:
- # .idea/mongoSettings.xml
- ## File-based project format:
- *.ipr
- *.iws
- ## Plugin-specific files:
- # IntelliJ
- /out/
- /target/
- # mpeltonen/sbt-idea plugin
- .idea_modules/
- # JIRA plugin
- atlassian-ide-plugin.xml
- # Crashlytics plugin (for Android Studio and IntelliJ)
- com_crashlytics_export_strings.xml
- crashlytics.properties
- crashlytics-build.properties
复制代码 - diff 命令:
- git diff 文件名:
- a 表示:前面的变量
- b 表示:后面的变量
- HEAD:commit 版本
- Index:staged 版本
- 工作区 vs 缓存区:
- git diff 文件名:
- 意义:查察文件在工作目次与暂存区的差异。假如还没进暂存区,则查察文件自身修改后的差异。
- 也可查察和另一分支的区别:git diff <branch> <filename>
- 暂存区 vs Git 堆栈:
- git diff --cached 文件名:
- 意义:表示查察已经 add 到暂存区但是尚未 commit 的内容同最新一次 commit 的内容的差异
- 也可以指定版本库:git diff --cached 版本 文件名:
- 工作目次 vs Git堆栈:
- git diff 版本 文件名:
- 意义:查察工作目次同 Git 堆栈指定 commit 的内容差异
- 版本 == HEAD 时:查察工作目次同迩来一次 commit 的内容差异
- Git 堆栈 vs Git 堆栈:
- 查察 Git 堆栈恣意两次 commit 之间的差异:git diff 版本 版本
- 留意:
- 以上命令不指定文件名,则对全部文件操作
- 以上命令和 Git 堆栈对比的,均可指定 commit 的版本
- HEAD:迩来一次 commit
- HEAD^:上一次提交
- HEAD~100:上100次提交
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |