Git
2016-04-28 09:12
316 查看
Git
从一个小白的实际需求出发;建议读过文尾Git资料后,再来看;
Git只在本机玩儿有什么意思,不应该和Github结合么…
稍微理解一下工作区、版本库、暂存区
关系
工作区(Working Directory)
电脑里能看到的那个git init目录
版本库(repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
暂存区(stage)
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
git add把文件添加进去,实际上就是把文件修改添加到暂存区;
git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
master and original/master
Note
Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。
master就是local branch;
origin/master是remote branch(master is a branch in the local repository. remotes/origin/master is a branch named master on the remote named origin)
以上就先粗暴理解这些就行
远程版本库(repository)
2.1. 自己创建版本库并将你的仓库连接到github
选择一个合适的地方,创建一个空目录
mkdir
通过git init命令把这个目录变成Git可以管理的仓库
git init
Git 会建立一个属于你自己的本地master 分支
在当前目录下多了一个.git的隐藏目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
用
ls -ah命令就可以看见
把文件添加到本机工作区
用命令git add告诉Git,把文件添加到仓库:
git add readme.md
用命令git commit告诉Git,把文件提交到仓库:
git commit -m "wrote a readme file"
关联Github远程仓库
git remote add origin git@github.com:your_github_name/test.git
上传github
git push origin master
运行git status命令看看结果:
git status
看看具体修改了什么内容:
git diff readme.txt
查看历史记录:
git log
git log --pretty=oneline– 简版
2.2. 直接将已有远程仓库克隆下
克隆远程仓库
git clone username@host:/path/to/repository
其它操作同2.1相同
创建远程分支+ 删除远程分支
创建分支(当然刚开始在本地创建啊)
git checkout -b <branch name>
加一些诸如README.md什么的
git add file_name
git commit -m 'add read_me'
其实,最爽的是,你可以将本地文件放到这个文件夹里,然后一键送到github上
有一点需要注意,在本地用命令checkout创建分支后,虽然还是在最开始建立的这个文件夹里,但是,但是,这时候在Git里已经master主分支切换的新的分支上来,所有,当把需要上传的文件放到这个文件夹下时,就是放到了与master主分支不同的新分支里面,当然你也可以删除文件,注意:
先
rm file
后
git rm file
另外一种情况是,把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪:
git rm --cached file
上传github,创建远程分支,branch name –> test
git push origin test:test
如果想删除远程分支
git push origin :test
分支切换
git checkout master
远程分支拉取,pull和push区别
git fetch <branch>
git merge
git pull
pull –> fetch from and merge with another repository or a local branch
撤销操作
撤销前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重新返回,用git reflog查看命令历史,以便确定要回到未来的哪个版本
git reset --hard HEAD^
HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset --hard commit_id
查看工作区和版本库里面最新版本的区别:
git diff HEAD -- readme.txt
丢弃工作区的修改 – 在工作区的修改全部撤销:
git checkout -- readme.txt
git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区:
git reset HEAD readme.txt
小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,可以进行版本回退,当然前提是没有推送到远程库。具体步骤如下:
看一下历史commit_id
git logor
git log --pretty=oneline(简洁版)
然后选择回退历史进行回退
git reset --hard commit_id
资料
Github入门找男神Voskygit-scm
廖雪峰
简明Git教程
相关文章推荐
- swust OJ 1319: Robot in Maze
- 项目26-人数不定的工资类
- XML 入门学习笔记(一)
- 第10、11周项目— 点-圆-圆柱类族的设计(1)
- SpringMvc_@RequestMapping设置Router Url大小写不敏感
- Angularjs基础(十)
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
- 如何查看Linux操作系统版本
- hdu1166 敌兵布阵(树状数组 && 线段树单点更新)
- struts2与hibernate的优缺点
- 第九周-深复制体验
- <html>a
- Web测试要点(功能、性能、可用性、兼容、安全)
- 第九周项目3——人数不定的工资类
- 如何通过aix通过端口号查到进程号
- Linux中的命令 make -f 是什么意思
- UML类图与类的关系详解
- 第九周阅读项目-(2)
- 链串的基本操作
- 110.Balanced Binary Tree从8ms到2ms到1ms