git 了解和基础学习
一、了解git
git是一种开源的分布式版本控制系统,也是cms内容管理系统,工作管理系统等。
与svn的区别:
1.git 是分布式,svn 集中控制的
2.git是按元数据方式存储,svn 是按文件存储
3.git 没有一个全局的版本号,而svn是有的
4.git的完整性优于svn,因为git 是SHA-1的hash 算法来存储内容,这能确保内容的完整性,在磁盘故障或网络问题时能降低对版本库的破坏。
二、git的基本概念
1.工作区:本地电脑上的工作目录,可以更新修改操作的工作目录
2.暂存区:即stage或index,一般git add 操作的数据,并不会提交到版本库,而是存储到这个暂存区中
3.版本库:即git commit 后提交的数据存储的地方,分为本地版本库和远程版本库。一般commit 后,就加入到本地版本库的某分支,而git push origin 才能提交到远程版本库中

三、git 命令

1.在本地创建仓库
git init 初始化本地仓库
git init newdir 在指定目录创建仓库
git clone <repo> <dir> 拷贝git 上的项目到本地指定目录中 如 git clone git://github.com/xxxxx/grit.git mydir
2.git 配置
git config --list 查看当前git 的配置信息
git config -e 编辑当前仓库
git config -e --global 编辑系统上的所有仓库的配置 如 git config --gloabal user.name "ruby" 或 git config --global user.email "xxx@126.com"
3.git 本地操作命令
git add [file1] [file2].... 添加多个文件到暂存区
git add [dir] 添加指定目录到暂存区
git add . 添加当前目录的所有文件到暂存区
git status 用于查看在你上次提交之后是否有对文件进行再次修改
git diff [file] 比较工作区的file 文件和暂存区文件的不同
git diff [commit_id1 commit_id2] 比较某个文件的两个提交版本之间的不同
git commit -m [message] 提交暂存库到本地仓库 ,message为提交的注解信息
git commit --amend 修改当前分支上最新一次提交的注解信息
git reset [--soft | hard] [commitID /HEAD] 命令用于回退版本,可以指定退回某一次提交的版本
注:--soft 是默认的 --hard:谨慎使用,会删除回退点之前的所有信息。
git rm [-f] [--cached] runoob.txt 删除暂存区和工作区的文件 -f为强制删除 --cached 是想把文件从暂存区域移除,但仍然希望保留在当前工作目录中
git mv [-f] file newfile 移动或重命名文件 -f指新文件名存在,但仍要命名
git show 查看最新的提交信息
git show (commitID) 查看指定提交的所有修改
git show (commitId )(fileName) 查看指定提交的某个文件的修改
4.远程操作文件命令
git remote -v 查看所有远程仓库
git remote show [remoteRepo] 查看某个远程仓库信息
git remote add [localversion] [remoteRepo] 添加本地版本到远程仓库
git remote rm [remoteRepo] 删除某个远程仓库
git remote rename [remoteRepo] 给远程仓库重命名
5.分支管理命令
git branch 列出本地分支
git branch branchName 创建branchName的分支
git checkout branchName 切换分支到branchName分支上
git checkout -b (branchname) 创建分支并且切换到branchname分支上
git branch -d (branchname) 删除分支
git merge(branchname) 合并某个分支到当前分支上
git cherry-pick (commitID) 合并其他分支上的提交某个版本 commitID:为提交的hash的前六位即可 如git cherry-pick 62ecb3
git rebase --onto (desBranch) (historycommitID) 合并当前分支的historycommitID-当前版本的信息到desBranch分支上,这个功能可以合并多个提交的版本到一个分支上
如git checkout -b newbranch 62ecb3 基于feature创建一个新的分支,并指明当前分支的版本为commitID为62ecb3
git rebase --onto master 76cada 得到的结果就是feature分支的commit 76cada ~62ecb3 都被合并到了master分支。其中新分支起到中间过渡的作用
git branch -m oldBranchName newBranchName 更改分支名称
6.远程分支管理命令
git push [repo|origin] newBranchName 向远程仓库提交重命名的分支
git push (repo|origin)--delete (branchname) 删除远程分支
git branch -r 查看远程的分支
git fetch [repo|origin] (remotBranch) 从远程仓库的指定分支上下载到本地上 如git fetch origin master 从远程的origin仓库的master分支下载代码到本地的origin master
git fetch [repo|origin] (remotBranch):(localBranch) 从远程仓库的指定分支上下载到本地上指定分支上 如git fetch origin master:temp 从远程的origin仓库的master分支下载到本地并新建一个分支temp
git remote show [repo|origin] 查看远程仓库分支
git remote prune [repo|origin] 整理远程仓库上已经不存在的分支。本地会与远程库进行一次同步,最终清理掉版本库中的存在的但远程仓库却不存在的分支,但本地工作区中的该分支并不会删除.
git remote prune [repo|origin] --dry-run # 查看本地仓库有哪些没用的分支需要清除
git branch -u [repo|origin] /addFile 或者 git branch --set-upstream-to origin/addFile 建立当前分支与远程分支的映射关系 如:git branch -u origin/addFile
git branch --unset-upstream 撤销本地分支与远程分支的映射关系
git branch -vv 查看分支与远程分支追踪状态
7.日志查看命令
git log 查看历史提交记录
git log --online 查看历史提交的简洁版本
git log --graph 开启拓扑结构选项,看历史中什么时候出现了分支、合并
git log --reverse 参数来逆向显示所有日志
git log --author=username --oneline -num 只想查找指定用户的提交日志可以使用命令 如git log --author=Linus --oneline -5 找 Git 源码中 Linus 提交的部分
注:以上-- 中的选项是可以综合使用的,根据需求来联合使用
git blame <file> 以列表的形式显示修改记录
git reflog 操作日志
8.其他
git clean 参数
-n 显示 将要 删除的 文件 和 目录
-f 删除 文件
-df 删除 文件 和 目录
如:git clean -xdf :放弃修改或新增的没有加入暂存区的文件
浙公网安备 33010602011771号