一、Git初始

1. 定义

​ 分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git.当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库.

https://www.cnblogs.com/Sungeek/p/9152223.html#sg1

2. SVN和Git区别

  1. Git是分布式的,SVN是集中式

  2. Git把内容按元数据方式存储;SVN是按文件,所有的资源控制系统都是把文件的元信息隐藏在一个类似svn,cvs等文件夹中

  3. Git没有一个全局版本号,而SVN有

  4. Git分支和SVN分支不同

  5. Git的内容完整性优于SVN;Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏.

二、Git安装使用

1. Git安装

  1. 1. Linux
  2. yum install git -y
  3. 2. Ubuntu
  4. apt-get install git
  5. 3. 查看Git版本
  6. git --version

2. 运行Git前的配置

  1. 1. 设置用户名称/邮箱地址(针对当前linux用户添加一个配置,不会对其他人造成影响);存着 ~/.gitconfig文件中
  2. git config --global user.name "Johon"
  3. git config --global user.email johon@example.com
  4. 2. 用--system 就对操作系统所有用户,都设置这个配置
  5. git config --system user.name "wusir"
  6. git congig --system user.email wusir@luffy.com
  7. 3. 查看全局版本用户信息
  8. git config --global --list

3. Git工作流程

​ 使用Git就是将本地文件(工作目录workspace)的文件,添加到暂存区(stage),然后提交到本地仓库(repository),最终可以协同开发,推送到远程仓库(remote)

  1. # 切换到项目目录mysite
  2. cd mysite
  3. # 初始化git仓库
  4. git init
  5. 备注:git init命令会创建一个.git隐藏目录,这个目录包含初始化git仓库所有的核心文件;此步仅仅是初始化,此时项目里的代码还没有被git跟踪,因此还需 git add 对此项文件跟踪,然后 git commit 提交到本地仓库
  1. 请记住,在工作文件夹的每一个文件,只有两种状态,一个是未跟踪,一个是已跟踪
  2. (1)已跟踪:指的是已被纳入git版本管理的文件,在git快照中有它的记录
  3. (2)未跟踪:指的是文件既不在git快照中,也不在暂存区
  4. git init 初始化时的工作文件夹,都属于已跟踪了,后续的编辑操作都会标记为[已修改文件],因此需要将修改后的文件,加入[暂存区],然后[提交暂存区的文件]

4. 查看文件状态

  1. # 只能在git工作目录中输入这个命令,他会去找.git文件夹
  2. git status
  3. [root@pyyuc ~/git_learning/mysite 12:00:34]#git status
  4. # On branch master
  5. #
  6. # Initial commit
  7. #
  8. nothing to commit (create/copy files and use "git add" to track)
  9. 说明当前工作目录很干净,所有的已跟踪文件,已经被提交且未更改。
  10. 此时处在master默认分支。
  1. git版本库目录下,新创建的文件,都会被标记为 Untracked files,代表未跟踪的文件,需要使用git add .
  2. 必须得在含有.git文件夹的目录,去敲命令,才可以输入git命令
  3. 修改djangourl.py,写入新功能,也是对文件进行修改标记 modified 对修改过的代码文件,也必须git add 添加到暂存区
  4. git init mysite // 初始化git仓库
  5. git status // 查看git状态
  6. echo "print('挣了一个亿')" > main.py // 新建一个代码文件,此时是未被git跟踪的
  7. git status // 再次查看状态
  8. [Untracked files:
  9. (use "git add <file>..." to include in what will be committed)
  10. main.py
  11. ]
  12. git add main.py // 开始跟踪main.py文件
  13. git status // 此时再看已经被跟踪,现在已是可以被提交的状态,此时处于暂存区
  14. git commit -m "main.py已修改" // 告诉git,把暂存区的main.py提交到本地仓库
  15. git log // 查看提交的记录

