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

你系统学习Git了吗?

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


Git内容学习准备

  1. 如果你还没有用Git,就不要写代码了。
  2. GitHub仓库的使用。
  3. 新员工入职的时候,会让他先用一周的时间去学习Git。
  4. Mac(优雅的开发环境,Terminal)

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

安装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 )——未完待续...

原文地址:https://www.cnblogs.com/bigbaby/p/12173785.html

时间: 2024-11-10 11:22:41

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

德鲁克:平庸的公司天天都在做决策

在<卓有成效的管理者>一书中,德鲁克回答了一家公司为什么会“高效”,他提出了五个标准: 一.有效产出是衡量一家公司最基本的底线标准.如果一家公司聚焦于为客户创造价值,那么,这家公司的人际关系就会建立在客户价值的基础上,也就会出现对事不对人的文化.反过来当经营公司不是为了创造客户价值,而是为了既得利益者的权力.地位与声望,那么,一家公司无论多大,无论多优秀,平庸的种子就已经种下. 二.管理者的时间在哪里,公司的战略就在哪里.管理者的时间安排,反映了管理者在行为.人际关系和工作重心上的习惯.从时间

零基础如何系统学习Java Web

零基础如何系统学习Java Web? 我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个月后被辞退了,当然我们还是朋友. 前两个条件都符合了你就可以学了,首先要了解web是什么,一般呢,java web开发无外乎就这么两大类,第一,互联网公司,第二,软件公司.对于互联网公司和软件公司还有一些差别,互联公司是面向广大网民的,会有专门的ui设计,前台开发,后台代码开发,ios开发,androi

《Git Community Book》学习笔记

打算全面的学习一下Git的相关知识,比较网上的资料,觉得<Git社区书>篇幅合适,覆盖全面,就是它了.chapter1 介绍 1.Git是一个快速的分布式版本控制系统.2.所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)“ 对象名” 来索引的.每一个“ 对象名” 都是对“ 对象” 内容做SHA1哈希计算得来的,(SHA1是一种密码学的哈希算法).3.与SVN的区别Git与你熟悉的大部分版本控制系统的差别是很大的.也许你熟悉Subversion.CVS.Perforce

Git和Github入门学习

注册github账号也有些时日,但一直给自己找借口github的操作麻烦,便一直逃避不肯学习,今天,我终于不再逃避,静下心来花时间和精力学习github的基本使用操作.git和github入门学习一.下载安装安装 git for windows 这个是一个git的windows系统的命令行版本 https://git-scm.com/downloads注释:安装 git for windows 一路 next 即可二.使用github1.注册账号github官网:https://github.c

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

web安全如何系统学习研究

1. 系统,网络层 , 若密码,防火墙配置好,该用认证的时候别只用防火墙去顶,我见过防火墙规则失效,直接被连上了数据库的. root可以登录还是若密码的,不多说了, 没撒好讲的大家都知道 应用层. 搞清楚常见的SQL注入,XSS,CSRF. php+mysql的方式sql注入. php连接mysql的三种api(mysql,mysqli,pdo-mysql) 新项目别再使用 mysql_connect 了, 使用PDO,mysqli,参数绑定的方式. mysql_connect的sql查询通过抓

Linux系统学习日志Day01

Day01   Linux系统学习日志 (一)  Linux历史 创始人:林纳斯·托瓦兹 时间:1991 年10 月5 日(对外公开时间) 现状:多版本,有redhat.centos.Ubuntu.fedora (二)  Linux认证 管理员:RHCSA 需要掌握的知识: Linux的命令和日常维护,包括安装操作系统.构建网络连接.管理物理存储和执行基础安全管理. 工程师:RHCE 需要掌握的知识: RH124红帽企业Linux基础 RH134红帽企业Linux系统管理 RH254红帽企业Li

Linux(CentOs6.6)系统学习笔记系列之一

由于新公司的所有应用都是部署到Linux服务器上面的,然后老大要求我们每个码农都必须要懂一点Linux系统方面的知识,而之前一直都没有接触过Linux系统,但是又不想太落后于别人,于是这段时间就疯狂的恶补了一下Linux方面的知识,主要是观看慕课网上面的一些视频教程,然后自己对着视频操作了一番,大概熟悉了一下,今天是第四天,然后总结了一下,这里主要记录一些这几天的一些学习笔记,希望见证一下自己的成长...也希望能够帮到某些朋友. 环境: 物理机操作系统:Widows7 64bit 虚拟机:VMw

老司机浅谈linux系统学习技巧

Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它独有的魅力所吸引.即使它的可视化窗口操作模式并不如Windows操作系统那样完美,可是它的可维护性.操作系统低占用率.可扩展性却让它在服务器操作系统方面已经成为资深服务器工程师的首选的操作工具. 笔者刚开始学习linux的时候,也不是一帆风顺的,一次偶然的机会在网上看到<linux就该这么学>这本