Git相关分享

作者: 程序亦非猿 | 来源:发表于2016-03-08 08:49 被阅读2457次

    Git相关分享

    ---- by 程序亦非猿 2016.03.07
    
    这是在公司分享的稿子,演示为主,稿子内容不太详细,有兴趣的可以看看,推荐看看文末的资料~
    

    控制版本系统(VCS)

    版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

    集中化控制系统(CVCS)

    集中化控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,客户端通过这台服务器获取文件或提交更新.

    缺点

    很明显,中央服务器是个中心,一旦它出了问题就会影响整个系统.

    中央服务器单点故障,如果服务器一挂,那么整个系统就挂了,无法工作

    甚至,中央服务器磁盘故障,很可能导致数据丢失,丢失所有历史更改记录等重要信息.

    分布式版本控制系统(DVCS)

    客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份

    Git--控制版本之神

    简史

    作者,大神 Linus Torvalds

    优点:

    • 速度
    • 简单的设计
    • 对非线性开发模式的强力支持(允许上千个并行开发的分支)
    • 完全分布式
    • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

    Git常用命令

    config

    git config #--global 全局配置

    git config --global user.name "alan"
    git config --global user.email alancheen06@gmail.com
    

    git config --list 查看配置列表

    init

    git init用来初始化项目

    它会创建一个.git目录,它包含所有初始化git的所有文件

    clone

    git clone url 
    git clone url name #重命名成name
    

    文件的状态

    接下去的命令跟文件状态有关

    add

    untracked===>staged

    git add file
    git add . 
    

    staged===>untracked

    git reset HEAD file
    

    commit

    git commit -m "init"
    git commit -a -m "init"
    git commit -am "init"
    git commit --amend  #想要撤消刚才的提交操作,可以使用 --amend 选项重新提交
    

    // 演示

    branch

    创建分支

    git branch branchname
    

    PS:当init一个仓库时,master需要先commit一遍才能新建其他分支,否则会得到一个错误fatal: Not a valid object name:'master'.

    切换分支

    git checkout branchname
    

    创建并切换分支

    git checkout -b branchname
    

    查看分支

    git branch -r -a -l
    

    删除分支

    git branch -d branchname  #删除本地分支  
    git push origin --delete branchname #删除远程分支  
    

    // 演示

    远程协作

    git remote add [shortname] url

    如:

    git remote add origin url  #
    

    git remote -v 可以查看所有远程仓库

    fetch

    git fetch remote-name 
    

    fetch 只是从远程仓库 获取数据,并不会合并到工作区

    pull

    git pull origin master
    

    pull = fetch +merge

    push

    git push [remote-name] [branch-name]

    git push origin master
    

    查看提交历史

    git log 查看提交历史

    • --pretty=oneline 一行显示
    • --stat 带统计信息
    • --graph 图形化

    git reflog

    回退版本

    git reset --hard commitId

    暂存

    git stash/pop

    标签

    git tag

    帮助

    git help cmdname

    ....

    别名

    git config --global alias.co checkout
    git config --global alias.br branch
    git config --global alias.ci commit
    git config --global alias.st status
    git config --global alias.unstage 'reset HEAD --'
    git config --global alias.last 'log -1 HEAD'
    

    其他

    gitignore

    忽略不想提交的文件

    gitflow

    基于git的工作流

    工具推荐

    SourceTree

    git GUI 软件

    iTerm2+oh my zsh

    不管装不装逼,都要必备

    学习资料推荐

    GitPro2

    内容很多,很详细,堪称权威,而且还有中文版,还有pdf等下载,一定要看看.

    git-简明指南(很棒)

    非常棒的指南,极力推荐

    githug

    一个git的游戏,现在一共有54个关卡,从init开始,让你在玩的过程中学习git,挺有意思

    learnGitBranching

    又是一个学习git的游戏,不过这个是针对分支的游戏,非常棒~非常推荐

    另外欢迎关注:
    我的Github
    我的微博
    我的微信公众号:

    微信公众号

    相关文章

      网友评论

      本文标题:Git相关分享

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