您的位置:首页 > 其它

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 log
or
git log --pretty=oneline
(简洁版)

然后选择回退历史进行回退

git reset --hard commit_id


资料

Github入门找男神Vosky

git-scm

廖雪峰

简明Git教程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: