美文网首页
git / SourceTree - 整理

git / SourceTree - 整理

作者: Neil举个栗子 | 来源:发表于2016-12-18 20:16 被阅读371次

    git

    一. git简介

    Git是一款免费、开源的分布式版本控制系统。

    二. git与svn区别

    svn是集中式版本管理系统,而git是分布式版本管理系统。
    集中式就是版本库只集中在一台中心服务器上,其它电脑连接服务器才能干活;
    分布式就是版本库分布在每一台电脑上,每一台电脑都有一个独立的版本库;

    集中式原理图:

    分布式原理图:


    Paste_Image.png

    )

    git的工作流程图:

    Paste_Image.png

    三. git的优点及现状

    git优点
    
      git每台电脑都有一个版本库,可以在本地做版本管理;
      速度快。git的速度远超大部分版本管理系统,包括svn
      强大的分支管理功能
      活跃的开源社区,如最著名的github
    
    git 缺点
      Git 没有严格的权限管理控制,一般通过系统设置文件读写权限的方式来做权限控制。
      工作目录只能是整个项目。比如 checkout,建分支,都是基于整个项目的。而 svn 可以基于项目中的某一个目录
    
    git现状
      具体使用 svn 还是 git 要看公司的情况, 一半一半
      git在开源项目中使用的比较多,git 的开源社区比 svn 要活跃得多
      每一个 it 从业人员多多少少都要和 git 打打交道
    

    git存储区的概念:工作区,暂存区,对象存储区

    我们的项目文件夹即是工作区,提交的过程,是先将修改的文件放到暂存区、再从暂存区移动到存储区

    Paste_Image.png Paste_Image.png Paste_Image.png

    git本地提交的操作

    第一步初始化一个仓库
    第二配置用户名和用户邮箱
    将文件添加到暂存区
    将文件提交到对象存储区

    git init //初始化一个本地git代码仓库
    git confit user.name //配置用户名
    git config user.email //配置用户邮箱     
    git status //查看 git 工作区和暂存区 文件状态
    git add . //将文件从工作区移到暂存区
    git diff //比较当前版本和之前版本的区别
    git commit -m "注释文字" //将文件从暂存区提交到代码区,完成一次版本提交
    

    .git 文件夹是隐藏的,需要执行 defaults write com.apple.finder AppleShowAllFiles -bool true,重启finder才能显示出来

    版本回滚操作

    git 的每一次操作,都会被一个 hash 值标记,根据某次操作的 hash 值,可能回滚到某个版本。

    git log //查看截止到当前版本的历史记录
    git reset --hard HEAD^ //将代码回滚到之前版本
    git reflog //查看所有操作过的历史记录
    

    掌握了以上内容,我们已经可以应付公司或个人的单人项目。这是git版本管理最基础的部分,需要反复练习,直到熟练。

    四. git多人协作开发

    git 多人协作开发介绍

    需要有一个服务器
    除了在本地提交,还需要往服务器提交
    需要添加 .gitignore 文件
    有可能产生冲突,需要手动解决

    git 多人协作过程

    初始化一个 git 服务器
    添加 .gitignore
    文件
    项目经理创建项目
    开发人员克隆服务器版本库到本地
    happy开发

    git init --bare //建立一个git服务器代码仓库
    git clone <服务器地址> //建立一个git服务器代码仓库
    git status //查看 git 工作区和暂存区 文件状态
    git add . //将文件从工作区移到暂存区
    git commit -m "注释文字" //将文件从暂存区提交到代码区,完成一次版本提交
    git push //把本地版本库提交到服务器,类似 svn 的 commit
    git pull //把将服务器的最新版本拉取到本地,并合并代码,类似 svn 的 update
    git config --global push.default simple/maching //默认simple,只提交当前分支
    

    冲突解决
    养成先执行 git commit 命令后;再执行 git pull;最后执行 git push的好习惯;
    修改别人的代码会造成代码冲突,需要手动解决,如无特殊需要,尽量不要干这么 low
    的事儿

    ##git命令总结
    
    //git 本地版本管理命令
    git init //初始化一个本地git代码仓库
    git confit user.name //配置用户名
    git config user.email //配置用户邮箱     
    git status //查看 git 工作区和暂存区 文件状态
    git add . //将文件从工作区移到暂存区
    git diff //比较当前版本和之前版本的区别
    git commit -m "注释文字" //将文件从暂存区提交到代码区,完成一次版本提交
    git log //查看截止到当前版本的历史记录
    git reset --hard HEAD^ //将代码回滚到之前版本
    git reflog //查看所有操作过的历史记录
    
    //多人协作开发命令
    git init --bare //建立一个git服务器代码仓库
    git clone <服务器地址> //建立一个git服务器代码仓库
    git push //把本地版本库提交到服务器,类似 svn 的 commit
    git pull //把将服务器的最新版本拉取到本地,并合并代码,类似 svn 的 update
    git config --global push.default simple/maching //默认simple,只提交当前分支
    
    //tag及分支命令
    git tag –a 1.0 –m “name” //添加新标签 
    git tag //查看所有tag
    git tag -n // 查看所有 tag,带注释
    git checkout 1.0 //切换到某一标签版本 
    git show 1.0 //查看某个标签及其对应版本的详细信息
    git tag -d 1.0 //删除一个版本
    git push origin 1.0 //将版本推送到服务器
    
    //分支相关命令
    git branch //查看当前分支 
    git branch -a //查看所有分支
    git checkou -b dev //创建一个分支 dev, 并切换到该分支
    git push origin dev //在本地创建一个分支
    git checkout master //切换到分支 master
    git branch -D dev //删除本地 dev 分支
    git git push origin :dev //删除远程 dev 分支
    git merge dev //将 dev分支合并到当前分支
    

    -------------------------------------------------我是分割线--------------------------------------------

    SourceTree

    一、 SourceTree简介

    SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。

    二、 SourceTree&Git部分名词解释

    1. 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
    2. 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓库做修改后一般都得先提交一次,再推送)
    3. 检出(checkout):切换不同分支
    4. 添加(add):添加文件到缓存区
    5. 移除(remove):移除文件至缓存区
    6. 暂存(git stash):保存工作现场
    7. 重置(reset):回到最近添加(add)/提交(commit)状态
    8. 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
    9. 抓取(fetch):从远程仓库获取信息并同步至本地仓库
    10. 拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 ** pull=fetch+merge **
    11. 推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致
    12. 分支(branch):创建/修改/删除分枝
    13. 标签(tag):给项目增添标签
    14. 工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝
    15. 终端(terminal):可以输入git命令行

    三、 相关链接推荐

    →Github help for mac
    →Github help for win
    →极客学院Git教学视频

    相关文章

      网友评论

          本文标题:git / SourceTree - 整理

          本文链接:https://www.haomeiwen.com/subject/zgfamttx.html