5. 文件重命名

  1. 直接mv的操作,会被git记录为两个形容,一、删除原有文件、二、新建了mymain.py文件
  2. 此时新文件还未被跟踪,需要git add , git commit
  3. 原本的main.py还需要从暂存区删除
  4. [root@pyyuc ~/mysite 14:57:57]# git status
  5. [root@pyyuc ~/mysite 14:57:57]# git status
  6. # On branch master
  7. # Changes not staged for commit:
  8. # (use "git add/rm <file>..." to update what will be committed)
  9. # (use "git checkout -- <file>..." to discard changes in working directory)
  10. #
  11. # deleted: main.py
  12. #
  13. # Untracked files:
  14. # (use "git add <file>..." to include in what will be committed)
  15. #
  16. # mymain.py
  17. no changes added to commit (use "git add" and/or "git commit -a")
  18. 1. 命令
  19. git mv main.py my_main.py 重命名
  20. git rm main.py 删除暂存区的main.py
  21. git add . 将本地工作区的代码,提交到暂存区
  22. git commit -m "mv mymain.py" 将暂存区的代码,提交到本地版本仓库中
  23. 6. Git回退/前进
  24. 1. 先查看git提交记录,查看要回退的id
  25. git log
  26. 2. 在使用git reset 回退
  27. git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3
  28. 3. 查看所有回退记录,即可任意切换至想要切换的文件位置,指针指向对应id即可
  29. git reflog
  30. 备注:git的切换,本质就是对HEAD文件指针的来回切换

6. Git回退/前进

  1. 1. 先查看git提交记录,查看要回退的id
  2. git log
  3. 2. 在使用git reset 回退
  4. git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3
  5. 3. 查看所有回退记录,即可任意切换至想要切换的文件位置,指针指向对应id即可
  6. git reflog
  7. 备注:git的切换,本质就是对HEAD文件指针的来回切换

7. 撤回Git修改记录

  1. 对已经跟踪的文件app01/views.py进行修改,此时标记为了modified: app01/views.py;此时可以提交操作,也可撤回操作
  2. (1)如果想提交本次修改操作
  3. git add .
  4. (2)如果发现代码改错了,git可以实现撤回
  5. git checkout -- 文件名
  6. git checkout -- app01/views.py

8. Git临时区

  1. 使用流程,场景,在你开发新功能的时候,突然线上代码有问题,你必须得改线上代码,将你目前已经开发好的功能,临时存储起来,待你修复bug完毕之后,再把这个临时存储的代码,回退回来即可
  2. 1. git stash //将你暂存区提交的代码,放到一个stash临时区中;此命令是在git add之后执行的
  3. 2. 修复bug完成
  4. 3. git stash pop // 拿回stash代码
  5. 4. git stash list // 查看stash是否还有临时代码
  6. 5. git add . // 注意未标记的,已修改的文件,都得git add 添加到暂存区之后,才可以提交到本地仓库
  7. 6. git commit -m "提交注释信息"

9. Git分支

  1. git分支功能,每个人都有自己的分支,不直接影响本体代码,在自己的分支上,写完代码后,通过管理员吧分支的代码,合并到主干上即可
  2. (1)git branch // 查看当前所在的分支
  3. (2)git branch wusir // 创建wusir分支
  4. (3)git branch alex // 创建alex分支
  5. (4)git checkout wusir // 切换至wusir分支
  1. 分支开发使用流程
  2. (1)创建分支
  3. git branch wusir
  4. (2)切换分支
  5. git checkout wusir
  6. (3)在分支下,进行编写自己的代码
  7. ...
  8. (4)切换到主干分支上
  9. git checkout master
  10. (5)合并分支代码,此时wusir开发的代码,就被合并到master
  11. git merge wusir
  1. 分支冲突,手动解决冲突;将其系统标记的注释删除即可.
  2. 原因:master分支和wusir分支,同时操作一个文件,对同一行代码进行写入
  3. 1. git命令
  4. git branch 分支名linux 创建分支linux
  5. git checkout 分支名linux 切换分支到linux
  6. git branch 查看当前分支情况,在哪一个就有*符
  7. git check -- filename 一键还原文件,将git仓库的文件覆盖当前文件,危险命令
  8. git checkout -b name 创建+切换新的分支

