这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分。

我使用的是 windows 系统,所以使用 Git Bash 输入命令。同总结一一样,首先全部命令,再实例结合命令:

一、命令

1. 创建 SSH Keys

$ ssh-keygen -t rsa -C "youremail@example"

2. 关联远程仓库

$ git remote add origin git@github.com:yourname/repo-name.git

3. 第一次推送本地仓库到远程

$ git push -u origin master

4. 克隆远程仓库

$ git clone git@github.com:username/repo-name.git

5. 列出当前目录下的全部文件及文件夹

$ ls

6. 创建分支

$ git branch <branch-name>

7. 切换分支

$ git checkout <branch-name>

8. 查看所有分支

$ git branch
$ git branch -v(包括commit-id和commit-info) 
$ git branch -vv(包括commit-id,commit-info和关联的远程分支)
$ git branch -a(所有分支,包括远程分支)
$ git branch -r(只查看远程分支)

9. 合并分支

$ git merge <branch-name>

非快进模式合并分支

$ git merge --no-ff -m "description..." <branch-name>

10. 删除分支

$ git branch -d <branch-name>

当分支未合并时,需要强制删除

$ git branch -D <branch-name>

11. 查看分支合并情况

$ git log --graph --pretty=oneline --abbrev-commit

12. 隐藏工作区

$ git stash

13. 恢复工作区

$ git stash pop

14. 查看远程库

$ git remote

查看远程库的详细信息

$ git remote -v

二、命令结合实例

1. 创建 SSH Keys

$ ssh-keygen -t rsa -C "youremail@example.com"

将 id_rsa.pub 文件里的内容添加进自己的账号 SSH Keys 中,每一台电脑都有唯一的 id_rsa,这样就可以添加多个 id_rsa 了,只要添加 id_rsa 到 SSH Keys,那么,这台电脑就可以往自己的账号里推送仓库了。

2. 关联远程仓库

$ git remote add origin git@github.com:yourname/repo-name.git

确保你始终使用的一个账号!

而不是在像我这样,先用 xinjie-just 创建的 running 仓库,然后关联的时候,提示 origin 已经存在,然后我试图推送,没有权限,因为当时创建 SSH Keys 时使用的是 lixinjie1992 这个账号,推送时,默认往 lixinjie1992这个账号推送。

但是也有办法解决这个问题,将 running-->.git-->config 中 url 的 username 改为 lixinjie1992 就行了。

3. 推送本地仓库到远程

$ git push -u origin master 

如果遇到错误,排除多账号问题后,那可能是因为本地没有 README.md,而远程新建仓库时又初始化了一个 README.md 导致。可以先 git pull --rebase origin master 将远程的文件拉取到本地,然后使用命令 git push -u origin master 将本地文件推送到远程同步。

4. 从远程克隆

$ git clone git@github.com:username/repo-name.git

我从远程克隆了 github-pages 仓库,然后这个文件夹就出现在我的本地了:

5. 列出当前目录下的全部文件及文件夹

$ ls

github-pages 文件夹下有 index.html 和 README.md 文件。

6. 创建分支

$ git branch dev

7. 切换分支

$ git checkout dev

创建和切换分支可以一步完成,使用命令 git checkout -b dev

8. 查看所有分支

$ git branch

命令 git branch 可以查看所有分支,当前分支前用 "*" 标记出。

更新(2019年9月24日,MacBook Pro VSCode 终端):

$ git branch -v

命令 git branch -v 可以查询出分支的同时,还包括 commit id 和 提交注释。

$ git branch -a

命令 git branch -a 可以查询出远程和本地工作区的所有分支。a 表示 all 所有。

$ git branch -vv

命令 git branch -vv 可以查询出分支的同时,还包括 commit id,提交注释和关联的远程分支。

$ git branch -r

命令 git branch -r 与 git branch 对应,前者查询出所有的远程分支,后者查询出所有的本地工作区的分支。

9. 合并分支

$ git merge dev

在 master 分支上,合并 dev 分支:

合并分支前,我先对比了 dev 分支和 master 分支下 index.html 文件内容的区别。然后将 dev 分支下 index.html 文件的内容合并到 master 分支下。

10. 删除分支

$ git branch -d dev

使用命令 git branch -d dev 删除 dev 分支后,在使用命令 git branch 查看所有分支,只有 master 分支了,证明 dev 分支删除成功。

11. 查看分支合并情况

$ git log --graph --pretty=oneline --abbrev-commit

查看分支合并情况,一般用在解决冲突中。

在 dev 分支上修改了 h1 的颜色。

切换到 master 分支后,又修改了 h1 的颜色。

当我尝试着把 master 分支和 dev 分支进行合并时,提示有冲突需要解决。

手动将其改变成:

处理好冲突后,再提交,并且查看合并情况:

12. 分支管理

使用非 fast-forward 模式合并

$ git merge --no-ff -m "description for commit" <branch-name>

通过命令 git log --graph --pretty=oneline --abbrev-commit 列出提交日志可以看出,删除 dev 分支后,在 dev 分支上的提交信息也能显示。

13. 隐藏工作区

当 dev 分支的任务还没开发完成时,暂时没法提交。但是有一个 bug 需要尽快修复,于是可以开发一个新分支 bug 来修复。为使 dev 分支在修复 bug 时,不受干扰,可以隐藏 dev 工作区:

