Git基础

一、Git简介

版本控制:是一种在开发过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

版本迭代,每次更新有新的版本,版本管理器。、多人开发必须使用版本控制,防止浪费时间人力成本。

主流版本控制器:Git ,SVN,CVS,VSS,TFS

版本控制的产品: Perforce, Rational ClearCase, RcS等

 本地版本控制集中版本控制分布式版本控制
概述每个文件更新都有记录,对每个版本做一个快照所有的版本控制都保存在服务器上,版本库是集中放在中央服务器的,协同开发者从服务器上同步更新或上传自己的修改。(先从服务器上获得最新版本完成工作后推送到中央服务器)没有中央服务器,所有版本信息都同步到本地用户,每个人都有全部的代码(是一个完整的版本库)。 协同的方法:不同人修改同一个文件可以互相看到对方的修改。git可以直接看到更新了哪些代码和文件。
优缺点 

必须联网工作,对网络宽带要求高。

单点故障问题。所有版本都在服务器上,用户只有自己的版本,服务器坏了数据就丢了,需要定期备份一下。

 

有安全隐患!

离线的在本地提交,联网后push到响应服务器,不会因为网络问题/服务器损坏造成不能工作的情况。所有人都有最新的备份。

工作时不需要联网,版本都在自己电脑上。

例子记录补丁文件,适合个人使用SVNGit

Git是目前世界上最先进的版本控制系统。免费的开源的。是用来辅助Linux开发的,代替BitKeeper。

二、Git安装

Git官网  https://git-scm.com/ 可以看到最新版本。下载慢的话就可以找镜像下载 https://github.com/git-for-windows/git/releases/ 根据自己电脑下载最新版本

安装完毕后打开exe文件进行设置。

选择编辑器,默认是Vim,也可以根据自己习惯选择Sublime等

以下全部是默认选项next,或根据自己需要勾选。

安装完成后,可以在菜单栏里找到Git

Git Bash: Unix和Linux风格命令行,使用最多,推荐最多 。

Git CMD:Windows风格的命令行。 

Git GUI: 图形界面不常用

任意文件夹下右键可以看到两个Git命令:Git GUI Here, Git Bash Here

环境变量自动配置,可以检查环境变量里的Path

 

三、Git的卸载

先检查环境变量:我的电脑→高级设置→环境变量→找Path编辑→查看有无关于Git的路径,有的话删除。

控制面板→程序卸载→将Git卸载

 

四、Git的配置

#打开git Bash,默认是在C盘的用户目录下

git config -l  #当前项目下关于git的所有配置(含有系统和用户的配置)
git config --system --list  #查看系统配置
git config --global --list  #用户自己配的 用户名+密码 必须要配置的 C:\User.gitconfig 在文件里有用户名密码等,可以手动清空. 所有的配置文件其实都保存在本地,设置用户名,(由此可知可以用java写个文件一键配置用户名密码等)

#设置本地的用户名密码邮箱
git config --global user.name "name"
git config --global user.password "1234"
git config --global user.email "..."  #加不加引号无所谓。 尽量是真实邮箱

五、Git的工作原理

Workspace: 工作区(平时存放代码的地方),需要在git add 添加到暂存区。

Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息,git commit添加到本地仓库。

Repository:仓库区(本地仓库),存放安全数据的位置,包含提交到所有版本的数据库。HEAD指向最新放入仓库的版本。git push添加到远程仓库。

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

六、Git项目创建及克隆

要使用的常用命令

在当前目录,本地仓库搭建,右键GitBash Here

git init   #初始化当前项目 (多了一个隐藏文件.git)

克隆一个远程仓库到本地,将远程服务器上的仓库完全镜像一份到本地。多了一个文件夹对应远程仓库的东西。在Gitee或者git上都有克隆这个选项,复制url。

git clone url  #克隆一个项目和它的整个代码历史(版本信息)

七、Git的基本操作命令

git status #查看所有文件状态。

git status filename #查看某个文件状态。

文件的四种状态。

Untracked 未跟踪,此文件在文件夹中,没有加入到Git库,不参与版本控制。通过git add状态变为Staged,git add . 添加所有文件到暂存区。

Unmodify:文件已经入库,未修改,版本库中的文件快照内容与文件夹中完全一致。如果被修改,变为Modified. 如果使用git rm移出版本库,成为Untracked文件。git commit -m 提交暂存区的内容到本地仓库。-m 提交信息。 git commit -m "new file hello.txt"

Modified:文件已经修改,仅仅是修改。通过git add进入Staged状态,或者使用git checkout 则丢弃修改过,返回Unmodify状态,git checkout即从库中取出文件,覆盖当前修改。

Staged:暂存状态,执行git commit则将修改同步到库中,库中的文件和本地文件一致。文件Unmodify状态。执行git reset HEAD filename取消暂存,状态变为Modified.

 

忽略文件规则(在目录下建立.gitigonre 文件。不想把某些文件列入版本控制,比如数据库、临时文件、设计文件等)

1. 忽略文件中的空行或以井号#开始的行会被忽略

2. 可以使用Linux通配符。 * :任意多个字符,?:一个字符,[]:可选字符范围,{}:可选字符串。。

3. 如果名称最前面有!,表示例外规则,将不被忽略

4. 如果名称最前面有 / 路径分隔符,表示要忽略的文件在此目录下,而子目录中的文件不忽略

5. 如果名称最后面有 / 路径分隔符,要忽略的是此目录下该名称的子目录而非文件(默认文件或目录都忽略)

*.txt   #忽略所有.txt结尾的文件
!lib.txt  #但lib.txt除外
/temp  #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/ #忽略build目录下所有文件
doc/*.txt  #会忽略doc/notes.txt但不包括doc/server/arch.txt

八、Git的分支

master:主分支,应该非常稳定,用来发布新的版本,一般情况下不允许在上面工作。

dev:开发用的分支,工作一般在此分支上工作,稳定后可合并到主分支。

v4.0(或者其他的):不同版本的分支。

git branch  #查看当前所有分支
git branch -r #远程分支
git branch dev 
git check -b [branch]  #新建分支,后面蓝色括号表示当前的分支
git checkout -b [branch]  #新建分支并切换到此分支
git merge [branch]   #合并指定分支到当前分支
#多个分支并行执行,导致代码不冲突,同时存在多个版本。调用别的代码修改了,选择要保留的代码。
git branch -d [branch-name]  #删除分支
#删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值