git学习-菜鸟教程知识

安装

git各平台安装包下载地址:http://git-scm.com/downloads
源码安装 安装依赖包

########## Centos/RedHat ##########
$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

########## Debian/Ubuntu ##########
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

解压

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

Linux安装

Ubuntu/Debian安装:

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev

$ apt-get install git

$ git --version
git version 1.8.1.2

CenteOS/RedHat

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

$ yum -y install git-core

$ git --version
git version 1.7.1

Windows安装

安装包:https://gitforwindows.org/
国内的镜像:https://npm.taobao.org/mirrors/git-for-windows/

git配置

/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。

~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。

当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量

用户信息

配置用户名和邮箱

$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

文本编辑器

一般是vi或者vim,修改为emacs

$ git config --global core.editor emacs

差异分析工具

要修改使用一下命令

$ git config --global merge.tool vimdiff

查看配置信息

$ git config --list
http.postbuffer=2M
user.name=runoob
user.email=test@runoob.com

git工作流程

  • 克隆git资源为工作目录
  • 在克隆资源的基础上修改文件
  • 其他人修改了,可以更新资源
  • 提交前查看修改
  • 提交修改
  • 修改后发现错误,可以撤回修改后在进行提交。
    在这里插入图片描述

Git工作区,暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

在这里插入图片描述
左侧为工作区,右侧为版本库,版本库中的index即为暂存区。master是主干。objects是git的对象库

当对工作区有改动时,执行git add命令,暂存区的目录会有更新,同时工作区修改的文件会写入objects中,创建新对象,新对象ID会存入index中。

执行git commit命令时,master会做更新,master树会更新index树。
执行git reset HEAD命令时,暂存区的目录树会重写,被master重写
执行git rm --cached file命令时,会直接从暂存区删文件
执行git checkout file命令时时,会用暂存区的文件替换工作区文件,有可能工作区文件还未放入暂存区,此操作危险
执行git checkout HEAD file命令时,会将master文件替换工作区和暂存区文件,此操作危险

git 创建仓库

git init

使用当前目录作为git仓库

git init

当执行完后会在当前目录生成一个.git目录

git init newrepo

会在指定newrepo下创建一个.git文件,数据和资源都放在这个目录下

git add *.c
git README
git commit -m '初始化项目版本'

会将.c文件和README文件提交到版本库

git clone

git clone repo directory

repo:git仓库 directory:指定目录

配置

git config --list 显示当前git配置
git config -e 针对当前仓库进行配置修改
git config -e global 针对所有仓库
git config --global user.name "root" 修改提交代码时的用户信息
git config --global user.email test@163.com

git基本操作

在这里插入图片描述

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:或本地仓库
  • remote repository:远程仓库
    git常用命令:git clone、git add、git push、git commit、git checkout、git pull
  • git clone 下载一个项目
  • git init 初始化仓库
  • git add 添加文件到暂存区
  • git commit 将暂存区内容添加到仓库
  • git status 查看仓库当前状态
  • git diff 比较暂存区和工作区的不同
  • git reset 回退版本
  • git rm 删除工作区文件
  • git mv 移动或重命名工作区文件
  • git log 查看历史提交记录
  • git blame file 以列表形式查看指定文件历史修改记录
  • git remote 远程仓库操作
  • git fetch 从远程获取代码库
  • git pull 下载远程代码并合并
  • git push 上传远程代码并合并

git分支管理

使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

git branch branchname 创建分支
git checkout branchname 切换分支
git merg 合并分支命令
git branch 列出分支
git branch -d branchname 删除分支

使用不同分支可以让我们在不同环境中做事

git查看提交历史

git log --online 查看历史记录的简洁的版本
git log --graph 查看历史中什么时候出现了分支、合并
git log --reverse --online 查看历史,逆向
git log --author=Linux --online -5 指定用户
git log --online --before={3.weeks.ago} --after={2020-9-25} 指定日期
git blame file 指定文件的修改记录

git标签

git tag -a v1.0 执行命令时,Git 会打开你的编辑器,让你写一句标签注解
git log --decorate 查看
git tag -a v0.9 xxx 追加xxx行的标签
git tag 查看所有标签
git tag -a tagname -m "xxxx" 指定标签信息