$ git stash

当 bug 修复完成后,恢复 dev 分支的工作区:

$ git stash pop

dev 分支上的内容未提交。

开始一个新分支 fixbug-01,用来修复 bug, bug 修复完成后,将其删除。

切换到 dev 分支,提示没有需要提交的内容,工作区也是干净的。使用命令 git stash list 查看被隐藏的列表,按时间倒叙排序,依次列出了 HEAD 指针指向的最后一次提交。

使用命令 git stash pop 恢复被隐藏的工作区并且删除 stash 后,提示 dev 有修改需要添加。

14. 强制删除

比如一个新功能开发到一半,还没出生便要胎死腹中,也只能将其删除了。可是这样的一个分支并没有合并到主分支上,删除的时候需要强制是删除。

$ git branch -D <branch-name>

只是把小写的 "d" 换成了大写的 "D" 。

15. 查看远程库信息

$ git remote

16. 推送分支

将需要推送到远程的分支推送到 github 上,与远程同步。

$ git push origin master

通过命令 git branch 查看当前所有分支,只有 master 分支了。将 master 分支推送到远程与 github 保持同步。

git 学习使用总结二(远程仓库操作)的更多相关文章

  1. git 学习使用总结三(远程仓库操作)

    这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分. pull, fetch, clone, push, chec ...

  2. Git 学习(五)远程仓库

    Git 学习(五)远程仓库 之前的章节所说的是本地Git仓库的操作,版本管理的优越性显然不会仅仅在本地.远程仓库也就是服务器或是网络端的仓库操作也是必须的. 本文具体说明 Git 的远程仓库操作,示例 ...

  3. Git 学习(三)本地仓库操作——git add & commit

    Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...

  4. Git学习之连接GitHub远程仓库

    在看此教程之前电脑上应该已安装好git,并且配置好基本信息,Git新手请从头开始. 第1步:创建SSH Key 在用户主目录下(Mac系统是在用户主目录下,可通过命令ll -a查看,Windows下自 ...

  5. Git学习03 --远程仓库

    把本地库的内容推送到远程(github), 用git push命令,实际上是把当前分支master推送到远程. 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的 ...

  6. Git(进击学习:远程仓库操作)-V3.0

    1.查看当前的远程仓库:git remote或git remote -v 2.添加远程仓库:git remote add [shortname] [url] git remote add pb git ...

  7. Git学习笔记(二) · 非典型性程序猿

    远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...

  8. Android基础新手教程——1.5.2 Git之使用GitHub搭建远程仓库

    Android基础新手教程--1.5.2 Git之使用GitHub搭建远程仓库 标签(空格分隔): Android基础新手教程 本节引言: 在上一节中.我们学习了怎样使用Git.构建我们的本地仓库.轻 ...

  9. Git提交到多个远程仓库(多看两个文档)

    Git提交到多个远程仓库(多看两个文档) 一.总结 一句话总结: 二. Git提交到多个远程仓库(多看两个文档) 有两种做法,先看第一种 一.通过命令行进行操作 例如我有下面两个仓库: Mybatis ...

随机推荐

  1. 网站开发中很实用的 HTML5 & jQuery 插件

    这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...

  2. 移动端事件touchstart、touchmove、touchend

    关于这三个移动端的事件,详细的资料网上一搜一大片,我就不浪费时间了 1.移动端长按事件 var timer = null; $(ele).on('touchstart',function(){ tim ...

  3. 【小贴士】zepto find元素以及ios弹出键盘可能让你很头疼

    前言 在此,我不得不说移动端的兼容问题很多,并且很令人头疼,这不,这个星期又有两个让我逮着了,一个是使用zepto过程中出现的问题,一个是ios虚拟键盘的问题 我这里做一次记录,以免以后忘了,同时希望 ...

  4. php 过滤英文标点符号 过滤中文标点符号

    php 过滤英文标点符号 过滤中文标点符号 代码 function filter_mark($text){ if(trim($text)=='')return ''; $text=preg_repla ...

  5. Egret白鹭H5小游戏开发入门(三)

    前言: 在上一篇文章中着重介绍了H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明等等,那么今天主要是涉及到场景的创建,loading的修改等等的代码编写. 对于这一节,我在讲解的过 ...

  6. ae

    根据属性提取要素(利用GP) http://blog.csdn.net/ewyetc/article/details/6746728

  7. Merry Christmas & Happy New Year!!

    圣诞快乐,新年快乐!

  8. 操作系统开发系列—解释typedef void (*int_handler) ();

    于是我换了一个思路来理解这个typedef 我们首先看常规的变量定义: int INT//定义了一个名为INT的int型变量. char *c//定义了一个名为c的char型指针变量 void(*Fu ...

  9. Android 视频播放器进度的处理

    在前面的项目中添加SeekBar <SeekBar android:id="@+id/sb" android:layout_width="match_parent& ...

  10. View Focus的处理过程及ViewGroup的mFocused字段分析

    通过上篇的介绍,我们知道在对KeyEvent的处理中有非常重要的一环,那就是KeyEvent在focus view的path上自上而下的分发, 换句话说只有focus的view才有资格参与KeyEve ...