zoukankan      html  css  js  c++  java
  • Git学习笔记

    git学习笔记

    以下内容是学习,廖雪峰老师的git教程之后整理的笔记
    1、创建repo

    • mkdir learngit
      cd learngit
      git init

    2、编写README.md

    • $ echo "git is a version control system"
      echo "git is free software"
      git add README.md #add to repo
      git commit -m "first commit" # commit to tell repo

    • git can add or commit file1.txt file2.txt

    • git log #查看历史记录
      git log --pretty=oneline #更好的查看日志
      git reset --hard HEAD^ #版本回退上一个版本
      git reflog #查看命令历史,以便知道要回退到哪个版本
      git reset --hard commit_id #在版本的历史之间穿梭

    • git status #查看状态
      git add 命令实际上就是把要提交的所有修改放到暂存区
      git commit 可以一次性把暂存区的所有修改提交到分支

    • git diff HEAD -- xxxx.txt #可以查看到工作区和版本库里面最新版本的区别

    • git checkout -- file #可以丢弃工作区的任何修改

    • 添加远程仓库

    • 先生成ssh key ssh-keygen -t rsa -C "youemail"
      生成的ssh key 在用户的主目录 .ssh下
      将 ssh key 添加到github上
      ssh -T git@github.com #验证是否成功添加
      git remote add origin git@github.com:xxx/xxx.git #关联远程库
      git push -u origin master #将本地库所有内容推送到远程库上
      -u 参数:git把本地的master和远程新的master分支关联起来
      git push origin master 向远程推送修改
      git clone xxx #克隆repo

    • 分支管理
      git checkout -b dev #创建dev分支 切换到dev分支上
      -b 参数表示 创建病切换:git branch dev and git checkout dev
      git branch #查看当前分支
      git checkout master #切换会master分支
      git merge drv #将dev的分支合并到master分支
      git branch -d dev #删除dev分支
      git log --graph #查看分支合并图
      git merge --no-ff -m "xxx" dev
      --no-ff 参数,表示禁用fast forward 相当于在master分支上提交一个commit

    • 处理bug分支
      git stash #将当前工作现场储藏起来
      git stash list #查看储藏的工作现场
      git stash apply #恢复工作现场 但是恢复的stash内容并不删除
      git stash drop #删除恢复的stash内容
      git stash pop #删除的同时将stash内容也删除了

    • 删除分支
      git branch -d xxxx
      -D 参数:强行删除

    • 多人协作
      git remote #查看远程库的信息
      -v 参数:显示更详细的信息
      git push origin master or dev #选择推送的分支
      master 是主分支 dev 是团队开发分支 这两个需要同步到远程
      由于克隆下来的只有master分支
      git checkout -b dev origin/dev #创建远程origin的dev分支到本地
      git pull #把最新的提交从origin/dev 抓下来 在本地合并 解决冲突
      git rebase #rebase操作可以把本地未push的分叉提交历史整理成直线;
      rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

    • 标签管理
      标签管理更加方便便捷 不用去记历史中的commit id

    • 创建标签
      git tag v1.0 #给当前分支打上标签
      git tag #查看标签
      git tag v0.9 commit id #给commit id 打上标签
      git show #查看标签信息
      git tag -a v0.1 -m "version 0.1 released" commit id
      -a 参数:指定标签名 -m 指定说明文字
      -d 参数:删除标签
      git push prigin v1.0/--tags #推送一个标签或者所有标签
      如果标签已经推到远程:
      先将本地的标签删除:git tag -d v0.9
      再远程删除:git push origin :refs/tags/v0.9

    • 使用github 和 码云
      两个都是远程代码托管平台
      clone 别人的项目自己没有push权限 需要先fork别人的项目 再push 再在github上面进行pull request
      码云是国内版的github 国内连接网速快 与github的用法一样

    • 自定义git
      自定义git更好的工作
      git config --global user.name/email xxx/xxx@gmail.com
      git config --global color.ui true #显示颜色 命令输出更加醒目
      .gitignore #再.gitignore文件中可以填入需要忽视提交的文件
      git add -f xxx #强制提交
      git check-ignore -v xxxx #检查.gitignore是否写得有问题

    • 配置别名
      git config --global alias.st status #告诉git 以后st 就表示 status
      --global #s是全局变量 对本机所有仓库起作用
      配置文件在:.gitconfig

    • 搭建git服务器
      建议是ubuntu or debian系
      sudo apt-get install git
      sudo adduser git #创建一个git用户用来运行git服务
      创建ssh登录:收集所有用户的公钥 将所有的公钥导入到/home/git/.ssh/authorized_keys 文件里
      选定一个目录作为git仓库:假定是/srv/sample.git
      sudo git init --bare sample.git #创建一个裸仓库 现在没有工作区
      sudo chown -R git:git sample.git #将owner改为git 其他用户不需要登录服务器去修改工作区
      出于安全考虑 创建的git用户不允许登录shell 修改/etc/passwd 文件
      git: x:1001:1001:,,,:/home/git:/bin/bash 改为:git: x:1001:1001:,,,:/home/git:/usr/bin/git-shell
      git用户可以正常通过ssh使用git 但是无法登录shell git-shell 登录shell 就退出
      git clone xxx #通过clone远程仓库在各自的电脑上运行
      Gitosis:批量管理公钥
      Gitolite:管理权限工具 不要把有限的生命浪费到权限斗争中

  • 相关阅读:
    数据库表中批量替换某个字段的方法
    css清除浮动方法大全
    IE6中的常见BUG与相应的解决办法
    [转]Oracle 12c多租户特性详解:PDB 的创建、克隆与维护
    Oracle 数据库导入导出 dmp文件
    Tomcat 服务应用
    Perforce 与Source Insight, Visual Studio集成
    Oracle 11g必须开启的服务及服务详细介绍
    Python学习笔记8-单元测试(1)
    Python学习笔记7-高级迭代器
  • 原文地址:https://www.cnblogs.com/hudunkey/p/10264250.html
Copyright © 2011-2022 走看看