总结自这里写链接内容
- git的创建
1创建空目录
$ mkdir learngit
$ cd learngit
$ pwd
/Users/xufanjie/learngit
2将目录变为git管理的仓库
$ git init
Initialized empty Git repository in /Users/xufanjie/learngit/.git/
- git的管理
将文件添加到仓库
$ git add readme.txt
提交文件
$ git commit -m "wrote a readme file"
-m后写的是对于本次提交的解释
查看仓库当前的状态
$ git status readme.txt
查看工作区与暂存区的区别
$ git diff readme.txt
查看工作区和版本库最新版本的区别
$ git diff HEAD --文件名
版本回退
·回退到上N个版本(有几个’^’就是回退几个版本)
$ git reset --hard HEAD^
·查看历史记录
$ git log
·通过历史记录中的版本号回退到指定的版本
$ git reset --hard 版本号
由于git中版本的回退只是改变了指针的指向 所以版本回退的速度特别快
撤销修改
·撤销对于工作区的修改
$ git checkout -- 文件名
· 把暂存区的修改回退到工作区
$ git reset HEAD 文件名
此时再进行一次
$ git checkout -- 文件名
就可以完成撤销修改
删除文件
·在文件管理器中将文件删除
$ rm 文件名
·从版本库删除
$ git rm 文件名
此后还需要一次commit操作
·如果是误删 执行
$ git checkout -- 文件名
操作就可以恢复文件
git checkout其实是用版本库里的版本替换工作区的版本
- 工作区和暂存区
工作区:电脑中能看到的目录
版本库:文件夹中的.git文件夹
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
git add 实际上就是将文件添加到暂存区(stage)
git commit 实际上就是把暂存区的所有内容提交到当前分支
远程仓库
1 关联github远程库$ git remote add origin git@github.com:xufanjie123/learngit.git
2将本地内容推送到远程库
$ git push -u origin master
这句代码的功能就是将master分支推送到远程库
3 从远程库克隆$ git clone git@github.com:xufanjie123/gitskills.git
分支管理
1 HEAD指针指向的是当前分支
master分支在git创建时就存在
每次提交,分支都会向前移动一步,这样,随着不断提交,分支的线也越来越长:
2 分支创建$ git checkout -b 分支名
此命令代表创建一个分支并切换到此分支
3分支查看$ git branch
前面有*的为当前分支
4 分支切换$ git checkout master
5分支合并
$ git merge 分支名
将名字为分支名的分支合并到当前分支上
6分支删除$ git branch -d 分支名
7 分支推送
$ git push origin 分支名
标签管理
1标签创建$ git tag 标签名
创建最新commit的标签
$ git tag 标签号 版本号
为指定版本打标签
$ git tag -a 标签号 -m "version 0.1 released" 版本号
创建带有说明的标签
2 查看标签$ git tag
3 标签删除
$ git tag -d 标签名
4 标签推送到远程库
$ git push origin 标签名
推送指定标签名
$ git push origin --tags
在远程库中删除标签
$ git push origin :refs/tags/标签名