最近有朋友经常问git的一些操作,写在这里与大家分享,以后也不用一一解释了。惯例,这是基础分享,从安装开始说起:

安装:

  1. 去这里 https://git-scm.com/ 找到你所需要的版本,下载并安装。
  2. 找到安装好的文件,并打开Git Bash。

如果搞定,那么恭喜,否则请继续重复。

  • git config --global user.name 你的名字
  • git config --global user.email 你的邮箱

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

      注意:git config  –global 参数,表示你这台机器上所有的仓库都会使用这个配置,当然也可以对某个仓库指定的不同的uname和email。

创建版本库

以e盘下www为例

$ cd e:             进入 e盘     、

$ cd www         进www

$ pwd              /e/www    回车看你的目录是否正确打印

$ mkdir test     创建版本库 (新建名为test的文件夹)

$ cd test

$ git init          这样test目录下就多了一个.git 文件   不要动他!!!   用来控制版本等一些操作的

没问题的话,咱们继续走着~

添加文件到版本库

如果你觉得内容太多,可以清理一下,

$ clear                    清理当前命令台

现在,我们在版本库test目录下,新建个文件 README.md 并在在里面写点内容 # 要饭的好帅  (当然你也可以创建其他类型的文件写你想写的内容,比如,新建一个txt文件,写上楼主好帅)

回来继续~

$ git add README.md             把刚才新建的README.md文件添加到暂存区里面

$ git commit -m"第一次提交"     把文件提交到仓库   -m"用来备注的"

注意:add是入暂存    commit才是入库

$ rm README.md                    试一下。。。。。卧槽,原来这是删除文件,肿么破

$ git checkout --README.md       没关系,又回来了,仔细看一眼,还是不是当年的夏雨荷嘛。

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

我想彻底干掉他肿么办?在 rm后,再commit提交,这不是我告诉你的,误删不是俺的过错 0.0

说说目录中那个隐藏目录.git,这是版本库。其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

咱们刚才不是提交需要add  与 commit么

  • add,其实就是把文件添加到暂存区。
  • commit,就是把暂存区的所有内容提交到当前分支上。

 log

  改一下文件的内容,

  $ git add README.md

  $ git commit -m"第二次修改"

$ cat README.md                  显示当前版本的文本内容

在改一次(最好内容有所区别),在 add  commit

好,别玩了....

$ git log                                看看你的捣蛋了么,证据确凿。铁证如山。

$ git log --pretty=oneline        单行显示。觉得log日志太乱的话,可以用,如果信息太多,可能会显示END  无视它,按q键退出来就好

$ git reset --hard HEAD^        回到你上次的版本

$ git reset --hard HEAD^^     上上次    修改那么多次,要^^^^^^^^^^,卧槽。。。别着急,先

$ git reflog                           看到前面是什么,我才应该是版本号,最后一行显示的是第一次提交的版本,看到了版本号,我觉得你应该想到了什么,没错,我们根据版本号回到之前的版本,版本号就写前面几位就可以,别那么实在,把一大串都写上去

$ git reset --hard 6459c17     回去看看,你的文件内容发生了什么变化

多玩几次,试试看。。。

累了么? 在休息之前先mark,帅气的要饭的继续接着聊远程仓库,回来的时候记得带着你的github账号

远程仓库

到这里,我假设你已经有了github账号,如果没有,快去注册。

由于你的本地仓库和线上仓库之间的传输是通过加密的,所以需要你设置:

  • 创建SSH Key

ssh-keygen  -t rsa –C “你的邮箱”       在刚才test目录下,是不是已经多了两个文件 xxx 与 xxx.pub

  • 登录github

打开” settings”(右上角头像右侧的向下小三角)中的SSH Keys左侧列表)页面,然后点击“New SSH Key”,

title里,你可以写一个有意义的titie(比如:这是一个有意义的titie),在Key文本框里粘贴xxxx.pub文件的内容。 然后Add SSH key

是的,没错,你现在已经看到你的key了

接下来你又该想了,我本地有个仓库,还想在线上创建个仓库,并且希望两个仓库同步,这样线上既可以备份,别人也可以通过该仓库来做一些事情,要怎么做?

那么咱们登录github,然后在右上角找到“new repository”(在头像左侧 +下三角)创建一个新的仓库。然后写上你的项目名字test,点击创建

这个仓库克隆新仓库,也可以把本地仓库与之关联,然后,把本地仓库的内容推送到线上仓库。

现在有空仓了,然后呢?

回到命令台,继续...

$ git remote add origin https://github.com/xxx/TEST.git

$ git push -u origin master                                     把当前分支master推送到远程

由于远程库是空的,第一次推送master分支时,加 –u参数,Git会把本地的master分支内容推送的远程新的master分支,还会把他们关联起来,

这样以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了。

注意:这里需要输入你的github账号密码

提交一下试试看?

$ git push origin master           现在你就有了真正的分布式版本库咯。

克隆仓库

  现在,如果远程库有新的内容了,咱们搞到本地来?这部简单么,下载嘛。。。好吧,您赢了。

我们需要克隆,那么如何克隆呢?

登录github,咱们创建一个新的仓库,名字叫test2

$ git clone https://github.com/xxx/text2.git         克隆
      Cloning into 'text2'...

$ ls                                                                   查看仓库目录
      ds.txt luqin luqin.pub README.md text2/

创建与合并分支

  咱们刚才提到,版本回退时候,每次提交,git都会把它们根据时间串成大串儿,这就是一个分支。现在只有一串儿(只有一条事件线),我们把这个分支称之为主分支。

  就是master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

  $ git checkout -b dev
    Switched to a new branch 'dev'      git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令

  $ git branch dev

  $ git checkout dev

