Git 入门 ---- Git 常用命令
来源:互联网 发布:知乎那些曾经轰动一时 编辑:程序博客网 时间:2024/06/06 00:13
本文作为 Git 入门 ---- Git 与 SVN 区别 的续篇,继续介绍 Git 的入门知识
四. Git 安装
OS X 版本: Mac 一般自带不需要安装
Windos 版本: https://git-for-windows.github.io/
Linux 版本: Linux 一般也是自带无需安装
五. 创建新仓库
创建新文件夹,cd 到文件夹,执行命令: git init 用来创建新 git 仓库
六. 提交文件进仓库
在新建好 git 仓库的文件夹里加入 readme.txt 文件
1. 使用 git add readme.txt 把文件添加到仓库,执行后没有任何提示,说明添加成功
2. 使用 git commit -m "提交内容的注释" 将文件真正提交到仓库
为什么提交分为 add 和 commit 呢?
那是 git 架构所决定的,你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index 又称 Stage),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。所以 add 是提交到 Index 的暂存区, commit 是提交到 Head,但是还没到远端仓库
七. 检出仓库
克隆本地仓库:
git clone /wenniuwuren/repository
克隆远端服务器上的仓库
git clone username@host:/wenniuwuren/repository
八. 查看本地与仓库的异同
修改 readme.txt 文件,然后执行 git status 查看本地和仓库的异同状态
git status# On branch master# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: readme.txt#no changes added to commit (use "git add" and/or "git commit -a")
上述命令行提示信息意思是:本地已经修改,但还未 commit
执行 git diff 来查看本地与仓库详细的异同信息:
D:\gitTest>git diffdiff --git a/readme.txt b/readme.txtindex a888d81..77c430a 100644--- a/readme.txt+++ b/readme.txt@@ -1 +1 @@-你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。\ No newline at end of file+update\ No newline at end of file
九. 版本回退
1. git log 查看提交历史记录
D:\gitTest>git log
commit b5683e767328b904694b247214d6ccf6e467a4a0
Author: unknown <hzzhuyibin@hz.ntes.domain>
Date: Sat Jul 16 14:12:32 2016 +0800
update
commit 155899056f19a6d5f97aa4fc2f3550adcfe37b57
Author: unknown <hzzhuyibin@hz.ntes.domain>
Date: Sat Jul 16 11:23:29 2016 +0800
add readme file
需要友情提示:你看到的一大串类似的b5683e767328b904694b247214d6ccf6e467a4a0 是
commit id
(版本号),和SVN不一样,Git的commit id
不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字。为什么commit id
需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,想象一下多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。2. 基础概念
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。- 要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
3. 修改后相关撤销操作
首先,Git必须知道当前版本是哪个版本,在Git中,用
HEAD
表示当前版本,也就是最新的提交 b5683e767328b904694b247214d6ccf6e467a4a0,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。(PS:Windows 下用 HEAD^ 可能有点问题,会提示你 More? 本来输入 HEAD^ 就能回退到上一个版本,但是需要再输入一个 ^ 才能正确执行,Windows 下建议直接用 HEAD~1 回到上一个版本)回退到上一个版本,就可以使用命令:
git reset --hard HEAD~1
上述的 hard 参数什么意思呢?
根据 soft、 mixed、 hard,会对 working tree 和 index 和 HEAD 进行重置:
git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
执行上述命令后,用 git log 就看不到执行记录了,只能用 git reflog 来查看所有的命令历史,这样就能根据提交的 id 来决定回到哪个版本,比如命令为:
D:\gitTest>git reset --hard b5683e7
HEAD is now at b5683e7 update
从上述命令可以看到,不需要输入全部提交的唯一标识 id,只要前几位 id 内容 git 就能区别是哪一个版本,执行完后,就回到了 b5683e7... 版本。
- 修改后 未add(添加到暂存区) 需要撤销修改时:
git checkout -- myfile.txt 或 手动删除工作区修改 工作区 : clean 暂存区: clean
- 修改后 add了(未commit) 再次修改文件 要撤销第二次修改时:git checkout -- myfile.txt(将暂存区恢复到工作区) 暂存区有第一次的修改需要commit
- 修改后 add了(未commit),需要撤销修改时:git reset HEAD myfile.txt(将暂存区修改删除) 此时工作区的修改还未撤销git checkout -- myfile.txt(撤销工作区修改)
- 修改后 add并commit了,需要撤销修改时:git reset --hard HEAD^(版本回退)**
十. 删除文件
git rm fileName.extension
然后 git commit fileName.extension,就可以把暂存库上内容删除
参考资料:
https://zh.wikipedia.org/zh-cn/Git
http://rogerdudler.github.io/git-guide/index.zh.html http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374027586935cf69c53637d8458c9aec27dd546a6cd6000
2 0
- Git 入门 ---- Git 常用命令
- 【git入门】git常用命令
- git快捷入门 常用命令
- git入门-常用命令
- git入门及常用命令
- Git 入门常用命令
- git入门常用命令
- git使用入门-常用命令
- git的常用命令--入门
- Git小白入门常用命令
- Git快速入门和常用命令
- 【Git】Git常用命令总结
- Git:Git常用命令总结
- 【git】git常用命令
- 【Git】Git常用命令总结
- 【Git】Git基本常用命令
- Git基础---Git常用命令
- Git:git常用命令
- HDU 5721Palace
- UVA 10943 HOW do you add?
- 【杭电oj】1013 - Digital Roots(数论 - 九余定理,好题)
- 属性动画步骤总结——包含xml实现与java代码实现
- CDN
- Git 入门 ---- Git 常用命令
- java-----hashCode和equals的区别
- 代码:一种类似outlook资源树的CSS样式
- 死锁浅析
- 《UNIX环境高级编程》--6系统数据文件和信息
- 算是研究生一年级的感慨吧,以后留着自己看
- Hopcroft-karp 算法
- 数据结构学习笔记(五)二叉树及其C++实现
- 通知和代理