天天都在用Git,那么你系统学习过吗?(一)学习过程

你系统学习Git了吗?

使用Mac编程的好处,不是因为Mac长得好看


Git内容学习准备

  1. 如果你还没有用Git,就不要写代码了。

  2. GitHub仓库的使用。

  3. 新员工入职的时候,会让他先用一周的时间去学习Git。

  4. Mac(优雅的开发环境,Terminal)

不要使用GUI入门Git。要使用命令行。

  • 官网:http://www.git-scm.com/

安装Git

  1. 使用Xcode自带的Git环境。
  2. 去官网自行下载安装。
  3. Terminal的增强。

bash

每一个Linux和Mac自带的解释器。(但是功能不是很强大)
强大的叫:zsh.
加强版本: oh my zsh (自行安装)

清屏命令:clear or ctrl+L

创建命令:touch xxx.txt :=增删改等。

查看命令:man cp

vi的基本使用。

必须要掌握的:Terminal操作

作为一个JAVA程序员,应该大部分都是在Windows使用JAVA开发,但是希望不要仅仅局限于JAVA。不然对成长很不友好。

内容大纲

  1. Git官网
  2. 常见Linux命令介绍
  3. Git在各种平台下的安装与配置
  4. 分布式与集中式版本控制系统的差别
  5. 缓存区、工作区与Git提交
  6. 版本回退
  7. 修改与撤销修改,文件的添加与删除
  8. Git对象类型与索引
  9. Git分支
  10. 如何创建,切换与删除分支
  11. Git分支在项目中开发的使用
  12. Git分子在工程化项目的最佳实践
  13. 分支常见重要命令详解
  14. Git merge
  15. Git冲突解决策略
  16. HEAD详解
  17. Git Commit修改详解
  18. 远程版本库介绍
  19. 如何使用远程版本库
  20. Git Push、Pull、fetch使用与注意事项
  21. Git合并的基本原则
  22. Git别名、config文件详解
  23. Git tag详解
  24. 如何创建与推送tag
  25. Git feature分支详解
  26. 何时使用submodule
  27. Git subtree详解
  28. Git subtree的使用方式详解
  29. .gitignore的正确使用方式
  30. Git私服GitLab的搭建方法
  31. 在公司内部使用gitlab作为版本控制服务器
  32. GitLab使用详解
  33. GitHub的使用方式
  34. 搭建基于Intellij IDEA的Java开发环境
  35. 搭建基于Gradle的JAVA开发环
  36. Git与Intellij IDEA 的整合方式详解
  37. Gradle初步使用
  38. .gitignore最佳实践

学习方法:知道一,更知道二,更知道三。

了解Git

Git简史

开发Git来管理Git

CVS、SVN与Git

不会Git,就别开发代码了。

Git、GitHub与GitLab

Git设计目标

为什么要使用Git

  • 本地建立版本库
  • 本地版本控制
  • 多主机异地协同工作
  • 重写提交说明
  • 有后悔药可以吃
  • 更好用的提交列表
  • 更好的差异比较
  • 更完善的分支系统
  • 速度极快

Git基础

  • 直接记录快照,而非差异比较
  • 近乎所有操作都在本地执行
  • 时刻保持数据完整性
  • 多数操作仅添加数据
  • 文件的三种状态
    • 已修改
    • 已暂存
    • 已提交

Git文件状态

Git文件:已经被版本库管理的文件

已修改:在工作目录修改Git文件

已暂存:(indea-staged)对已经修改的文件执行Git暂存操作,将文件存入暂存区

已提交:将已经暂存的文件执行Git提交操作将文件存放版本库

pic1

Git的文件状态如下

Pic2

本地版本库与服务器版本库

pic3

Git 安装

Linux

Mac

Windows

需要自行了解 SSH

GUI:source tree & GitHub Desktop

使用Git

Git常用命令

获得版本库

git init
git clone

查看信息

git help
git log
git diff

版本管理

git add 
git commit
git rm

远程协作

git pull
git push

其他常用指令

git status  ##查看状态
git log ##查看commit记录
git checked -- xxx.txt ##丢弃已经修改的
git reset HEAD xxx.txt ##回到修改前的状态
git commit -m 'commit message' ##简要信息显示并commit

echo 'welcome' > xxx.txt  ##重定向welcome 到这个文件的输出
git add . ##当前目录所有文件都add
git log -3 ## 最近三条的log

git help config ## 获取配置
git config --help ## 帮助文档
man git-confgi ##帮助文档

常见功能

配置username && email**

  1. /etc/gitconfig (几乎不会使用,针对于整个操作系统的)

    git config --system
  2. ~/.gitconfig (很常用,针对于当前用户的所有配置)

    git config --global
  3. .git/config (针对于特性项目)

    git config --local

Git的提交ID(commit id)是一个摘要值,这个摘要值实际上是个sha1计算出来的

删除(两种方式)

git rm 和 rm的区别
git rm : 
1.删除文件
2.并且将删除的文件纳入到暂存区当中(stage,index)
若想恢复删除的文件需要执行两个动作
1. git reset HEAD test2.txt ,将待删除的文件从暂存区恢复到工作区
2. git checkout -- test2.txt ,将工作区中的修改丢弃掉

rm: 
将文件删除文件,这时候被删除的文件没有纳入暂存区当中  
注意:
这时候如果直接commit,是提示没有修改记录的。
想要纳入暂存区的话,需要使用 git add xxx.txt 把这个文件的删除再加入暂存区。

重命名文件(两种方式)

git mv name1.txt name2.txt  (纳入暂存区的修改名字操作)
回退:
git reset HEAD name1.txt
git checked -- name1.txt

也可以使用操作系统的mv指令,关系和删除是相同的

日志修改

git commit --amend -m 'new message' ##把上次保存的commit消息替换掉

熟练使用命令行,是提升开发效率的第一步。

.gitignore文件

操作的时候自动过滤制定的文件。放置在项目的根目录下

支持全文件名/正则表达式/后缀名/通配符

setting.properties ##删除指定文件
*.b  ##后缀名
!a.b ## !除了什么
/TODO ##仅仅忽略项目根目录下的TODO文件, stu/TODO 这种是不忽略的
/*/TODO ##仅仅删除二级目录下的TODO文件
/**/TODO ##删除所有目录下的TODO文件
doc/*.txt ##忽略doc目录下的.txt文件,但是 doc/a/a.txt 是不会被忽略的
doc/**/*.txt ##忽略doc目录下的所有*.txt
build/ ## 忽略build目录下的所有文件
#xxxx  ## 代表注释

分支 branch

查看分支

git branch  ## 查看分支

创建分支

git branch new_branch ##创建分支

切换分支

git checkout new_branch  ##切换分支

删除分支

git branch -d new_branch ## 删除分支,
    ## 但是不能删除当前所处的分支。
    ## 删除 未被合并的  - 使用大写的  D
    ## 删除 已经被合并的 - 使用小写的 d
    ## 是为了保护你的误操作。

(2020年01月09日22:16:50 )——未完待续...

你可能感兴趣的:(天天都在用Git,那么你系统学习过吗?(一)学习过程)