Git的简单理解及基础操作命令详解
git和svn有什么区别呢? git采用分布式版本库管理,而svn采用集中式版本库管理。 集中式版本库管理需要有一台存放版本库的服务器,开发人员在开发的时候分别从服务器拉取过来最新版本,然后创建/进入分支进行开发,开发完成之后将分支提交或者合并到主分支。 分布式版本库管理允许开发者们将版本库搬到自己的电脑上,在开发过程中,开发者们可以根据不同的目的创建分支和修改代码,开发完成后进行各项合并,这样做提高了开发的敏捷性和速度,并且减少了公共服务器的压力,且任意两个开发者之间的冲突更容易得到解决。 git安装 首先,你可以在你的电脑上执行"git"命令,检查是否已安装git。如果已安装,则会列出它的选项和最常用的子命令。如果未安装,则打印提示未安装或不是内部/外部命令。 安装包下载地址:git.download,按需选择吧,想必凭各位多年的电脑开关机经验,QQ、浏览器、游戏等的安装卸载经验,这步骤应该不会出现什么问题。 git的配置 安装完git,我们执行"git"命令查看它的选项和最常用的子命令。 //这里命令也就不一一列出了,大家自己执行看下即可(让我伪装下注释,谢谢~) 然后就是配置你的名称及邮箱: git config --global user.name "yeshou" git config --global user.email xxx@qq.com 我们可以通过根目录下的.gitconfig文件查看配置信息,这里加了--global,所以是全局配置,若其他仓库木有单独配置,则使用的是全局的,如果其他仓库需要单独配置,去掉--global重复以上操作即可,同理,可在对应仓库文件夹下看.gitconfig文件的配置信息(友情提示,这是个隐藏文件)。 生成SSH-key 配置完了git的提交人信息,我们在本地生成个ssh-key,用来验证提交者身份。 ssh-keygen -t rsa -C xxx@qq.com 然后在.ssh文件夹下找到id_rsa.pub文件,里面内容复制到github的"setting"下的"SSH and GPG keys"的添加过程的输入框里,用以生成ssh-key。 在github上实践 在github上创建一个远程仓库,登录github网站,通过右上角"New respository"新建一个比如名为"git-test"的项目仓库。我们打开项目仓库的首页,复制仓库地址(既然配置了SSH,那就选择SSH咯;当然,也可以通过HTTP的来clone),可以通过git clone 命令将远程仓库拉到本地。 git clone git@github.com:your-github-name/git-test.git 这样就把项目拉取到当前文件夹下了,so easy~ 之后,我们可以操作本地文件夹进行增删改查等操作,下面列出一些操作。 在操作之前,需要了解工作区和暂存区和版本库的概念。 工作区:电脑中的文件夹内容 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。 暂存区:该内容存在于隐藏的.git目录下,可以简单理解为,需要提交的文件修改通通放到暂存区,然后一次性提交暂存区的所有修改。 详情点击此链接,有图有真相啊~ git基础操作命令 文件操作 将文件添加到版本库
git add TEST.md //添加了一个TEST.md文件
将版本库中文件重命名
git mv TEST.md LALALA.md //改名:TEST => LALALA
将文件从版本库删除 git rm LALALA.md // 删除LALAL.md 文件 查看操作记录 git log //如果觉得信息太多,可以加参数"--pretty=oneline",这样就能够输出简短信息。 列出master分支的历史操作 git log master 列出某个文件的历史操作 git log LALALA.md 然后在上一句操作中你会发现,追溯LALALA文件的操作历史的时候看不到它改名之前的历史,怎么办呢? git log --follow LALALA.md //加上"--follow"参数会让git在日志中内容相关联的整个历史记录 查看你的每一次操作命令 git reflog //列出每次你的操作命令,如:log、add、rm等 版本回退 git reset --hard HEAD^ //HEAD表示当前版本,加^表示上一个,加^^表示上上个... git reset --hard commit-id //我们可以通过git log拿到指定版本的提交id,并且返回到指定版本 查看工作区状态 git status //可看出是否对文件进行修改 将修改提交到暂存区 git add fileName //添加修改的文件 git commit -m "message" //提交修改的文件,并且输入修改信息 将暂存区的文件提交到远程仓库 git push (master) //不填则默认提交到当前分支,也可提交到指定分支 查看工作区与版本库中最新版本之间的不同 git diff HEAD fileName //当文件在工作区修改后还未提交到版本库 丢弃在工作区所做的修改
git checkout -- index.html //丢弃对index.html的修改
将远程仓库的修改拉取到本地 git fetch (master) //不填则默认拉取当前分支的最新修改,也可指定需要拉取的分支,fetch之后并不会合并修改 git pull (master) //不填则默认拉取当前分支的最新修改,也可指定需要拉取的分支,pull之后合并修改 分支操作 分支是在软件项目中启动一条单独的开发线的基本方法,使得开发能够在多个方向上同时进行,分支一般会被调解并与其他分支合并,用来合并不同的开发。通俗来讲,相当于将一个大任务分解成多个小任务,分给多人同时进行处理,完了再组合到一起,于是完成了个大任务。 创建分支 git branch dev //创建了一个dev分支,然而并没切换到这个分支上 切换分支 git checkout dev //切换到dev分支上 创建并且切换分支
git checkout -b dev //创建了一个dev分支,并且切换到这个分支上
打了一遍上面的命令,然后屁颠屁颠跑去github刷新看分支,然而并没有,少年莫慌,那是因为你还没将分支提交到远程仓库~ 将分支放到远程仓库
git push origin dev //好了,将dev分支提交到远程仓库了,然后又跑去刷新了github,这次终于看到分支的存在了
查看分支 git branch //带星号的是当前分支,加参数"-r"查看远程分钟,"-a"查看所有分支 合并分支 注:首先明确目前在哪个分支上,不可以在当前分支上将此分支合并到其他分支。 git merge dev //假如我现在在master分支上,然后合并了dev分支 通常合并分支的时候,git使用Fast-forward模式,我们可以在合并的时候使用参数"--no-ff"禁用该模式 git merge --no-ff -m "" dev //这样的合并会创建一个新的commit 这时分支合并了,然后你会发现分支依然存在,怎么办呢? 删除分支 git branch -d dev //删除dev分支 git branch -D dev //强制删除dev分支 这时候问题又来了,去github刷新看dev分支还是存在的... 删除远程分支 git push origin --delete dev //删除了远程仓库中的dev分支 删除不存在对应本地分支的远程分支 git remote prune origin 删除不存在对应远程分支的本地分支
git fetch -p
查看分支合并流程图
git log --graph //明确的看到何时创建/修改/合并分支
标签操作 标签可以简单的看做是一个标识点或者参考点。它是个静态的名字,不随时间的推移而改变。而分支是动态的,且随着你每次的提交而移动。他们之间看起来相似,但我们需要分清楚他们,且勿将其混淆。 创建一个标签
git tag v0.1 // 创建一个标签,名为v0.1=> version 0.1
将标签推到远程仓库
git push origin v0.1
一次性推送所有标签
git push origin --tags
删除本地标签 git tag -d v0.1 //删除名为v0.1的标签 删除远程仓库的标签 git push origin :refs/tags/v0.1 进度暂存操作(类似游戏的存档) (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |