详细教程可参考

git community book中文版

git教程(廖雪峰)

  1. 安装

    • 官网下载git安装包,进行安装即可;

    • 打开cmd终端,输入 “git --version”,回车,出现git版本信息说明安装成功。

  2. 配置

    进入开始菜单,打开git bash;

    输入如下命令:

    git config --global user.name "Your Name"
    git config --global user.email "email@example.com"
  3. 创建本地仓库

    在git bash终端中执行如下命令:

    • mkdir <文件夹名称>

    • cd <文件夹名称>

    • git init

  4. 提交修改(本地仓库)

    在库中添加txt.md文件,并输入内容。然后执行如下命令:

    • git add <文件名> // 添加进暂存区

    • git commit -m "创建了一个文件" // 提交到仓库

    可以为某个提交打标签,在commit后执行:

    • git tag <tag名> //新建标签

    • git tag -d <tag名> //删除标签

    • git push origin <tag名> //推送一个标签到远程

    • git push origin --tags //推送所有标签到远程

    • git push origin :refs/tags/<tag名> //远程仓库删除一个标签

  5. 查看状态

    • git status // 查看所有状态,是否有修改要add或commit

    • git diff 或 git diff <文件名> //查看代码的具体修改差异

  6. 查看日志

    • git log //展示提交日志信息比较多,仅包括当前版本及之前版本的提交log,如果未来版本回退,则回退后执行该命令将仅限显示该版本及更早版本的日志信息。

    • git log --oneline //每次提交日志仅展示在一行内

    • git reflog //展示包括提交日志和回退日志在内的所有日志

  7. 版本回退

    • git reset --hard head ~n //回退到之前n个版本

    • git reset --hard <版本id的前几个字母> //回退到历史版本或未来版本

  8. 撤销本地修改

    • 当修改内容未 git add 添加进缓存区时:

    git checkout -- . 或 git checkout -- <文件名> //修改将从文件中删除

    • 当修改内容已经提交到暂存区时:

    git reset head 或 git reset head <文件名> // 修改将回退到git add之前,但相应的修改还在文件中

    • 所有情况(无论是否加入暂存区),都可如下执行:

    git reset --hard head // 文件将从文件中删除所有修改,但只能修改所有文件的修改,无法单独撤销某个指定文件

  9. 远程仓库

    • 查看是否有密钥:

      在本地用户目录(形如“C:\Users\hikadmin”),查找是否有.ssh文件夹,如果没有则创建密钥。

    • 创建密钥(输入以下命令,一路回车即可,将产生id_rsa和id_rsa.pub两个文件):

      ssh-keygen -t rsa -C "你的邮箱地址"
    • 将密钥配置到自己的github账户:

      登录github账户-》settings-》 SSH and GPG keys -》new SSH key-》设置title,拷贝id_rsa.pub至key-》Add SSH key

    • 创建自己的github开源项目

      (1)方式一

      • 创建远程仓库 rep

      • 创建同名本地仓库 rep,并进行本地仓库编码

      • 本地仓库与远程仓库关联

        git remote add origin https://github.com/<github账户名>/rep.git

        git remote add origin git@github.com:<github账户名>/rep.git
      • 删除本地仓库与远程仓库的关联

        git remote rm origin
      • 上传文件到远程仓库

        前提:已经执行完 git add/ git commit命令

        首次上传使用如下命令:

        git push -u origin master

        非首次上传使用简化命令即可:

        git push

      (2)方式二

      • github 创建远程仓库

      • 本地执行:

        git clone <git远程仓库地址>
      • 上传文件到远程仓库

        cd <clone的本地仓库名>
        git add .
        git commit -m '日志'
        git push
    • 查看远程库信息

    git remote      //查看简化信息
    git remote -v   //查看详细信息
  10. 处理分支

    • 查看分支列表

      git branch
    • 创建分支

      git checkout/branch -b <分支名>  //创建并转到新建的分支

      git branch <分支名> //创建分支
    • 转到分支

      git checkout <分支名>
    • 合并分支到另一个分支

      如将子分支合并到master分支上:

      git checkout master  //首先,转到master分支
      git merge <子分支名> //然后,将子分支合并到当前分支(即master分支),删除子分支后无合并历史记录

      git checkout master
      git merge --no-ff -m '日志' <子分支名> //no-ff模式,将创建一个commit记录,删除子分支,合并记                       录可通过git log查看
    • 删除子分支

      git branch -d <分支名>  //不存在未合并的修改时
      git branch -D <分支名> //存在未合并的修改时,通过-D强制删除分支
    • 本地分支推送到远程

      git push origin <分支名>
    • 从远程拉取一个分支到本地

      git checkout -b <本地分支名> origin/<远程分支名>   //建议本地和远程分支名一致
    • 本地拉取远程分支的更新

      (1)一般情况

      git pull

      如果报如下错误:

      There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details.

      则需要先执行:git branch --set-upstream-to=origin/<远程分支名> <本地分支名>

      然后在执行:git pull

      或 直接执行如下命令:

      git pull orgin <远程分支名>

      (2)当需要将本地分支提交到远程分支,但远程分支上有其他成员的最新提交没有同步到本地,可以使用如下命令将提交转换成一条线:

      git rebase origin

      git rebase origin/<分支名>

      若 rebase过程发生冲突,需要手动修复冲突,然后执行:

      git add .
      git rebase --continue

      可以随时撤销rebase,用如下命令:

      git rebase --abort

      有关abort解释参考如下链接: http://gitbook.liuhui998.com/4_2.html

  11. 分支冲突解决

    子分支提交修改,主分支也提交修改,当合并子分支到主分支git merge时,发生冲突,解决方式:

    在主分支冲突文件中,手动修改冲突内容,然后 git add/git commit,并删除子分支。

  12. 分支使用策略

最新文章

  1. form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作
  2. Apache常用配置项
  3. POST和GET区别
  4. getopts
  5. Sugarcrm Email Integration
  6. js经验1
  7. ZOJ2112 Dynamic Rankings 动态区间第K最值 平方分割
  8. Solr配置集群
  9. oschina大数据开源软件
  10. Android反编译APK
  11. jquery知识点积累
  12. BZOJ 1570: [JSOI2008]Blue Mary的旅行( 二分答案 + 最大流 )
  13. Linux内核时间管理(二)——jiffies与jiffies_64释疑
  14. Javascript的异步和回调
  15. r.js合并实践
  16. HeadFirst设计模式读书笔记之工厂模式
  17. kali自定义分辨率(1920*1080)
  18. python 2
  19. mysql 拒绝登录解决
  20. P1067 多项式输出

热门文章

  1. java后端知识点梳理——多线程与高并发
  2. QT Dialog模态与非模态
  3. 【NX二次开发】Block UI 树列表
  4. UF_OBJ 对象操作
  5. 源码级别理解 Redis 持久化机制
  6. 【Azure 机器人】微软Azure Bot 编辑器系列(4) : 使用语言生成功能[LG: Language Generation] (The Bot Framework Composer tutorials)
  7. React Hooks使用避坑指南
  8. 「10.12」木板(数学)&#183;打扫卫生(神仙DP)
  9. Golang的一致性哈希实现
  10. 关于Excel中表格转Markdown格式的技巧