Git快速教程
首先,安装一个GIT:
$ sudo apt-get install git
git version 查看是否安装成功
然后开始操作!!!:
一、本地仓库管理
$ mkdir git_test # 新建一个目录
$ cd git_test # 进去
目前git_test是一个很普通的文件夹,我们要对它进行装饰:
$ git init
(顿时金碧辉煌)它从一个普通的目录就变成了Git可以管理的仓库。
此时,好奇宝宝肯定想知道到底哪里变化了;
使用 $ ls
# 没变化,别急试试 $ls -a
(显示隐藏文件)
会看到3个东西 :1、.
2、..
3、.git
我们给这个git_test的目录一个新的名字:工作区(workspace)
下面我们要让这个仓库上刻上自己的标记:
git config --global user.name "xxx"
#配置名字
git config --global user.email "xxx@xxx"
#配置邮箱(随意点)
下面介绍几个查询信息的操作:
git status # 查看仓库状态
git log # 查看版本历史
下面我们来说说你没有看到的世界:
(之后的操作每一步你都可以使用上面两个查询操作查看变化)
目录git_test 是一个 工作区,对你可见,你可以进行一系列一般目录的操作,如:
$ touch helloGit.c
创建一个文件;然后使用git操作:
$ git add helloGit.c
将这个文件提交到暂存区(index)
(暂存区对你不可见的),
然后使用操作
$ git commit -m "XXX" # XXX为你对本次提交的描述说明
此时helloGit.c文件就从暂存区转移到了本地仓库区,这个对你也是不可见的,此时暂存区就空了$ git status
一下,发现,就会看到本地仓库的信息了。
总结一下
将工作区(目录)中的目标文件上传到Git本地仓库的步骤:
$ git init # 初始化
$ touch file.c #创建目标文件
$ git add file.c #目标文件传到暂存区
$ git commit -m "C文件提交" # 暂存区文件转移到Git本地仓库
之后,或许你还想再创建个Helloworld.c
,那么再经过git add Helloworld.c 到暂存区,再经过git commit -m "你好世界文件提交"
到你的本地仓库,再次git log
查看本地仓库:
到此为止,你就有两个版本的项目了。
版本1:有一个helloGit.c ,
版本2:添加了Helloworld.c。
其实到此,git 的真正作用还没有体现出来。
下面是体现git作用的时候了:
当你需要回退到之前的版本的时候,即当你在当前版本犯下了不可弥补的操作错误时,
你可以回退到之前的版本,使用
git reset --hard 版本号
如何查看版本号:
git reflog
例如:
第一次提交(initial)后版本号为 :72b7d3b,第二次提交的版本号为:10b6c82。(这里记录了你每一次进行操作的记录)
你可以使用 git reset --hard 72b7d3b
返回到第一次提交的版本。之后你再查看你的工作区,就只剩下一个HelloGit.c 的文件了。
还有一些关于reset的操作:
HEAD
表示当前最新版本HEAD^
表示当前最新版本的前一个版本HEAD^^
表示当前最新版本的前两个版本,以此类推…HEAD~1
表示当前最新版本的前一个版本HEAD~10
表示当前最新版本的前10个版本,以此类推…
你可以使用 git reset --hard HEAD^ 来退回到上一个版本,此时工作区里面的文件也会同步到上一个版本。
如果你回退到了旧版本,又像重新回退到新的版本,只需要:
git reset --hard 最新版本的版本号即可。
下面介绍一些辅助操作:
删除文件
$ git rm file(已经add/commit,在目录中删除)
$ git checkout -- file 删错了回退
添加文件
$ git add . (添加所有新增文件到暂存区)
撤销修改
- 只能撤销工作区、暂存区的代码,不能撤销仓库区的代码
- 撤销仓库区的代码就相当于回退版本操作
# 将暂存区代码撤销到工作区
$ git reset HEAD 文件名
# 撤销工作区代码
$ git checkout 文件名
误删处理,撤销修改
$ touch test.py # 创建文件
$ git add test.py # 暂存区
$ git commit -m '删除描述' # 提交到仓库
$ rm test11.py # 删除文件
$ git checkout -- 文件名 # git撤销修改
本地代码管理:
工作区(Workspace):添加、
修改、
删除`文件
暂存区(Index):将工作区中的操作完成小阶段的存储,是版本库的一部分
本地仓库区(Respository): 对个人开发的一个小阶段代码存储
- 记录的各版本可以查看或者回退
- 但是在暂存区的版本一旦提交就再也没有了(保存到仓库区中)
二、远程仓库管理
开始之前,去github网站建立一个远程仓库,
# 关联远程仓库
git remote add origin git@https://github.com/用户名/demo.git
@后面为你创建的远程仓库的url
# 提交到仓库 输入登录账户密码
git push -u origin master # 第一次的push
# 分支操作
$ git branch -a 查看所有分支
$ git branch -vv 查看分支关联
$ git branch demo 创建分支
$ git checkout demo 切换分支
$ git merge dev 合并某分支到当前分支
$ git branch -d dev 删除分支
$ git checkout -b dev 创建并切换分支
$ git push origin [name] 创建远程分支(本地分支push到远程):
$ git push origin :heads/[name] 删除远程分支
此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。
当你执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支。
如果我们要手动创建一个分支。执行 git branch (branchname) 即可。
$ git branch dev
$ git branch
* master
dev
$ ls
README
$ echo 'htllo world' > test.txt
$ git add .
$ git commit -m 'test.txt'
$ ls
README test.txt
$ git checkout dev # 切换分支就没了
$ ls
README
$ git checkout master # 切换到主分支又有了
# 创建分支立马切换 主分支内容还在分支里面 删除之前的内容对主分支不影响
git checkout -b dev
touch demo.txt
git add .
git commit -am '测试'
# 分支合并
git merge dev
ls # 查看
git branch -d dev # 删除分支
git branch # 查看分支
ls # 查看文件分支的文件被合并了
版本管理操作
$ git tag # 查看版本
$ git tag [name] # 创建版本
$ git tag -d [name] # 删除版本
$ git tag -r # 查看远程版本
$ git push origin [name] # 创建远程版本(本地版本push到远程)
$ git push origin :refs/tags/[name] # 删除远程版本