Git 安装和基本使用

Git

本文不对git具体是什么做过多的赘述,想详细了解,可以去廖雪峰的官方网站,里面真的是非常详细啊,本文意在引导初次使用并希望了解git基本操作的同学学习;(本环境为mac,与windows下基本一致);

git下载/安装

mac下建议采用homebrew安装,方便省事也省力;

获取Homebrew

直接在终端窗口复制首页第一条命令安装Homebrew,安装完成后,在终端直接运行

brew install git

安装完成后运行以下命令检测是否安装成功;

git version

运行完成后有类似git version 2.10.1 字样,则说明安装成功,brew默认安装最新版本;
windows下去此网站自行下载:https://git-for-windows.github.io/index.html

使用git

告诉git你是谁

git config --global user.name xxxxx
git config --global user.email xxxxx
git config --list

初始化git

指定路径下新建一个版本库(文件夹),建议使用一个新建一个干净的文件夹学习; 可用mkdir xxx;

git init

执行初始化后,空项目中出现了.git 文件(默认是隐藏的,并且里面的文件不要乱改,改了会影响使用),此时说明初始化成功,这个文件夹此时就变成Git可以管理的仓库了;


.git

ls显示所有文件

cd xxx  进入指定路径目录
ls -al 显示隐藏的,这个时候你也可以看到.git的文件

创建文件,并把文件添加至仓库中

touch index.html
cat index.txt 查看内容

查看git状态

git status 
git status

此时出现一个红色的index.html 说明是我们新添加(做了修改)的一个文件; 只要有变动的都是红色显示;

git 有三个区域:

  • 工作区
  • 暂存区
  • 版本库

添加到暂存区

git add index.html  // 添加指定到暂存区
git add . // 添加所有至暂存区

提交到版本库

git commit -m'index.html'   //-m'index.html' 可以理解为给此次上传贴了一个标签
提交

对比代码

以上已经把文件上传至版本库了,但是细心的同学应该记得我们没有往index.html 中添加任何代码;现在我们需要往index中写入一些内容;

写入内容
  • 工作区和暂存区对比
    此时我们已经成功添加了内容,但注意,此时的内容我们只是在工作区进行了修改,暂存区还是之前空的index文件,我们执行以下命令可以对比工作区和暂存区;
git diff 

发现显示了我们添加的内容:


对比1
  • 暂存区和版本库
    没有对比就没有伤害,我们还可以用以下命令对比暂存区和版本库
git diff --cached

此时你应该什么都没有得到,那么恭喜你没有报错,这是正常的,因为暂存区和版本库现在没有什么不同,都是空的index;

  • 工作区和版本库
git diff master  //(master为分支名,默认都是这个)

因为版本库也是空的,结果也很明显:


对比2

以上比对可以看出我们已经将想要添加的内容写入了工作区,但是这是不够的,我们需要将我们修改的文件上传至git的版本库中,同样需要两步:


对比三

执行后三个区的文件就相等了,没有任何区别。


查看日志

可以通过以下命令查看版本库中现在存在几个版本了,这个版本可以理解为游戏中的存档;

git log  //过多可以使用上下键查看,不想看可以q退出
版本库log

最上面是最近一次修改(看日期理解);
此时index.html 为游戏刚开始的第一个存档;
'add hello world' 是游戏第二关的存档;

查看所有日志

git reflog

回滚

这里假设我们在打游戏,第一关怪太厉害,好不容易打过去,技能加错了,第二关各种被虐,怎么办呢,想回起点重新开始;此时我们就需要通过刚才git log 查到的版本库日志取得存档号(版本号),黄色的就是;我靠,这么长一堆,放心,仅需复制前七位即可,多了也行;

git reset --hard 版本号
回到过去

执行完,告诉了你'now at xxxxx',便回到了你想回到的地方,为了验证,我们现在进到我们的项目中,看一眼index.html,哇,是不是好神奇,什么都没了,恭喜你,可以重新开始打怪了;


vi编辑

还要用编辑器打开写hello world 太累了,能不能直接在命令行里面写呢,可以,就是有这样的大神,在终端中敲代码(反正我不会);

vi index.html
i 编辑模式
esc + :wq 保存并退出  强制退出q!
vi控制台编辑文本

编辑完成后可以复习下上面学过的命令

上传版本库前对比:
git diff  
git diff --cached   //两个 -
git diff master 
想想会是什么结果?
提示:此时仅仅在工作区修改了文本,还没有上传,工作区,暂存区和版本库....

上传:
git add index.html
git commit -m"add hello"   // 再说明,-m是个标签,写什么都可以,只是方便我们知道每次都做了什么修改,必须要写;

上传版本库后对比:
git diff  
git diff --cached   //两个 -
git diff master 

最后查看版本库:
一共有多少版本呢?
git log   // git log 只显示回到过去后的版本,中间的过程不显示
git reflog  // git reflog 显示过去所有操作过的版本;
版本号

github

到现在为止,你在本地再也不用担心文件备份或者丢失的问题了。
但是真实工作中一个项目是多人协作的一个过程,每个人负责的区域不同就会造成几乎每个人都会有一个版本,而最终我们定下来的肯定是只有一个版本;

  • 实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

当然搭建一个服务器的代价太大了,此时就出现了一个叫GitHub的神奇网站;这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

本地仓库有了,现在在github上也需要新建一个仓库(因为我已经建好了,所以有红色警告);


新建仓库

建好仓库如下:


https://github.com/a307420929/git_du.git 就是你的仓库地址;

现在回到你的本地仓库下在控制台中执行:

git remote add origin https://github.com/a307420929/git_du.git
//origin 后写入你自己的地址;

上传本地仓库文件至GitHub

git push origin master
Paste_Image.png

刷新Github上的仓库,出现本地仓库中新建的html文件,说明上传成功~!


Paste_Image.png

现在,你就拥有了真正的分布式版本库!
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

从远程库克隆
第一步在新建一个仓库;


Paste_Image.png

第四步勾选的意思是在GitHub上创建的仓库中自带一个 README.md文件,此时这里就是一个只有在GitHub上有,本地仓库没有的文件,现在需求想把此仓库拉取到本地;

点击右边的Clone or download,将地址复制;


Paste_Image.png

在控制台输入

git clone https://github.com/a307420929/git_clone.git
Paste_Image.png

此时进入到git_du目录下:
会发现已经成功拉取到本地了


Paste_Image.png


分支管理

  • 查看分支
git branch 
  • 创建分支
git branch <branchName>
  • 切换分支
git checkout <branchName>
  • 删除分支(不能自己删除自己)

git branch -D <branchName>
  • 创建并切换(相当于将当前内容克隆一份)
git checkout -b <branchName>
  • 在master上合并dev分支
git merge dev
  • 产生冲突(手动解决提交新的版本)

创建仓库

  • 创建空仓库,写一个仓库名
new repository
  • 本地要建一个README.md .gitignore
echo '.idea' >> .gitignore
echo 'welcome' >> README.md
  • 提交并关联仓库
git add .
git commit -m ''
git remote add origin 地址
git remote -v 查看所有关联
git remote rm origin 删除
  • 推送到远程仓库上
git push origin master(可以推送其他分支) -u(upstream 下次提交不必再输入origin master)

发布静态页

  • 发布的静态页必须在gh-pages分支
git checkout -b gh-pages
git add .
git commit -m 
git push origin gh-pages
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容