Draymonder‘s Blog

随遇而安

Git学习

前言

听到大佬说我太菜了.没办法啊,确实蛮菜的,需要学习很多东西吧,就很难受。

正文

安装

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

--global是指这台机器上所有的Git仓库都会使用这个配置

创建版本库

mkdir建立一个空目录
然后,用git init初始化当前目录Git可以管理的仓库

文件

上传文件

用命令git add ***把文件添加到仓库
接着用git commit -m "***"把文件提交到仓库

文件改动

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式
git log命令显示从最近到最远的提交日志

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100

把当前版本回退到上一个版本,就可以使用git reset --hard HEAD^,经尝试,命令在Bash
下运行无错,在cmder下会有出现More的提示,只需要再写一下HEAD后面的^就可以了

如果真的返回上一个版本了,还想撤回本次操作,那么可以使用git reflog命令,来记录你的每一次命令。接着用git reset --hard commit_id命令回到操作前的状态

撤销修改

当发现文件改动后,准备提交前,发现文件有问题,可以用git checkout -- file可以丢弃工作区的修改
命令git checkout -- git学习 意思就是,把git学习文件在工作区的修改全部撤销,这里有两种情况:
一种是 git学习 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
一种是 git学习 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

总之,就是让这个文件回到最近一次git commit或git add时的状态。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

删除

当你在工作区删除文件后,你有两个选择
一是确实要从版本库中删除该文件,那就用命令git rm file删掉,并且git commit
另一种情况是删错了,git checkout -- file

仓库

分布式优点

可以利用ssh 添加多个Key,假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了

推送到远程库

关联远程库
git remote add origin https://github.com/Draymonders/git-learning.git
第一次推送master分支的所有内容
git push -u origin master
以后就可以用
git push origin master

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放
http端口的公司内部就无法使用ssh协议而只能用https

分支

创建分支

git checkout -b dev 表示创建并切换
相当于

git branch dev //创建dev分支
git checkout dev //使用dev分支

git branch 命令会列出所有分支,当前分支前面会标一个*号

然后修改文件 接着git add and git commit
接着回到master分支下 git checkout master
dev分支合并到master下,用git merge dev
合并完成就可以删除dev分支了,用git branch -d dev

分支语句汇总

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

分支合并图:git log --graph

分支管理策略

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git merge --no-ff -m "merge with no-ff" beta

master是稳定版本,最好不要轻易动
然后下面建立一个beta测试版本,用来汇总代码和测试
最后建立每个人的分支,汇总到beta分支下。

阅读更多
个人分类: Git
上一篇JavaSE的常用API
下一篇Eclipse 导入工程
想对作者说点什么? 我来说一句

Pro git(精通git英文版)

2018年04月25日 8.92MB 下载

Git学习教程

2017年11月11日 1.3MB 下载

git学习资料大全

2013年08月20日 9.18MB 下载

Git中文学习文档

2012年01月06日 1.78MB 下载

没有更多推荐了,返回首页

关闭
关闭