Git入门

Git入门

git

介绍

git ,Linux创始人Linus花了一周时间开发出来的分布式版本控制管理系统,称git为开源软件的基石一点也不为过。

CVS/SubversionGit
集中式版本控制系统,客户端需要先从服务器端下载最新的代码,开发完成后再将代码交给服务器分布式版本控制系统,没有服务器端与客户端的区别,每台计算机上都保存了一份完整的代码库,代码一旦修改就会推送同步到其他计算机的版本库

基本概念

git 设计出色是因为其跟踪和管理的是文件的修改而非文件本身。git 主要维护三个工作区域,分别是

工作目录(Working Directory),暂存区(又称索引区域)和版本仓库区域

开发流程:

$: mkdir Code 创建一个空的目录用来保存开发程序或项目源代码,称之为工作目录

//进入工作目录,由git对此目录进行初始化,其实质就是在项目目录下创建一个名为git的隐藏文件夹(.git)
//初始化后git即可对源代码文件进行跟踪和项目管理

$: cd Code

$: git init

// Code 工作目录
//.git/index 暂存区
//.git/objects 版本仓库区域

版本仓库区域 :arrow_right: 暂存区  :arrow_right: 工作目录

工作目录 :arrow_right: 暂存区 :arrow_right: 版本仓库区域

工作流程:

开发者在工作区创建一个源代码文件

需要git对其进行跟踪(工作目录中的文件要么处于已跟踪状态,要么处于未跟踪状态)

将此文件进行索引(index/stage),并将索引内容保存到 .git/index 文件中(没有提交文件到暂存区此文件不存在)

索引文件并不保存文件的内容,需要提交后将文件内容保存到 git 对象库中 (.git/objects)

文件索引建立了文件和代码库中对象实体之间的对应关系,便于分批和分阶段提交代码内容,并对文件进行快照,便于回退操作。

基本操作

安装和配置

//安装
$: sudo aptitude install -y git
$: git --version
git version 2.7.4

//配置
git config -l  #查看git默认配置

//添加用户电子邮件和用户名称
git config --global user.email "15950513866@163.com"
git config --global user.name "1-riverfish"

//设置默认编辑器,当然是emacs
git config --global core.editor "emacs"

//启用git输出显示颜色
git config --global color.ui true

//查看上述配置
git config --list
user.email=15950513866@163.com
user.name=1-riverfish
core.editor=emacs
color.ui=true

重要配置文件

  1. .gitconfig

使用 git config 命令设置的结果全部保存在这个文件中

  1. .gitignore

保存需要忽略的文件或文件夹名

*.o
*.ko
*.obj

debug/

上述配置文件都是重要文件,最好做一下备份

高频操作

  1. 获取帮助
git --help
git clone --help

man git
man git clone
  1. 创建本地版本库
//1.初始化全新版本库 
mkdir mypro
cd mypro
git init #初始化时不创建.git目录,原先该目录中的内容直接保存到工作目录可以使用 --bare 选项,裸版本库

//2.克隆远端版本库
git clone git://github.com/git/git  #一般情况下,裸版本库(Bare Repository)约定俗成以.git为拓展名

git clone git://github.com/git/git mypro #指定本地版本库名称

//检查克隆版本库的正确性
git fsck
  1. 向版本库添加和提交新文件
1.编辑器创建文件
emacs hello.cpp

2.添加新文件到暂存区
git add hello.cpp

git add . #将所有修改过的工作目录文件一次性全部放到暂存区

git add -i #交互式添加多个文件

3.提交文件到版本库
git commit -m "Hello World program"     #-m参数后的双引号是代码提交内容的说明,成功提交文件后,在.git 目录下的objects目录下会多出几个十六进制的目录

//查看提交的详细信息
git show

//查看文件的状态信息
git status
或
git status -s

//取消已经暂存的文件
git reset HEAD hello.cpp

//如果修改了源代码文件,则需要重新添加到暂存区和版本库
git add hello.cpp
git commit
git show

//从版本库删除文件

1.rm命令删除文件
rm -rf hello.cpp

2.从暂存区删除文件
git rm hello.cpp

3.提交删除
git commit

git show

//只是从暂存区中删除且不能删除文件
git rm --cached hello.cpp

//缓存或提交文件后,查看尚未暂存的文件更新了哪些部分
git diff # 查看工作目录和暂存区域之间的差异

//查看暂存区和上次提交时快照之间的差异
git diff --cached
上述操作说明 --cached  参数只对暂存区文件有效

//查看提交历史
git log

git log -p #展开显示每次提交的内容的差异

git log -3 #指定显示历史记录的次数,最新三次
  1. 版本库的分支操作
//版本库初始化后默认的分支名为 master
git branch
* master

1.创建和切换分支
git branch dev
git checkout dev
或者,合二为一
git checkout -b dev

2.删除分支
git branch -d dev   #如果当前分支为dev,则无法运行上述命令

3.合并分支
git merge dev

#撤销此次合并
git reset --hard ORIG_HEAD

#查看哪些分支已被并入当前分支
git branch -merged

#查看哪些分支未被并入当前分支
git branch -no-merged

//HEAD是一个指向当前分支的指针
  1. Git远程服务器操作
//通过git操作的不是本地版本库而是远程服务器上的版本库
//需要一个Github账户并且配置相关的 SSH Key

1. git@github.com:1-riverfish/git-test.git

//创建SSH Key
ssh-keygen -t rsa -b 4096 -C "15950513866@163.com"

//切换到 ~./ssh目录下,复制id_rsa.pub文件内容到Github Settings左侧的SSH and GPG keys-SSH keys配置页面

2.测试连通性
ssh -T git@github.com
Hi 1-riverfish! You've successfully authenticated, but GitHub does not provide shell access.

3.连接到Github版本库
git remote add origin git@github.com:1-riverfish/git-test.git

#报错:fatal:remote origin already exists,删除 origin 即可
git remote rm origin

4.从Github获取文件
    git fetch --all  #不会覆盖本地版本库
    git pull origin master #覆盖本地版本库,当前的master分支就变了样子
上述远程库的名字是 origin ,这是git默认的叫法,最好不要改名

5.推送本地版本信息至Github
git push -u origin master

//查看远端服务器的详细信息
git remote

#显示远程服务器的版本库地址
git remote -v

参考书籍:《完美应用Ubuntu 第三版》

Any question please contact 1-riverfish

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值