git笔记

仅自学复习之用

date:2019/4/13

. git是什么
. github及名词概念
. git常用命令
. 软件及连接


一.git是什么##

git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。



二.github及名词概念##

gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。正是Github,让社会化编程成为现实。

  • 数据库 (Repository) 是记录文件或目录状态的地方,存储着内容修改的历史记录。在数据库的管理下,把文件和目录修改的历史记录放在对应的目录下。

  • 远程数据库: 配有专用的服务器,为了多人共享而建立的数据库。

  • 本地数据库: 为了方便用户个人使用,在自己的机器上配置的数据库。

  • 提交:若要把文件或目录的添加和变更保存到数据库,就需要进行提交。执行提交后,数据库中会生成上次提交的状态与当前状态的差异记录(也被称为revision)。

提交信息的注解:(此处为注解标签)
第1行:提交修改内容的摘要
第2行:空行
第3行以后:修改的理由

  • 推送(push):为了将本地数据库的修改记录共享到远程数据库,必须上传本地数据库中存储的修改记录。
  • 克隆(Clone)复制远程数据库到本地(从无创建新的数据库,包括更新记录)
  • 拉取(Pull)可以把远程数据库的内容更新到本地数据库。
  • 冲突在执行pull之后,进行下一次push之前,如果其他人进行了推送内容到远程数据库的话,那么你的push将被拒绝。发生冲突的部分会用<<<<>>>>>标注,须手动解决冲突。
  • 分支是为了将修改记录的整体流程分叉保存。分叉后的分支不受其他分支的影响,所以在同一个数据库里可以同时进行多个修改。
  • master在数据库进行最初的提交后, Git会创建一个名为master的分支。因此之后的提交,在切换分支之前都会添加到master分支里。
  • Merge分支Topic分支:Merge分支,随时发布release而创建的分支,稳定第一。通常使用master分支替代。Topic分支是为了开发新功能或修复Bug等任务而建立的分支。若要同时进行多个的任务,创建多个的Topic分支,完成任务后合并回master。
  • checkout:切换分支。
  • HEAD指向的是现在使用中的分支的最后一次更新。通常默认指向master分支的最后一次更新。通过移动HEAD,就可以变更使用的分支。
  • stash:临时保存文件修改内容的区域。stash可以暂时保存工作树和索引里还没提交的修改内容,您可以事后再取出暂存的修改,应用到原先的分支或其他的分支上。
  • 分支的合并:merge或rebase。merge保持修改内容的历史记录,但是历史记录会很复杂。rebase历史记录简单,是在原有提交的基础上将差异内容反映进去。因此可能导致冲突需手动解决冲突。向merge分支导入topic分支的话,先使用rebase,再使用merge。
    merge
    *
    rebase
  • 4种分支:masterdevelophotFixelease
  • master分支只负责管理发布的状态。在提交时使用标签记录发布版本号
  • develop分支是针对发布的日常开发分支,有合并分支的功用
  • release通常会在分支名称的最前面加上release-。release前需要在这个分支进行最后的调整,而且为了下一版release开发用develop分支的上游分支。
  • hotFix产品需要紧急修正时,最好选择从master分支直接创建分支进行修改,然后合并分支。通常会在分支名称的最前面加上 hotfix-。
  • fetch可以取得远程数据库的最新历史记录。取得的提交会导入到没有名字的分支,这个分支可以从名为FETCH_HEAD的退出。pull=fetch + merge.
  • 标签:标签是为了更方便地参考提交,分为轻标签注解标签
  • amend:修改同一个分支最近的提交内容和注解。
  • revert可以取消指定的提交内容,不能随便删除已经发布的提交,这时需要通过revert创建要否定的提交。
  • reset可以遗弃不再使用的提交。
  • cherry-pick:从其他分支复制指定的提交,然后导入到现在的分支。
  • 改写提交:rebase的i选项可以改写、替换、删除或合并提交。
  • 汇合提交:merge的选项squash汇合主题分支的提交到一个节点,然后合并提交到目标分支。

三. git常用命令##

基本

git --version   //查看git的版本信息
git config --global user.name   //获取当前登录的用户
git config --global user.email  //获取当前登录用户的邮箱

登录git

/* 如果刚没有获取到用户配置,则只能拉取代码,不能修改  要是使用git,你要告诉git是谁在使用*/
 
git config --global user.name 'userName'    //设置git账户,userName为你的git账号,
git config --global user.email 'email'

