Git基础学习

参考链接:

git文档 https://git-scm.com/book/zh/v2

git和svn的区别 https://www.cnblogs.com/hfultrastrong/p/8861456.html

git学习 https://www.runoob.com/git/

一、git 简介

1、特点

开源 分布式 版本控制系统

2、git的几个区域

工作区 workspace
暂存区/缓存区 staging area
本地仓库 local repository
远程仓库 remote repository

3、git与SVN的区别

(1)SVN–非分布式 一台服务器,其它计算机都是客户端,数据的上传和下载都要经过过服务器,SVN服务器负载压力大
git–分布式 每一台计算机都是服务器,拥有完整库的计算机可以充当服务器,可以在本地提交,在网络通畅时push即可
分布式:将数据分散的存储在多台独立的机器设备上

(2)SVN–按文件进行存储
git–按元数据方式进行存储 文件体积更大
元数据:描述数据的数据

(3)SVN的分支不特别,就是版本库的另外一个目录,查看是否合并了一个分支需要手工运行命令 svn propget svn:mergeinfo,经常容易发生遗漏

git的分支可以在同一个工作目录下快速切换,很容易发现未被合并的分支

(4)git没有一个全局版本号,而SVN有

(5)git的内容完整性优于SVN,git的内容存储使用的时SHA-1hash算法,在遇到磁盘故障和网络问题时降低对版本库的破坏

4、git的工作流程

1、克隆git资源作为工作目录
2、在克隆的资源上添加或修改文件
3、如果其他人修改了,可以更新资源
4、在提交前查看修改
5、提交修改
6、如果发现错误,撤回提交并再次提交修改

二、git的使用

1、创建仓库

使用当前目录为git仓库 git init 初始化一个git仓库 生成了一个.git文件
使用指定目录为git仓库 git init newrepo

如果当前目录下有几个文件想纳入版本控制

先使用 git add命令
然后提交 使用 git commit命令

比如说README文件
就是 git add README 和 git commit -m “初始化项目说明”

git clone []从现有git仓库中拷贝项目 类似于(svn checkout)

2、配置

git config

git config --list 显示git配置信息
git config -e 针对当前仓库
git config -e -global 针对系统上所有的仓库

设置提交代码时用户的信息

git config --global user.name “XXX”
git config --global user.email XXX

3、git 分支管理
(1)创建分支命令

git branch (branchname)
git branch 查看分支
-v 查看每一个分支的最后一次提交
–merged 显示已经合并的分支
–no-merged 显示未合并的分支

(2)切换分支命令

git checkout (brachname)
git checkout -b (brachname) 创建分支并切换到此分支下
git checkout -d (brachname) 删除分支

(3)合并分支命令

git merge (branchname)

git分支的补充
git保存的不是文件的变化或者差异,而是一系列不同时刻的快照

每进行一次提交,普通提交操作产生的提交对象包含一个指向上次提交对象(父对象)的指针

Head指针、master指针、new_branch指针

冲突产生的原因
如果在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改

解决的方法:

简单的情况

  • 首先,通过 git status 查看因为合并冲突而处于未合并状态的文件
  • 然后,打开包含冲突的文件,手动解决冲突 出现冲突的文件会包含一些特殊区段
    选择由“===========”分割的两部分中的一个或者自行合并这些内容
  • 接着,使用 git add命令标记冲突已解决
    当然也可以使用git mergetool命令启动一个可视化合并工具
  • 最后,确定所有的冲突文件已经修改完成,使用git commit命令完成合并提交

复杂的情况
git merge --abort 终止合并
git reset --hard HEAD 回到上一次提交的状态
忽略空白
git merge -Xignore-all-space 或者 -Xignore-space-change
手动文件再合并

分支开发工作流
长期分支 — master保留一个稳定的版本,然后创建一个新的分支进行后续开发,当新的分支确定稳定后,与master进行一个合并
主题分支 — 根据特性或者相关性将一个项目分成不同的分支,分别处理,最后进行合并操作
远程分支 — 连接到远程的仓库

4、git 提交历史

git log 查看历史提交记录
–oneline 查看历史记录的简洁版本
–graph 查看历史中什么时候出现了分支
–reverse 逆向显示所有的日志
–author 指定用户
–since 和 --before 指定日期(–until和–after)

git blame 以列表形式查看指定文件的历史修改记录

5、git 标签

git tag 查看标签
git tag -a 标签名

6、远程仓库

生成SSH Key ssh-keygen -t rsa -C “邮箱”
git remote add [shortname][url]
git push -u origin master

三、常用的git命令

1、创建命令

git init 初始化仓库
git clone 克隆仓库

2、提交与修改命令

git add 添加文件到仓库
git status 查看仓库当前的状态,显示有变更的文件
git diff 比较文件的不同,即暂存区和工作区的差异
gti commit 提交暂存区到本地仓库
git reset 回退版本
git rm 删除工作区文件
git mv 移动或者重命名工作区文件

3、提交日志命令

git log 查看历史提交记录
git blame 以列表形式查看指定文件的历史修改记录

4、远程操作命令

git remote 远程仓库操作

git ls -remote 来显式地获得远程引用的完整列表

git fetch 从远程仓库获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并

git remote add origin url

git push -u origin master

四、SourceTree

Windows和Mac OS X下免费的git和Hg客户端管理工具

拥有完成的git功能
(1)通过一次简单的用户界面使用所有的git命令
(2)通过一次单击,可管理所有的git库
(3)通过一次单击,可进行commit、push等操作
(4)可以连接到自己的github代码库等等

五、搭建Git服务器

1、安装git

ubuntu中 apt-get install git

2、添加用户

adduser xxx

passwd xxx

3、创建证书登录

cd /home/xxx/

mkdir .ssh

chmod 700 .ssh

touch .ssh/authorized_keys

chmod 600 .ssh/authorized_keys

chown -R git:git .ssh

打开认证

1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys

4、初始化git仓库

git init --bare sample.git

chown -R git:git sample.git

5、禁止shell登录

git:x1001:1001:,:/home/git:/usr/bin/git-shell

6、创建rsa密钥

生成密钥ssh-keygen -t rsa -C “youremail@example.com”

将密钥内容复制到authorized_keys

cat id_rsa.pub >>.ssh/authorized_keys

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值