git Github

Github 代码托管平台

配置git
$ ssh-keygen -t rsa -C "在GitHub上注册的邮箱"
一直回车,复制~/.ssh/id_rsa.pub中的key
GitHub上的Account Settings中SSH keys,Add SSH Key,粘贴Key

验证:
$ ssh -T git@github.com

$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"

进入要上传的文件夹,右击git bash,添加远程地址
$ git remote add origin git@github.com:yourName/yourRepo.git

git clone /path/to/repository
git clone username@host:/path/to/repository

工作流

  1. 修改并添加到暂存区
git add <filename>
git add *
  1. 提交
git commit -m "代码提交信息" #已提交到本地仓库HEAD

在这里插入图片描述

  1. 推送改动
git push origin master #提交到远端仓库
git remote add origin <server> #连接仓库到远端
  1. 分支
    在这里插入图片描述
git checkout -b feature_x #创建分支
git checkout master #切换分支
git branch -d feature_x #删除分支
git push origin <branch> #将分支推送到远端
  1. 更新与合并
git pull #更新本地仓库至最新改动
git merge <branch> #合并其他分支
#有可能出现冲突,需要修改
git add <filename> #标记为合并成功
git diff <source_branch> <target_branch> #比较差异
  1. 标签
git tag 1.0.0 1b2eld63ff #添加1.0.0标签
git log #可以获取上面的ID
  1. 替换本地改动
#操作失误,可以替换本地改动
git checkout --<filename> #使用HEAD中新内容替换工作目录中的文件。
git fetch origin #丢弃本地改动,去服务器获取最新版本
git reset --hard origin/master
  1. 实用小贴士
gitk #内建图形化
git config color.ui true #彩色的git输出
git config format.pretty oneline #历史记录显示一行
git add -i #交互式提交文件到暂存区

github

在这里插入图片描述

git remote add [shortname] [url] #添加新的远程仓库
ssh-keygen -t rsa -C "youremail@example.com" #生成SSH Key
一路回车会在~/.ssh/id_rsa.pub有key,复制
粘贴加入到GitHub上的SSH
ssh -T git@github.com #验证是否成功

点+、New repository、填写name、Create repository。创建新Git仓库。

mkdir test
cd test
echo "Hello World" >> README>md
ls
git init #初始化
git add README.md #添加文件
git commit -m "添加 README.md文件" #提交备注信息
git remote add origin git@github.com:xxx/test.git #提交到github
git push -u origin master

git命令

git remote #查看有哪些远程仓库
git remote -v #可以看到实际链接地址
git fetch #从远程下载新分支与数据 可以一次拉取多个分支
git merge #合并分支到当前分支 也可以一次合并多个分支

在GitHub上在线修改README.md

git fetch origin #会显示更新后的信息
git merge origin/master
git push [alias] [branch] #将[branch]分支推送到[alias]
$ touch test.txt #创建文件
$ git add test.txt
$ git commit -m '添加远程'
$ git push origin master # 推送到GitHub
删除远程仓库
git remote rm [别名]
$ git remote -v
$ git remote add origin2 git@github.com:.....
$ git remote rm origin2

Git Gitee 国内的

注册账号并上传ssh
将本地库与Gitee远程库关联

git remote add origin git@gitee.com:.....
#如果报错:说明已经关联了,先git remote -v查看一下,然后删除
git remote rm origin #再进行关联,再查看

可以关联两个远程仓库

git remote rm origin
git remote add github git@github.com:.... # 先关联GitHub,起名github
git remote add gitee git@gitee.com:.... #再关联gitee,起名gitee
#如果要使用
git push github master
git push gitee master

在这里插入图片描述

Git服务器搭建

以centos为例

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git

#创建一个git用户组和用户,用来运行git服务
$ groupadd git
$ useradd git -g git

# 创建证书登录
# 收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,导入到/home/git/.ssh/authorized_keys文件里,一行一个
$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys

# 初始化Git仓库
# 选定一个目录作为Git仓库
$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo

$ git init --bare runoob.git
# 以上创建了一个Git空仓库
$ chown -R git:git runoob.git

# 克隆仓库
$ git clone git@192.168.45.4:/home/gitrepo/runoob.git
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值