关于git,你需要知道一点命令
最近有朋友经常问git的一些操作,写在这里与大家分享,以后也不用一一解释了。惯例,这是基础分享,从安装开始说起:
安装:
- 去这里 https://git-scm.com/ 找到你所需要的版本,下载并安装。
- 找到安装好的文件,并打开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,你需要知道一点命令的更多相关文章
- Git 内部原理 - (1)底层命令和高层命令 (2Git 对象
文章摘选自git官网,这里复制下来表示我已阅读并学习过一次这些内容: 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理和实现方式. 我们发现学习 ...
- git安装用法和常用命令
目录 git 下载 安装 git 工作中常用命令 Git常用命令汇总以及其它相关操作 或者 常出错误: 常用修改: 题外话(相关概念) git 下载 安装 1.下载Git,官网地址:https://g ...
- Git 基本概念及常用命令
一.基本概念 文件的三种状态:(任何一个文件在git中都有以下三种状态) 1) 已提交(committed):表示该文件已经被安全地保存在本地数据库中了. 2) 已修改(modified):表示修改了 ...
- 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!
git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ...
- Git 基本原理与经常使用命令
平时使用过两种版本号控制软件 SVN 和 Git,平心而论,假设纯粹自己使用,那么绝对 Git 更加适合,本地库.远程库.离线工作.强大而灵活的分支.大名鼎鼎的Github, 这些都是选择 Git 的 ...
- Git 配置环境及常用命令整理
一.Git教程网站 廖雪峰网站 易百GitHub命令:https://www.yiibai.com/git/git_clone.html 完成Windows环境命令下Git config配置 设置好之 ...
- git bush的一些基础命令
git bush的一些基础命令(不区分大小写) 通过命令创建本地仓库 首先自己需要手动建一个文件夹用于本地仓库 进行如下输入,使用cd跳转到刚刚创建的文件夹中 之后再输入 git init 即可创建 ...
- git常用情景和基础命令
git常用情景和基础命令 将项目克隆到本地 --xxx是git的地址 git clone xxxx 或者初始化git(github提供滴) --新建一个readme.md文件 echo "# ...
- git reset –mixed –soft –hard命令解释。
直接看官方的解释. 其中HEAD代表版本库,index代表暂存区,另外还有一个我们增删改代码的工作区.所以官方解释翻译过来就是: --hard : 回退版本库,暂存区,工作区.(因此我们修改过的代码就 ...
随机推荐
- 【记录】SqlBulkCopy 跨数据库,表自定义导入
使用场景: 一个数据库中的表数据,导入到另一个数据库中的表中,这两个表的表结构不一样,如果表结构一样的时候,导入非常简单,直接读取导入就行了,表结构不一样,就意味着需要加入一些判断,SqlBulkCo ...
- C语言 第六章 多重循环练习
一.循环输入 #include "stdio.h" void main() { char c; do { printf("我告诉你1+1=2\n"); prin ...
- ZOJ Problem Set - 1078 Palindrom Numbers
属于水题,主要是涉及到回文问题. 这里标注下进制转换的方法: while(n) { p[i]=n%basis; n/=basis; } 见代码: #include <stdio.h> in ...
- struts2学习笔记--OGNL表达式1
struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...
- 使用GIT@OSChina 实现协同工作的方法。
由于我新建了一个团队,团队里的人对于GIT都不太熟悉,所以才有了这篇文章.我用的是git-1.9.4的版本,所以我建议团队里面的成员也使用这个版本.首先是下载git,这个自己去网上找吧,一大堆,记得是 ...
- 【PHP面向对象(OOP)编程入门教程】17.克隆对象__clone()方法
有的时候我们需要在一个项目里面,使用两个或多个一样的对象,如果你使用“new”关键字重新创建对象的话,再赋值上相同的属性,这样做比较烦琐而且也容易出错,所以要根据一个对象完全克隆出一个一模一样的对象, ...
- 3.Java网络编程之IP
前面两篇博文我们已经简单了解了IP.端口.协议以及两种参考模型,我们现在重新从程序角度来看下这个参考模型. 如果我们从事的是Web网站开发,那么我们应该知道HTML是一种超文本标记语言 (Hyper ...
- 通过寄生组合式继承创建js的异常类
最近项目中在做js的统一的异常处理,需要自定义异常类.理想的设计方案为:自定义一个异常错误类BaseError,继承自Error,然后再自定义若干个系统异常,例如用户取消异常.表单异常.网络异常,这些 ...
- Linux上的SQL Server的起步
我们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!因此,对我来说,是时候跨界在Linux上安装我的第一个SQL安装,这样的话,我就可以在Linux上折腾 ...
- JavaScript的作用域和块级作用域概念理解
作用域 作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期.说到这里我们需要理解两个概念:块级作用域与函数作用域. 函数作用域 这个应该好理解,函数作用域就是说定义在 ...