目录:

1、git的优势
2、需理解的概念
3、操作指令

本篇文章只将git是什么,git的优势,以及常用的操作指令,不会涉及到git库的安装,环境配置等。

1、git的优势

  • git是分布式版本管理系统,svn等的是集中式(有安全隐患,服务器挂了就都没了)。
  • git跟踪并管理的是修改,而非文件。

2、学习git之前需要理解的概念:

版本库:

又名仓库(respository),可将其理解成一个目录,该目录下的所有文件都会被git管理起来,每个文件的修改、删除、git都能跟踪,以便随时追踪历史,和还原。 .git隐藏目录就是git的版本库,里面存了很多东西,最重要的就是stage(index)暂存区,还有第一个分支master,以及指向master的HEAD指针。

工作区:

就是在电脑里能看到的目录

暂存区

暂存区(stage)就是每次git add时,文件的修改存放的地方。git commit时就是一次性把暂存区所有修改提交到分支。

HEAD

HEAD是一个指针,总是指向当前分支。仓库版本的回退和追踪都是通过操作HEAD指针来完成。

标签(tag)

有了commit id为什么还要tag,因为commit id不好找,tag是有意义的名字,它与commit绑在一起。

其他要点

  • 每一次git commit,都会生成一个commit id记录该次提交,Git都会将它们串成一条时间线,这条时间线就是一个分支。
  • 因为创建、合并、删除分支都很快,所以git鼓励你使用分支完成某个任务,合并后再删除分支。过程比直接在master分支工作更安全,且效果一样。
  • 分支策略:master分支应该是非常稳定的,仅用来发布新版本,平时不能在上面干活,干活都在dev分支,dev是不稳定的,到1.0发布时,再将dev合并到master上,由master发布新版本。

3、操作指令

---------- 基本操作指令-----------
git init :创建仓库
git add [file]:添加文件到暂存区
git commit -m "[content]":提交文件到仓库
git status:查看仓库当前的状态
git diff:查看修改内容
git diff HEAD -- [file]:查看工作区和版本库里最新版本的区别
git log:查看历史记录(退出git log:英文状态下按Q)
git log --pretty=oneline:一行查看历史记录
git reset --hard HEAD^:回退上到上一个版本
git reset --hard [commit id]:回到指定的某个版本
git reset HEAD [file]:把暂存区的修改撤销,重新放回工作区
git reflog:查看命令历史(此方法可以获取commit id)
git checkout -- [file]:丢弃工作区的修改(1、没有放到暂存区时:撤销会回到和版本库一模一样的状态。2、已加到暂存区:撤销修改会回到天津到暂存区后的状态):本质是用版本库里的版本替换工作区的版本。
git rm [file]:删除某个文件
-----------分支操作指令---------
git branch:查看当前分支,当前分支前会有*号。
git branch [name]:创建一个分支
git checkout [name]:切换分支
git checkout -b [name]:创建并切换分支
git merge [name]:指定分支到当前分支(Fast-forward模式:删除分支后会丢掉分支信息)
git merge --no-ff -m "content" [name]:--no-ff表示禁用Fast-forward模式,
git branch -d [name]:删除一个分支
git log --graph --pretty=oneline:查看分支合并图
git branch -D [name]:进行强行删除,丢弃一个没有被合并的分支
-----------修改bug时----------
git stash:手头工作没有完成,用stash把工作现场储存起来,可放心创建分支修复bug。
git stash list:查看工作现场的储存库
git stash apply:恢复,但stash内容不会删除。
git stash drop:删除stash内容
git stash pop:恢复的同时把stash内容也删了
git stash apply stash@{0}:多次stash时,可以恢复指定的stash。
-----------远程仓库操作指令--------
git remote:查看远程仓库信息
git remote -v:查看更详细的信息
git remote add origin [远程仓库地址]:添加远程服务器地址,私钥配在远程仓库,所以ssh公钥必须在电脑的账户列表中才能推上去。
git push -u origin master:把当前分支推到远程,-u表示将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
git clone [远程仓库地址]:将远程仓库克隆到当前目录下
git push origin [name]:从本地推送分支,如果失败,先用git pull抓取远程的新提交
git pull:抓取远程分支的新提交,如果提示"no tracking information",说明本地分支和远程分支的链接关系没有创建,要用以下命令
git brach --set-upstream [name] origin/[name]:本地分支和远程分支建立链接。
-----------创建ssh key到系统用户目录--------
ssh-keygen -t rsa -C "youremail@example.com"
-----------标签管理-----------
git tag:查看所有标签
git tag [name]:在当前分支下打出一个新标签,默认标签是打在最新提交的Commit上的。
git tag [name] [commit id]:对某一个commit id打上标签
git show [tag-name]:查看某个标签信息
git tag -a [name] -m "[content]":创建带有说明的标签,-a标签名,-m说明文字。
git tag -d [name]:删除本地标签
git push origin :refs/tags/[tag-name]:删除一个远程标签
git push origin [tag-name]:推送某个标签到远程
git push origin --tags:一次性推送所有标签
复制代码

参考

转载于:https://juejin.im/post/5adb1720f265da0b80704fb8

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