10. Git常用命令

  1. git init 初始化
  2. git status 查看git版本库的状态
  3. git add 指定文件或者 .
  4. git commit -m "提交的注释" 提交暂存区的内容到本地仓库
  5. git checkout 文件名 #撤回对文件的修改
  6. git checkout 分支名 #切换不同的分支
  7. git log #查看git提交的日志记录
  8. git reflog #查看所有提交以及回退的记录
  9. git reset --hard commitID #回退到某一个提交的id版本下
  10. git config --global user.name "你的名字"
  11. git config --global user.umail "你的邮件"
  12. git branch #查看分支
  13. git branch 分支名 #创建一个新的分支
  14. git branch -d 分支 #删除这个分支
  15. git checkout -b 分支名 #创建并且切换到一个新的分支下
  16. git stash #将暂存区的记录,临时放到一个区域 ,先git add之后,再git stash
  17. git stash pop #删除最后一个stash记录,放回暂存区
  18. git rm #删除git版本库中的文件
  19. git mv #改名
  20. git remote add 别名 github仓库的地址
  21. 用法如下:
  22. git remote add origin git@github.com:ayuchao/s16gitlearning.git
  23. git push 别名 分支名
  24. 用法如下:
  25. git push origin master #推送本地git仓库到github仓库了
  26. git pull origin master #下载github远程仓库到本地来

1. Git初始的更多相关文章

  1. Git初始配置和基本使用

    初次运行Git前的配置 本文是在安裝完git以后首先应做到一些配置,安装教程可以参考廖雪峰git教程 用户信息 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址. 这样做很重要,因为每 ...

  2. Git 初始仓库

    配置好环境后,通常有两种方式使用git,一种从git仓库上克隆,进行操作,一种是在本地创建并初始仓库,进行操作.工作中前者比较多见. 下面演示如何在本地创建仓库. 1.新建一个目录 # mkdir t ...

  3. GIT初始学习记录

    目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...

  4. Windows git 初始设置

    主要布署在 Linux 服务器上时,将全局设置 为提交自动转为 LF,签出不转换.git config --global core.autocrlf input(无效了,按默认即可) 设置全局用户名.

  5. Git 初始状操作指引

    You have an empty repository To get started you will need to run these commands in your terminal. Ne ...

  6. git 初始用法

    Git global setup git config --global user.name "xiaoming" git config --global user.email & ...

  7. Git初始配置【一】

    Git客户端的工作 安装完成后,还需要最后一步设置,在命令行输入 $ git config --global user.name "Your Name" $ git config ...

  8. git流程及操作

    一.git认识 git是什么?Git是目前世界上最先进的分布式版本控制系统 二.git安装 三.git创建本地库 1.首先选择e盘新建一个文件夹如douban 2.点击鼠标右键,执行Git Bash ...

  9. Pro Git 读书笔记

    一. 起步 1. 集中式版本控制缺点:中央服务器的单点故障. 分布式版本控制优点:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来. 这么一来,任何一处协同工作用的服务器发生故障,事后 ...

随机推荐

  1. sqlserver查看表空间

    sqlserver 用于查看当前数据库所有表占用空间大小的存储过程 create procedure dbo.proc_getsize as begin create table #temp ( t_ ...

  2. IT宝塔安装,Centos系统

    宝塔安装地址:https://www.bt.cn/btcode.html 本文链接地址:https://www.cnblogs.com/wannengachao/p/12036716.html 版权声 ...

  3. GO语言规范

    1.golang的命名推荐使用驼峰命名法,必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母.数字或下划线. 2.golang中根据首字母的大小写来确定可以访问的权限.无论是方 ...

  4. Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul)

    Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul) 1.Eureka Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是 ...

  5. 04. Go 语言流程控制

    Go 语言流程控制 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go 语言的常用流程控制有 if 和 for,而 switch 和 ...

  6. Rust v1.39发布 - 这个编程语言真不一般!

    https://zhuanlan.zhihu.com/p/90612241 今天(2019-11-07)Rust终于发布了期待已久的v1.39版本,增加了重量级的async/await关键字支持.Ru ...

  7. [学习笔记] Manacher与PAM

    \(1\) Manacher 挺短,背是挺好背的 Manacher用于求回文串长度.思想大概就是: 1.加入字符集之外的识别字符(比如#)分隔开原来相邻的字母,这样所有的回文串都变成了以某个字符为中心 ...

  8. event.stopPropagation()和event.preventDefault()

    1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, ...

  9. React: 认识React

    一.简介 React-Native是Facebook开源的跨平台框架,用于实现前端和原生进行混合开发.React-Native开发可以很好的使用原生UI构建用户界面,与传统的使用WebView相比,不 ...

  10. 计算机组成原理——中央处理器(CPU)考研题

    (一)   CPU的功能和基本结构 (二)   指令执行过程 (三)   数据通路的功能和基本结构 (四)   控制器的功能和工作原理 1.     硬布线控制器2.     微程序控制器微程序.微指 ...