文章引用自:Git使用教程    https://www.cnblogs.com/tugenhua0707/p/4050072.html

本文章只限用于Windows,敬请参考

注意:操作命令纯属手敲,可能会有错误,错误后参考文章链接!

Git下载地址https://gitforwindows.org/  # Windows版本

安装方式:一顿操作猛如虎,一看全是下一步。烦请移步百度。

安装完成后打开 Git Bash (打不开百度)

一、初步打开Git Bash:

因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。

填写用户名: git config --global user.name "这里填写您的用户名"

填写邮箱:git config --global user.email "这里填写您的邮箱"

二、创建版本库(仓库):

什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。

1、进入目录

首先进入您的仓库目录:cd E:\code\testgit

输入pwd命令可以查看当前的目录

2、把目录变成Git可以管理的仓库

改变仓库属性: git init Initialized empty Git repository in E:\code\testgit

这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。

3、仓库操作命令:

    把文件添加到暂存区: git add 您的文件(包括文件后辍名)

    把文件提交到仓库: git commit -m “您的文件(这个地方是提交文件的注释)”

    查看未提交文件: git status

    查看文件修改的具体内容: git diff 您的文件(包括文件后辍名)

一次性把所有暂存库的文件提交到仓库: git commit

三、版本回退

1、查看文件操作日志

查看文件详细的操作日志: git log

查看文件简明的操作日志: git log --pretty=oneline

2、文件版本回退操作

当前版本回退到上一个版本: git reset --hard HEAD^

当前版本回退到上上一个版本: git reset --hard HEAD^^

当前版本回退到指定n版本: git reset --hard HEAD~n

回退到上一个版本后后悔了,想返回原来最后一次的版本,可以通过版本号回退:

获取版本号: git reflog

版本回退: git reset --hard 版本号(最前面的字符)

四、工作区与暂存区的区别

  工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

baGit提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

五、Git撤销修改和删除文件操作

1、撤销修改

工作区做的修改全部撤销: git checkout -- 您的文件(包括文件后辍名)

注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了。

命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销, 这里有2种情况,如下:

readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。

另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。

2、删除文件

直接在文件库删除文件或者使用如下命令

删除命令: rm 您的文件(包括文件后辍名)

在没上传到仓库之前可以使用上面的撤销修改命令再把删除的文件恢复回来

六、 远程仓库

在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:

1、 创建SSH key

在用户主目录下,看看有没有 .ssh目录,如果有,再看看这个目录下有没有 id_rsaid_rsa.pub 这两个文件id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。),如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:

ssh-keygen  -t rsa C “您的邮箱”

2、添加key

    登录github,打开右上角的齿轮按钮“settings”中左侧列表的SSH Keys,然后点击“Add SSH Key”,填上任意title(标题),在Key文本框里黏贴“id_rsa.pub”文件的内容。

点击绿色按钮“Add Key”就可以看到添加完成的key。

3、如何添加远程库

现在的情景是:我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。

首先登录github,然后右上角的“加”的符号“create a new repo”创建一个新的仓库。

Repository name填入“您的仓库名称”,其他保持默认设置,点击绿色按钮“Create repository”按钮,就成功地创建了一个新的Git仓库:

目前,在GitHub上的这个testgit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的testgit仓库下运行命令:

git remote add origin https://github.com/tugenhua0707/testgit.git(后面这个网址要用自己的)          # 克隆远程仓库内容

推送本地到远程:git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了。

从现在起,只要本地做了提交,就可以通过如下命令:

git push origin master

把本地master分支的最新修改推送到github上了,现在就拥有了真正的分布式版本库了。

4、如何从远程库克隆?

上面我们了解了先有本地库,后有远程库时候,如何关联远程库。

现在我们想,假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?

首先,登录github,创建一个新的仓库,名字叫testgit2。

远程库准备好了,下一步就是使用命令git clone克隆一个本地仓库了。

git clone 你的github地址

接着在本地目录下就会生成testgit2 目录了

七、创建与合并分支

在  版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

首先,我们来创建dev分支,然后切换到dev分支上。如下操作:

get checkout -b dev      # 创建并切换分支

git branch                # 查看当前分支

git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令

get checkout master(主分支)   # 切换回主分支

git merge dev                     # 在主分支上合并dev分支

      git branch -d dev               # 删除dev分支

      git log                           # 查看分支情况

总结创建与合并分支命令如下:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

主次分支内容冲突解决办法:

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,修改分支内容和主分支内容一致即可解决

分支管理策略。

通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。

命令:

在主目录下合并分支目录:

git merge no-ff  -m 本次命令做的事情注释 dev

分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

八、BUG分支解决办法

在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

 git stash         #把当前工作分区先隐藏

在主目录新建进入临时分支,查看并更改需要修改的代码后,切换回主分支合并临时分支,合并确认完成后,在进入之前的工作分支。

进入工作区后恢复之前隐藏的工作分区内容。