创建文件夹

mkdir XXX    //创建文件夹XXX
cd XXX       //切换到XXX目录下

初始化git仓库

git init //在当前位置初始化一个仓库(会生成一个.git隐藏文件夹)

查看目录

ls  //查看当前文件夹目录的内容

查看目录

ls  //查看当前文件夹目录的内容

将变更增加到stage(暂存区)

git add . //把本地的修改加到stage中
git add -A      //全部添加到缓存区

增加到版本库中

git commit -m '备注信息'
git commit -a //跳过stage缓存区,直接提交

比较差异

git diff     //比较的是暂存区和工作区的差异
git diff --cached   //比较的是暂存区和历史区的差异
git diff master   //比较的是历史区和工作区的差异(修改)

撤回内容

git checkout index.html //用暂存区或者版本库中的内容覆盖掉工作区

目录状态

git status //显示目录有没有添加或者修改文件

删除本地文件

rm fileName

只删除暂存区的内容

git rm index.html --cached //保证当前工作区中没有该文件

回滚版本

git reset --hard HEAD/commit_id  //回滚最近的一个版本 git log

撤销回滚

git reflog

分支管理

git branch dev //创建分支
git checkout -b dev //创建并切换分支
git branch -d dev //删除分支
git commit -a -m 'dev1' //在分支上提交新的版本
git merge dev //merge合并分支
git log --oneline --graph --decorate //分支的合并后显示log

临时切换其他分支


git stash //保留当前内容
git stash apply  //在次切换分之后需要应用一下保留的内容
git stash drop  //丢掉保存的内容
git stash pop  //使用并丢掉???
git stash list //Git栈信息
git stash clear //清空Git栈

最佳分支

git rebase //合并分支把树杈掰到主干上

远程仓库

git push origin master -u   //获取最新代码
git remote add origin //仓库的地址
git remote -v //查看远程仓库
git remote rm origin //删除远程仓库

git常用命令

安装及配置:

Ubuntu下安装:sudo apt-get install git
配置用户名:git config --global user.name "你的名字"
配置e-mail:git config --global user.email "你的邮箱@xx.com"

与添加有关的:

将当前目录变为仓库:git init
将文件添加到暂存区:git add 文件名 [可选:另一个文件名]
将暂存区提交到仓库:git commit –m "描述"

与查询有关的:

查询仓库状态:git status
比较文件差异(请在git add之前使用):git diff 文件名
查看仓库历史记录(详细):git log
查看仓库历史记录(单行):git log --pretty=online 或 git log --online
查看所有版本的commit ID:git reflog

与撤销有关的:

撤销工作区的修改:git checkout -- 文件名
撤销暂存区的修改:git reset HEAD 文件名
回退到历史版本:git reset --hard 该版本ID
回退到上个版本:git reset --hard HEAD^
上上版本是HEAD^^,也可用HEAD~2表示,以此类推

与标签有关的:

为当前版本打标签:git tag 标签名
为历史版本打标签:git tag 标签名 该版本ID
指定标签说明:git tag –a 标签名 –m "标签说明" [可选:版本ID]
查看所有标签:git tag
查看某一标签:git show 标签名
删除某一标签:git tag –d 标签名

与GitHub有关的:

先有本地库,后有远程库,将本地库push到远程库

关联本地仓库和GitHub库:git remote add origin 网站上的仓库地址
第一次将本地仓库推送到GitHub上:git push –u origin master

先有远程库,后有本地库,从远程库clone到本地库

从远程库克隆到本地:git clone 网站上的仓库地址

网站地址可以选择HTTPS协议(https://github.com...)、SSH协议(git@github.com...)。
如果选择SSH协议,必须将Ubuntu的公钥添加到GitHub上。见下一步

SSH Key

生成SSH Key:ssh-keygen –t rsa –C "你的邮箱@xx.com"
生成Key时弹出选项,回车选择默认即可。
Key保存位置:/root/.ssh
登陆GitHub,创建new SSH key,其内容为/root/.ssh/id_rsa.pub中文本

已经有了本地库和远程库,二者实现同步

本地库的改动提交到远程库:git push origin master
更新本地库至远程库的最新改动:git pull


四. 软件及连接

msysgit下载地址

资料来源:
1.https://www.cnblogs.com/libin-1/p/5918468.html
2.https://backlog.com/git-tutorial/cn/
3.https://blog.csdn.net/tomatozaitian/article/details/73515849

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。