文章目的:教你使用git
从一开始学习git的蒙蔽,到后来轻松使用git命令进行操作,再到现在重新整理下我个人比较常用的git命令
git的创建者
Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。
什么是git
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
git的安装(linux)
sudo apt-get install git
检验是否安装成功
git version
git的使用
创建git仓库:cd到项目目录,git init,通过git init
命令把这个目录变成Git可以管理的仓库。
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
将目录cd到你的git项目中,开支执行命令
git branch 展示项目所在的分支
git branch -a 展示项目所有的分支
git checkout 分支名 检出分支代码
[git的使用从头到尾的命令]
mkdir new_git
cd new_git
git init(生成.git 目录,初始化git仓库)
git add 文件名(将文件添加到仓库)
git commit -m ""(将文件提交到仓库)
git status(查看仓库当前状态)
git diff 文件名(可以查看某个文件的改动 )
git log(查看commit的历史,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数,在Git中,用HEAD
表示当前版本)
版本穿梭
git reset --hard commit_id
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。 -
穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 -
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
git checkout -- 文件名 取消对工作区的修改
git remote add origin 远程仓库url(git@github.com:2737592842/test_git.git)(将本地仓库推送到远程仓库)
git remote
git remote -v查看远程仓库信息
git pull拉取远端
git push 将本地库推送到远程库
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
git tag v1.0打标签(切换到想要打标签的位置,git tag下)
git tag查看标签
git tag -d 删除标签
.gitignore文件中注明不提交的文件
上述工作原理
工作区、暂存区、本地版本库、远端版本库
GIT远程仓库
本地Git仓库和GitHub仓库之间的传输是通过SSH加密,因此需要在本地生成公钥和私钥,公钥上传到git上即可
?
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
git分支的指针原理
创建一个分支其实就是创建一个指针。。。。。删除分支就是删除一个指针。。。。。。。。。。。。合并分支就是修改指针指向的位置
git branch dev 创建分支
git checkout dev切换到该分支
git checkout master
git merge dev合并dev分支
git branch -d dev删除dev分支(删除指针)
[
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
]