git stash list     # 查看之前的工作分区隐藏在哪个地方

Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:

git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。

另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。

九、多人协作

当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。

git remote     # 要查看远程库的信息

git remote v  # 要查看远程库的详细信息

其中查看远程库的详细信息后会有两条推送信息,结尾括号内的fetch为抓取,就是下载;push为推送,就是把本地推送到远程

1、 推送分支

git push origin master       # 本地主分支推送到远程仓库

那么一般情况下,那些分支要推送呢?

master分支是主分支,因此要时刻与远程同步。

一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。

2、 抓取分支

这个看原文章

Windows下GIT的使用方法的更多相关文章

  1. windows下git的使用方法(码云)

    这表文章主要是用了可视化操作: 使用命令行操作:https://www.cnblogs.com/mswyf/p/9370238.html 一.安装Git Bash 为了在windows下使用Git,我 ...

  2. Windows下Git中正确显示中文的设置方法

    Windows下Git中正确显示中文的设置方法 具体设置方法如下: 进入目录etc:$ cd /etc 1. 编辑 gitconfig 文件:$ vi gitconfig.在其中增加如下内容: [gu ...

  3. Windows下Git服务器搭建[转]

    Windows下Git服务器搭建   作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 ...

  4. Windows下Git Bash中VIM打开文件中文乱码

    Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 admin@DESKTOP-O99620V MINGW64 /d/项目GGE/Hard_for_GGE (master) ...

  5. 图解Windows下 GIT GUI 使用教程

    https://jingyan.baidu.com/article/19020a0a7ae6af529c284248.html 本篇经验将和大家介绍Windows下 GIT GUI 使用教程,希望对大 ...

  6. Windows下Git使用报错:warning:LF will be replaced by CRLF in ××××.××

    Windows下Git使用报错: warning:LF will be replaced by CRLF in ××××.××(文件名) The file will have its original ...

  7. 在Linux下和Windows下遍历目录的方法及如何达成一致性操作

    最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件 ...

  8. Linux和Windows下查看环境变量方法对比

    摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...

  9. Windows下GIT安装与使用(上传远程端)

    Windows下GIT安装与使用(上传远程服务器) 1.  登陆http://msysgit.github.io/并下载Git 2.  打开下载的exe文件,一路默认(路径可以去修改).有可能电脑需要 ...

随机推荐

  1. QT pro 添加带空格的路径以及添加库文件的正确方法

    用这个:$$quote() 如何添加库?看下面添加mysql路径的例子: INCLUDEPATH += $$quote(C:\Program Files (x86)\MySQL\MySQL Serve ...

  2. uwp 获取系统字体库

    原文:uwp 获取系统字体库 效果图: 要获取到字体库首先要在 NuGet 添加 SharpDx.Direct2D1  api: /// <summary> /// 获取系统字体库列表 / ...

  3. Win8 Metro(C#) 数字图像处理--1 图像打开,保存

    原文:Win8 Metro(C#) 数字图像处理--1 图像打开,保存 作为本专栏的第一篇,必不可少的需要介绍一下图像的打开与保存,一便大家后面DEMO的制作.   Win8Metro编程中,图像相关 ...

  4. 微信小程序把玩(五)页面生命周期

    原文:微信小程序把玩(五)页面生命周期 这里只要熟悉页面的基本生命周期即可,业务在指定生命周期函数内书写. 以下是官网给出的生命周期函数方法和状态图 上面的生周期函数图对于做Android 或者IOS ...

  5. /\B(?=(?:\d{3})+$)/g 一条令人费解的正则表达式

    网上浏览博客看到要用JavaScript正则表达式解决一个功能, 要在数字中间插入逗号, 用来表示书面的金额写法. JS代码是这样子的 let test1 = '1234567890' let for ...

  6. 使用Microsoft Power BI进行基本的数据分析

    Power BI是微软开发的一款简单易用的数据可视化软件. 导入数据 使用Power BI的第一步是将数据导入到软件中.获取数据->更多,可以看到可使用多种数据源,甚至微软提供了一些联机的数据源 ...

  7. python中时间相关问题,仅作为笔记

    1.获取当前时间的两种方法: import datetime,timenow = time.strftime("%Y-%m-%d %H:%M:%S")print nownow = ...

  8. 当程序调用dll时获取dll路径,DLL中获取自身的句柄

    当程序调用dll时,获取dll路径的方法: HMODULE hMod = GetModuleHandle(_T("axload.dll")); if (hMod != NULL) ...

  9. 大数据基础之Kafka(1)简介、安装及使用

    kafka2.0 http://kafka.apache.org 一 简介 Kafka® is used for building real-time data pipelines and strea ...

  10. 统计插件,Highcharts,以及modelformset

    一.modelfromset组件 1.作用:用于批量处理多个表单 form表单对应的组件是formset Modelform对应的组件是modelformset 2.引入 From django.fo ...