安装完后,每个机器都要自报家门

Config--配置      global--全局参数

配置全局用户名

$git config --global user.name “Your Name”

配置邮箱地址

$git config --global user.email “email@example.com”

创建版本库

Mkdir --建立一个新的子目录

创建一个名为learngit的文件夹

$mkdir learngit

进入learngit文件夹里面

$cd learngit

显示当前目录

$pwd

把当前目录变成git可管理的仓库

$git init

把文件添加到仓库

Commit  --把...交托给

把文件添加到缓存区

$git add readme.txt   /   $git add .(添加全部已修改的文件)

对本次提交做一个提交说明

$git commit -m “xxxx”

查看历史修改

查看是否有已改动的文件

$git status

查看被修改的内容

$git diff readme.txt    /   $git diff .

查看版本控制系统的历史纪录

$git log

包括(commit版本号,提交的人,修改的日期与修改的那内容说明)

$git log  --pretty=oneline

回退版本:在git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个数不过来,可以写成HEAD~100

回退到上一个版本

$git reset  --hard HEAD^

查看当前版本readme.txt的内容

$cat readme.txt

回退版本后,使用$git log查看,发现回退前的最新版本已经不见了。

想要回到之前的最新版本,条件是,回退  时的命令行窗口还未被被关闭,然后使用

$git reset  --hard 1234567

1234567为之前最新的版本号的前7位,以查出来的为准

如果之前的命令行窗口已经关闭了,又找不到新版本的commit id。那就用下面的命令

$git reflog

git提供一个命令git reflog来记录你的每一次命令

可以看到之前最新的版本的那行append GPL   相对应的commit id

现在,你依然可以回到最新版本了

Branch  --分支    tracked  --跟踪

Git checkout -- file命令中的“--”很重要,没有“--”就变成了“创建一个新分支”命令

放弃当前工作区的修改

$git status

$git checkout  --  readme.txt

把放在缓存区的文件撤销,放回到工作区

$git reset HEAD readme.txt

$git add test.txt

$git commit -m “add test.txt”    ---(添加文件)

$rm test.txt

$git status     ---(提示你哪些文件被删除了)

选择一

$git rm text.txt

$git commit -m “remove test.txt”   --把文件从版本库里删除掉

选择二

$git checkout -- test.txt   ---一键还原

创建远程仓库

(先有本地库,后有远程库)

1,去github.com官网注册github账号,

2,再电脑本机创建密钥,.ssh文件夹里有俩个文件,id_rsa和id_rsa.pub

3,在github里找到设置ssh key的页面选项(版本不同位置不同),然后点“add SSh key” ,填上任意title,在key文本框里粘贴id_rsa.pub文件的内容,然后确定添加

4,开始添加远程库,

假设本机已有名为”abc”的项目,将”abc”设为本地仓库。

在github里创建同名项目”abc”

在本地仓库”abc”里右键打开base运行命令

创建密钥

$ssh-key -t rsa -C “youremail@example.com”

密钥创建后就会告诉你密钥的路径。一般情况默认路径是

C:\Users\Administrator

把本地仓库与远程仓库相关联的内容推送到github仓库

$git remote add origin git@github.com:youname/abc.git

youname为你的github账号的用户名

Git的远程库默认名为origin

abc为你本地项目的项目名

把本地库的所有内容推送到远程库上

$git push -u origin master

用git push命令,实际上是把当前分支master推送到远程。由于远程是空,我们第一次推送master分支时,加上-u参数,在推送的同时,把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取就可以简化命令,之后的提交命令可以省略-u了,如下:

$git push origin master

(先有远程库,后有本地库)

1,在github创建项目的时候同时创建readme.txt文件

2,用命令克隆一个远程库到本地

$git clone git@github.com:youname/bbb.git

youname为你的github账号的用户名

bbb为你在github上创建的项目名

创建后会在本地生成同名文件夹

$cd bbb

$ls

ls命令是查看当前文件夹里有什么文件

(分支管理)

创建分支

$git checkout -b dev

Dev为分支名

Git checkout 命令加上-b参数表示创建并切换,相当于以下两条命令

$git branch dev      //创建分支

$git checkout dev    //切换分支

查看分支

$git branch

切换回主分支

$git checkout master

切换分支

合并分支

$git merge dev

把dev分支的工作成果合并到master分支上

删除分支

$git branch -d dev

合并后,就可以删除dev分支了。

删除后最好再查看一次当前分支

解决冲突

