git 使用整理

1. git 原理

git与其他版本控制器不同,不保存文件前后变化的差异数据,只保存每次变化的文件的快照,生成指纹索引并保存在当前目录下。它能够用一条命令就快速的创建一个本地分支。
git是分布式版本控制系统,没有中心服务器,每台电脑就相当于一个完整的版本库,一般工作不需要联网,因为版本都保存在自己的电脑上,并且当前项目的所有历史更新都会存储在本地磁盘上,保证了高效的数据处理。
每个git工作目录的根目录下都只有一个.git目录,它是用来保存元数据和对象数据库的地方,所以每一个项目目录都是一个带有历史记录和版本信息的仓库,不依赖与网络与中央服务器
对于任何一个文件,git内部只有三种状态:已修改,已暂存,已提交;其内部的工作方式如下图所示:

git 使用整理_第1张图片
git add 相当于添加到暂缓区、git commit相当于添加到本地仓库,git push相当于推送到远程仓库


2. git 客户端基本使用

1)上传密钥
git内部服务器一般使用ssh协议,客户端需要生成一个公钥上传到git服务器方可进行上传操作
密钥生成命令行:ssh-keygen -t rsa
默认生成的密钥在home目录的.ssh目录下,密钥文件默认名称为id_rsa和id_rsa.pub,前者是私钥,后者是公钥。然后把你的公钥发给Git仓库管理员,然后你就可以通过ssh协议来访问服务器端,期间程序会自动进行密钥对匹配,如果你设了访问密码,你可能需要输入密码。

2) 基本命令使用说明
--> git remote -v
列出远程服务地址
--> git remote add my_origin git@server/some.git
添加一个远程服务地址
--> git config --global  user.name "yourname"
git config--global  user.email "youremail@"
配置git仓库的用户名及邮箱地址,global表示应用于所有git仓库,也可单独为某个仓库设置用户信息
--> git clone git@project/aaa.git
从远程仓库获取一个项目
--> git status
查看工作目录文件状态
--> git pull origin master:
更新本地仓库代码到origin服务器的master分支上
--> git push origin master
提交本地仓库更新到origin服务器的master分支上
--> git log 查看所有log详细信息
--> git reflog 查看索引log信息
--> git ls-files 列出所有git文件
git ls-files -d 列出被本地删除的git文件
--> git checkout -- filename
从暂缓区域恢复文件,并撤销内容修改
--> git reset filename
重置为本地仓库内容
git reset HEAD filename
充值为master仓库内容
git reset --hard  hash_version
恢复到某个版本
--> git add filename
添加文件到暂存区域
--> git commit -m"comment"
提交文件到本地仓库
git commit -a -m"comment"
添加文件到暂缓区并提交到本地仓库

//工作现场命令
--> git stash     
隐藏当前工作现场
git stash list   
列出所有隐藏工作现场
git stash pop 
恢复工作现场

分支应该是一个稳定的用来发布新版本的,一般情况在一个新的分支上干活,完成之后,再合并到主分支上来
//分支相关操作
--> git branch -a       
显示所有分支
git branch name   
创建分支
git checkout branch_name 
切换到一个分支
git branch -d branch_name 
删除一个分支
--> git merge branch_name -m"comment"
merge一个分支的内容到当前分支,如果有冲突手动修改再提交

git相关命令与存储阶段关系图: 

git 使用整理_第2张图片
相关命令与工作阶段关系图


git 使用整理_第3张图片
git reset 说明


3. 使用注意事项

1)第一次从服务器上复制一个仓库,可能会比较慢,因为git要把所有的历史记录和版本信息全部复制下来;
2)git默认是要只读的,要上传文件需要生成密钥保存到服务器端;
3)每次提交代码,需要add到暂缓区再commit;
4)HEAD代表的就是master主分支;

4.参考学习文档

http://git-scm.com/docs
http://git-scm.com/book/zh
http://blog.jobbole.com/78960/


5. 问题:

1. 如何拉取某个分支的某个提交到当前分支:使用 cherry-pick
https://segmentfault.com/q/1010000004969339?_ea=744739



PS:此文根据参考文章的内容及图片说明进行整理,相关操作都进行了实际测试

你可能感兴趣的:(git 使用整理)