$ git branch         查看分支,会列出所有的分支,当前分支前面会添加一个星号。
    * dev
    master

  然后我们在dev分支上继续,还记得咱们之前的那个文本文件么。在加点内容:

  $ cat README.md           查看文件

是不是发现了什么

  

  继续查看README.md内容如下:

  $ git checkout master       咱们切换到主分支master上
    M README.md
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.

  $ git merge dev               把dev分支上的内容合并到当前分支(master)
    Already up-to-date.

在看一眼,发生了什么。。  是不是在此分支看到刚才增加的东东。

git merge是合并指定分支到当前分支上,合并后,再查看README.md内容,这时候我们可以看到,和dev分支最新提交的是完全一样的。

  $ git branch -d dev     在试试 删除分支
  $ git branch               查看分支,会列出所有的分支,当前分支前面会添加一个星号

  注意:假如两个分支都有修改,合并会有冲突。

 有点乱么,总结一下:

  • git checkout master       切换回主分支
  • git checkout -b dev         创建并切换,相当于以下两条命令

    git branch dev

       $ git checkout dev        切换到dev

  • $ git branch              查看所有分支 *表示在当前分支下
  • 修改完成文件后在 dev分支下提交

    $ git add README.md

    $ git commit -m"备注"

  • $ git branch -d dev           删除dev分支
  • $ git merge dev            把dev分支合并到当前分支,dev分支还存在

因为时间关系,后面,还会继续与大家分享分支管理,多人协作,整理常用的一些命令。

												

关于git,你需要知道一点命令的更多相关文章

  1. Git 内部原理 - (1)底层命令和高层命令 (2Git 对象

    文章摘选自git官网,这里复制下来表示我已阅读并学习过一次这些内容: 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理和实现方式. 我们发现学习 ...

  2. git安装用法和常用命令

    目录 git 下载 安装 git 工作中常用命令 Git常用命令汇总以及其它相关操作 或者 常出错误: 常用修改: 题外话(相关概念) git 下载 安装 1.下载Git,官网地址:https://g ...

  3. Git 基本概念及常用命令

    一.基本概念 文件的三种状态:(任何一个文件在git中都有以下三种状态) 1) 已提交(committed):表示该文件已经被安全地保存在本地数据库中了. 2) 已修改(modified):表示修改了 ...

  4. 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!

    git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ...

  5. Git 基本原理与经常使用命令

    平时使用过两种版本号控制软件 SVN 和 Git,平心而论,假设纯粹自己使用,那么绝对 Git 更加适合,本地库.远程库.离线工作.强大而灵活的分支.大名鼎鼎的Github, 这些都是选择 Git 的 ...

  6. Git 配置环境及常用命令整理

    一.Git教程网站 廖雪峰网站 易百GitHub命令:https://www.yiibai.com/git/git_clone.html 完成Windows环境命令下Git config配置 设置好之 ...

  7. git bush的一些基础命令

    git bush的一些基础命令(不区分大小写) 通过命令创建本地仓库 首先自己需要手动建一个文件夹用于本地仓库 进行如下输入,使用cd跳转到刚刚创建的文件夹中 之后再输入 git init 即可创建 ...

  8. git常用情景和基础命令

    git常用情景和基础命令 将项目克隆到本地 --xxx是git的地址 git clone xxxx 或者初始化git(github提供滴) --新建一个readme.md文件 echo "# ...

  9. git reset –mixed –soft –hard命令解释。

    直接看官方的解释. 其中HEAD代表版本库,index代表暂存区,另外还有一个我们增删改代码的工作区.所以官方解释翻译过来就是: --hard : 回退版本库,暂存区,工作区.(因此我们修改过的代码就 ...

随机推荐

  1. 附录D 安装ZooKeeper

    D.1    安装ZooKeeper D.1.1   下载ZooKeeper ZooKeeper是Apache基金会的一个开源.分布式应用程序协调服务,是Google的Chubby一个开源的实现.它是 ...

  2. MySQL入门03-MySQL配置安全性、易用性

    一.设定管理员用户和密码 二.处理test库权限隐患 三.自定义脚本提升易用性 中间定义文件 启动MySQL服务 关闭MySQL服务 快捷登录MySQL 四.设置开机自动启动MySQL服务 Refer ...

  3. 【JUC】JDK1.8源码分析之AbstractQueuedSynchronizer(二)

    一.前言 在锁框架中,AbstractQueuedSynchronizer抽象类可以毫不夸张的说,占据着核心地位,它提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.所以很有必 ...

  4. 【JUC】JDK1.8源码分析之ConcurrentHashMap(一)

    一.前言 最近几天忙着做点别的东西,今天终于有时间分析源码了,看源码感觉很爽,并且发现ConcurrentHashMap在JDK1.8版本与之前的版本在并发控制上存在很大的差别,很有必要进行认真的分析 ...

  5. SIFT特征详解

    1.SIFT概述 SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的.SIFT特征对旋转.尺度缩放.亮度变 ...

  6. React Native at first sight

    what is React Native? 跟据官方的描述, React Native是一套使用 React 构建 Native app 的编程框架. 推出不久便引发了广泛关注, 这也得益于 Java ...

  7. Extjs.FormPanel

    刚刚学习ExtJS ,备注一哈代码 防止忘记... <html xmlns="http://www.w3.org/1999/xhtml"> <head runat ...

  8. cron表达式详解[转]

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...

  9. ASP.NET MVC Notes - 01

    inetmgr 进入IIS ViewBag和ViewData在run-time的时候检查错误,View中的用法如下: @*ViewBag传递的是动态对象*@ @foreach (string item ...

  10. Top 15 不起眼却有大作用的 .NET功能集

    目录 1. ObsoleteAttribute2. 设置默认值属性: DefaultValueAttribute3. DebuggerBrowsableAttribute4. ??运算符5. Curr ...