(假设分支”dev”与主分支”master”起冲突,现在我们在master分支上

合并分支

$git merge dev

Git告诉我们,readme.txt文件存在冲突,必须手动解决

查看被修改的内容

$git status

也提示有冲突

查看文件内容

$cat README.md

我们可以看到起冲突的部分是哪里

这个时候我们就要找到该文件,手动修改。修改后才能进行下一步操作

提交并上传已修改好的文件

$git add .

$git commit -m “”

查看分支合并的情况

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

删除分支

$git branch -d dev

通常合并分支时,Git会用”Fast forward”模式,这种模式下,删除分支后会丢掉分支信息

如果禁用”Fast forward”模式,Git就会在merge时生成一个新的commit,这样,就可以从分支的历史上查看分支信息

分支管理策略(  --no-ff方式的merge      表示禁用“Fast forward”)

$git checkout -b dev

修改文件

$git add .

$git commit -m “”

合并分支,注意--no-ff参数,表示禁用“Fast forward”

$git checkout master

$git merge  --no-ff  -m “” dev

查看分支历史

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

分支策略

Bug分支

当你接到一个代号101的bug的任务要立即处理时时,很自然的就想创建一个分支。但是假如你正在dev的分支上进行的工作还没提交。这怎么办?

我们可以把当场工作现场“储存”起来,等恢复现场后继续工作

$git status      //查看目前改动了什么

$git stast       //存储工作现场

$git status      //再查看一次   会发现工作区很干净

$git checkout master   //回到主分支

$git checkout -b issue-101     //创建新分支

然后修复bug

提交并推送

$git add .

$git commit -m “”

修复完后回到主分支,合并并删除

$git checkout master

$git merge --no-ff -m “” issue-101

$git branch -d issue-101

删除后,回到dev分区

$git checkout dev

$git status    //发现工作区是干净的

$git stash list    //查看工作现场存到哪了

恢复现场并删除stash内容,回到现场工作

$git stash pop

$git stash list    //再查看一遍就看不到任何stash内容了

如果想恢复制定stash的话,可以

$git stash apply stash@{0}

Feature分支

在已有的项目里添加一个新功能的时候,最好新建一个feature分支。

当要丢弃一个没有被合并过的分支时,可以使用以下命令强行删除

$git branch -D feature-vulcan

feature-vulcan为分支的分支名

多人协作

查看远程库信息

$git remote    或  $git remote -v

推送分支

$git push origin master    //推送主分支

$git push origin dev      //推送其他分支

把最新的版本拉去下来

$git pull

                                    项目常用git命令:

$git status

查询项目是否有改动

$git add .

将改动的地方添加道缓存区

$git commit -am “xx”

将缓存区的信息进行提交并注明提交信息

$git fetch

拉取项目最新版本

$git rebase origin/developer

将本地的改动提交到远程项目

$git push origin developer

把本地库的所有内容推送到远程库上

$gitk

查询

廖雪峰的git学习笔记的更多相关文章

  1. 阅读廖雪峰老师git教程笔记

    1.首先git是目前世界上最先进的分布式版本控制系统之一.所谓版本控制是针对工作中一些普遍的现象的. 比如,你写一份文档,期间,不断的改善,每次修改都会进行备份,久而久之,会有很多版本的同一份文档,但 ...

  2. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  3. git学习笔记01-git最基本的工作原理分布式

    git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000  --廖雪峰老师 ...

  4. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

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

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

  6. git学习笔记之一

    Git是比较优秀的分布式版本管理工具,这次学习了git的基本命令,现在作一些归纳总结,已备复习之用. Git 认识 Git 直接用hash值记录提交的修改文件的快照,本地操作无需联网 Git 有三种状 ...

  7. Git学习笔记 (二)

    Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...

  8. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  9. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

随机推荐

  1. vue-router(路由)详细教程

    vue-router(路由)详细教程:https://blog.csdn.net/wulala_hei/article/details/80488727 vue路由组件传参-页面通信:https:// ...

  2. viewport的深入调研

    1.viewport概念:viewport就是设备的屏幕上能用来显示我们的网页的那一块区域. viewport的默认值980px或1024px等,以下是浏览器的默认viewport宽度 2.css中的 ...

  3. 60.Median of Two Sorted Arrays(两个排序数组的中位数)

    Level:   Hard 题目描述: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find t ...

  4. fieldset与legend,label

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. db2 load命令装载数据时定位错误出现的位置

    使用如下命令装载数据(注意CPU_PARALLELISM 1): db2 load from filename.del of del replace into tab_name  CPU_PARALL ...

  6. L2Dwidget

    只需要在[页首html代码]中引入L2Dwidget.js即可.<!-- 右下角live2d效果 --> <script src="https://eqcn.ajz.mie ...

  7. 模仿JQuery封装ajax功能

    需求分析 因为有时候想提高性能,只需要一个ajax函数,不想引入较大的jq文件,尝试过axios,可是get方法不支持多层嵌套的json,post方式后台接收方式似乎要变..也许是我不太会用吧..其实 ...

  8. C语言小笔记(1)

    枚举类型的大小是4,和一个int整形大小一样 就是最后一个逗号后面的表达式的值,比如: int a=1,b; b=(a+1,a+2,a+3); 那么b的值就是a+3,也就是4 函数名   :print ...

  9. Math.random()详解

    Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值,是Java语言常用代码.例如:double a=Math.random()*(3-1)+1,设置 ...

  10. 【leetcode】435. Non-overlapping Intervals

    题目如下: Given a collection of intervals, find the minimum number of intervals you need to remove to ma ...