与我联系

若是英雄又怎能不用git

2016-5-2 一诺 前端工具

写在前面
  生命在于运动,学习在于总结。
  先安利下(廖雪峰 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
  这几天在学git,百度各种教程感觉都对不上号,缺胳膊少腿的,历史总是那么偶然,发现了这个教程,讲的很细,适合新手学习,在此教程上进行精简提炼,放此便于日后查看。
0、历史
  Linus在1991年创建了开源的Linux后,为了方便管理而创建了Git
  2008年,GitHub网站上线,它为开源项目免费提供Git存储
1、相较于svn
  svn是集中式的版本控制系统:有中央服务器、必须联网才能工作
  git是分布式版本控制系统:无中央服务器、在本地即可编辑、安全性高、强大的分支管理、跟踪并管理的是修改,而非文件。
2、windows下载安装:
  下载地址https://git-for-windows.github.io/或者360云盘下载
  按照默认安装即可(可改下安装目录)
  安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
  配置用户名邮箱:
    git config --global user.name "Your Name"
    git config --global user.email "email@example.com"
  “--global”代表所有git仓库都是用这个配置
3、创建版本库(又名仓库,英文名repository)
  1)、找个合适的地方创建目录(一般不要选择c盘)
    在当前目录按住shift然后鼠标右键打开
    mkdir haha
    cd haha
    pwd
    /f/git/haha
    pwd命令用于显示当前目录。
  2)、通过git init命令把这个目录变成Git可以管理的仓库
    git init
  3)、将文件添加到版本库
    git add test.txt
    放到暂存区
  4)、将文件提交到仓库
    git commit -m "这是提交的说明"
    提交到master分支
  5)、查看当前状态
    git status
  6)、查看上次修改过的差异
    git diff test.txt
  7)、查看历史提交记录
    git log
    git log --pretty=oneline
  8)、回退到上一个版本
    git reset --hard HEAD^
    HEAD表示当前版本 ^表示上一个,^^表示上上一个,HEAD~100表示第上100个
  9)、查看文件内容
    cat test.txt
  10)、回到未来的某个版本
    git reset --hard 3628164(这个是id号前几位)
  11)、查看所有的版本号
    git reflog
  12)、工作区:电脑里能看到的目录
  13)、丢弃工作区的修改
    git checkout -- test.txt
  14)、暂存区的修改撤销掉
    git reset HEAD readme.txt
  15)、命令行删除文件
    rm test.txt
    删除已提交的文件
    git rm test.txt
4、远程仓库
  1)、创建SSH Key
    在C:\Users\Administrator下面
      有没有.ssh目录,.ssh里面有没有id_rsa和id_rsa.pub两个文件
    如果没有:就创建SSH Key:
      ssh-keygen -t rsa -C "youremail@example.com"
  2)、登录GitHub
    SSH and GPG keys->New SSH key
      填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
  3)、创建仓库
    右上角New repository
    Repository name(最好有意义的名字这里写demo)
    其他选项默认点create repository
  4)、根据GitHub上的提示可以在本地通过
    git remote add origin git@github.com:yinuocode/demo.git
    git push -u origin master
    来完成推送
    后面修改在往这个库里推送就可以直接
    git push origin master
  5)查看远程库消息
    git remote或者
    git remote -v(更详细)
5、克隆到本地
  git clone git@github.com:yinuocode/demo.git(推荐)
  或者git clone https://github.com/Ceryn/img.git
6、分支管理
  1)创建dev分支
    git checkout -b dev
    git checkout命令加上-b参数表示创建并切换相当于
    git branch dev
    git checkout dev
  2)分支切换
    git checkout dev
  3)查看当前分支
    git branch
    会列出所有分支,前面带*号的为当前分支
  4)分支合并
    git merge dev(用于合并指定分支到当前分支)
  5)删除分支
    git branch -d dev
  6)分支冲突
    如果两个分支改的一个文件合并分支时会有冲突
    需要手动改下后重新添加提交
  7)可查看分支的历史合并情况
    git log --graph或者
    git log --graph --pretty=oneline --abbrev-commit
  8)普通模式合并分支(保留历史)
    git merge --no-ff -m "merge with no-ff" dev
  9)Bug分支
    把当前工作现场“储藏”起来,等以后恢复现场后继续工作
    git stash
    查看保存的工作现场
    git stash list
    恢复保存的工作现场两种方法
    1、git stash apply
       git stash drop
    2、git stash pop
  10)强行删除未合并的分支
    git branch -D 分支名
  11)将分支推送到服务器(只推送服务器需要的)
    推送时需指定本地分支
    git push origin master
    git push origin dev
    git push origin 某某分支
  12)clone服务器代码后想在dev上开发
    git checkout -b dev origin/dev
  13)git pull失败(未指定当前分支与远程分支的链接)
    git branch --set-upstream dev origin/dev
  14)多人协作的工作模式流程
     首先,可以试图用git push origin branch-name推送自己的修改;
     如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
     如果合并有冲突,则解决冲突,并在本地提交;
     没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
     如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
7、标签管理
  1)标签定义和作用
    标签也是版本库的一个快照,可以根据某个标签取出当时历史版本
  2)创建标签
    切换到需要打标签的分支上git tag v2.0
    给之前的某个状态打标签
      通过git log --pretty=oneline --abbrev-commit获得需要的id
      $ git tag v1.0 6224937
  3)查看所有标签(按字母排序)
    git tag
  4)查看标签信息
    git show v1.0
  5)删除标签
    git tag -d v1.0
  6)将标签推送到服务器
    推送某个标签:git push origin v1.0
    一次性推送全部尚未推送的本地标签:git push origin --tags
  7)删除远程标签
    先删除本地标签然后执行(v2.0标签名)
    git push origin :refs/tags/v2.0
8、使用GitHub
    参与GitHub上的项目:
    到项目主页-Fork-从自己账号下clone-修改-推送到自己仓库-发起一个pull request
9、自定义Git
  1)忽略特殊文件
    放到git工作目录,又不需提交
    需要加上.gitignore文件,并将忽略文件名填进去
    https://github.com/github/gitignore
  2)配置别名
    简化命令单词
    git config --global alias.st status
    当敲git st就等于敲git status
    以下同理
    git config --global alias.co checkout
    git config --global alias.ci commit
    git config --global alias.br branch
    --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。
    git config --global alias.unstage 'reset HEAD'
    git unstage test.py==git reset HEAD test.py
    配置git last,显示最后一次提交信息:
    git config --global alias.last 'log -1'
    甚至还有人丧心病狂地把lg配置成了:
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  3)配置文件
    每个仓库的Git配置文件都放在.git/config文件中
    别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。
    而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:
  4)搭建Git服务器
    准备Linux机器,通常10分钟即可完成
    要方便管理公钥,用Gitosis
    要像SVN那样变态地控制权限,用Gitolite
参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

标签: git

分享这篇文章
赞助鼓励:如果觉得内容对您有所帮助,您可以支付宝(左)或微信(右):

声明:如无特殊注明,所有博客文章版权皆属于作者,转载使用时请注明出处。谢谢!

发表评论:

皖ICP备15010162号-1 @2015 勿恨水长东
qq:1614245331 邮箱:13515678147@163.com Powered by
emlog