git学习-菜鸟教程知识
发布日期:2022-02-01 14:28:06 浏览次数:36 分类:技术文章

本文共 6449 字,大约阅读时间需要 21 分钟。

安装

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 --versiongit 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 --versiongit 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 --listhttp.postbuffer=2Muser.name=runoobuser.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 *.cgit READMEgit 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中的keyGitHub上的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.gitgit clone /path/to/repositorygit clone username@host:/path/to/repository

工作流

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

在这里插入图片描述

  1. 推送改动
git push origin master #提交到远端仓库git remote add origin 
#连接仓库到远端
  1. 分支
    在这里插入图片描述
git checkout -b feature_x #创建分支git checkout master #切换分支git branch -d feature_x #删除分支git push origin 
#将分支推送到远端
  1. 更新与合并
git pull #更新本地仓库至最新改动git merge 
#合并其他分支#有可能出现冲突,需要修改git add
#标记为合并成功git diff
#比较差异
  1. 标签
git tag 1.0.0 1b2eld63ff #添加1.0.0标签git log #可以获取上面的ID
  1. 替换本地改动
#操作失误,可以替换本地改动git checkout --
#使用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上的SSHssh -T git@github.com #验证是否成功

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

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

git命令

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

在GitHub上在线修改README.md

git fetch origin #会显示更新后的信息git merge origin/mastergit 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 origingit remote add github git@github.com:.... # 先关联GitHub,起名githubgit remote add gitee git@gitee.com:.... #再关联gitee,起名gitee#如果要使用git push github mastergit 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

转载地址:https://blog.csdn.net/shunjianxaioshi/article/details/109308164 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux学习-菜鸟教程知识(一)
下一篇:Linux学习-菜鸟教程知识(二)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月27日 21时39分28秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

python barrier option pricing_《Python金融数据分析》书内代码实战与讲解(二)金融衍生物定价... 2019-04-21
java自带工具_深入了解Java JDK自带工具,包括javac、jar、jstack等,实用~ 2019-04-21
gnome mysql client_解决MySQLWorkbenchgnome-keyring-daemon错误的方法分享 2019-04-21
java线程占用CPU_在windows下揪出java程序占用cpu很高的线程并完美解决 2019-04-21
java多态替换switch_使多态性无法解决那些switch / case语句的麻烦 2019-04-21
java httpclient 进度条_如何使用Apache HttpClient 4获取文件上传的进度条? 2019-04-21
下列不属于java语言特点的是_下列选项中,不属于Java语言特点的一项是( )。... 2019-04-21
java中小数的乘法_javascript的小数点乘法除法实例 2019-04-21
kappa一致性检验教程_SPSS在线_SPSSAU_Kappa一致性检验 2019-04-21
linux shell mysql备份_linux shell 备份mysql 数据库 2019-04-21
Java双向链表时间复杂度_链表是什么?有多少种链表?时间复杂度是? 2019-04-21
unity3d能和java系统整合吗_Android与Unity3d的整合 2019-04-21
minecraft666java_我的世界的666的世界 2019-04-21
辽宁师范大学java_辽宁师范大学心理学院 2019-04-21
java程序有连接数据库_Java程序连接数据库 2019-04-21
java reduce.mdn_reduce高级用法 2019-04-21
java shape用法_Java PShape.scale方法代码示例 2019-04-21
java字符串三目_java字符串连接运算符和三目运算符 2019-04-21
java 堆内存 非堆内存_JVM 堆内存和非堆内存 2019-04-21
Java新手写什么demo_通过入门demo简单了解netty使用方法 2019-04-21