Git学习

一、 安装

brew install git or brew upgrade git

安全完成后,需要进行一个用户信息设置:

git config –global user.name "Your name"
git config –global user.name "email@exapmpe.com"

二、Git操作

git add filename 添加某个文件的版本控制

git add . 添加当前所有文件的版本控制

git diff 或者 git diff readme.txt 用来查看修改了某个文件的哪些地方。

git log 查看最近到最远的提交日志。也可以使用 git log –pretty=oneline 简化显示信息

git 使用HEAD表示当前版本, 上一个版本就是HEAD^,上上一个版本就是HEAD^^,再往上100个版本就是HEAD~100,如果我们要把当前版本回退到上一个版本,就可以使用git reset命令:git reset命令在切换版本的同时,会把暂存区和工作区的内容全部清空

git reset –hard HEAD~1

git reflog用来记录你的每一次命令

然后查看之前的版本 id,然后回退到那个版本

git reset –hard a422082

把一个文件变为未修改的样子 git checkout – hello.rb

git commit只负责把暂存区的修改提交到版本库

git diff HEAD – readme.txt 命令可以查看工作区和版本库里面最新版本的区别:或者是暂存区和版本库里最新版本的区别,如果暂存区和当前工作区都做了修改,那么会把所有的diff都显示出来

git diff HEAD faa7d5ebc5ff1fd7fb919376ad9e0ce70983df9e 版本库里的最新版本和指定版本的比较

撤销修改

撤销工作区的修改

git checkout – file 把工作区的修改过的文件回退到最近一次add的状态,就是把当前修改全部撤销回未修改状态。如果已经 add 了,则无效

撤销暂存区的修改

git reset HEAD readme.txt 把暂存区的内容撤销退回工作区,如果文件在 add 到暂存区后,又进行了修改,那么撤回的时候以工作区的数据为准,git reset HEAD readme.txt做的事情就是:相当于没有add过。

git reset HEAD 撤销当前所有暂存区的文件,撤回工作区

删除文件

git rm filename 把文件从版本库中删除

rm 不小心删除了文件, 可以用git checkout – filename来恢复该文件(从最新版本库中回复该文件出来)

远程仓库

git remote add origin git@bitbucket.org:xiaomizha/learngit.git 如果配置了多个public key,需要改一下这个地址

git push -u origin master 这个命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

git push origin dev 推送 dev 分支到远程库

git checkout -b dev origin/dev 创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支:

git remote -v 查看远程库信息

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name;

分支管理

可以使用分支完成某个任务,完成后在这个任务后,在合并到开发分支,然后删除掉这个分支。 分支切换的时候,工作区和暂存区的内容是不会改变的,会一直保留着,所以要注意

创建分支

git branch dev

切换分支

git checkout dev

创建并切换分支

git checkout -b dev

要从哪个分支拷贝一份代码,就去哪一个分支里面创建分支

查看当前分支

git branch

删除分支

git branch -d dev 删除分支dev

git branch -D dev 强制删除分支dev

合并分支

git merge dev 切换到master分支,然后 执行 git merge dev 就会把dev 版本合并到master分支上

Fast-forward合并,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

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

合并冲突

git merge feature1 合并如果冲突,会把冲突部分都列出来,====上面的是当前的,====下面的是 merge from的版本。解决掉后,提交就可以了。

git log –graph –pretty=oneline –abbrev-commit 显示分支合并情况,也可以简写为 git log –graph,不过这样显示的信息比较多一些。

git merge dev –no-ff -m "merge from dev" 从 merge 分支合并过来,并且经用Fast forward模式

bug 分支, 存储暂存区

git stash 把当前暂存区中的内容储藏起来,然后可以干其它工作,进行其他的提交

git stash list 查看当前存储区的列表

git stash apply 回复最新一个存储区到暂存区,(不会删除)

git stash apply stash@{0} 指定恢复第几个存储区

git stash drop 删除最新一个存储区

git stash pop 弹出最新一个存储区(直接删除了最新一个存储区)

2018-04-15 04:56

留言