git使用

创建版本库

在本地创建版本库
切换到版本库文件夹下,使用如下命令

git init

从远程仓库拉取版本库

git clone git@github.com:michaelliao/gitskills.git

提交

修改文件后,用git add <filename>添加到暂存区
然后用git commit -m'xxxx'添加到版本库

比较

git status

可以查看当前分支的状态

git diff

比较工作区和暂存区的不同

git diff --cached

比较暂存区和版本库的区别

git diff --HEAD

比较工作区和版本库的区别

回退

git log

可以查看提交的日志
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

git reset --hard HEAD^

可以回退到上一个版本

  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版

撤销修改

工作区做了修改后 没有add到暂存区时 可以用

git checkout -- filename

撤销修改, – 很重要,不要忘

如果已经add了,那么可以用

git reset HEAD file

可以把暂存区的修改退回到工作区,就回到了add前的状态

删除文件

git rm fileNAME

然后再提交

创建远程库

先在github网站上新建一个库
然后在本地用

git remote add origin git@github.com:michaelliao/learngit.git

关联起来

然后就可以用

git branch --set-upstream-to origin/dev dev//远程没有dev时会有问题
git push -u origin master

把更改推送到远程版本库 -u 的意思是把 master分支与远程的 origin master 关联起来
,如果远程没有master分支,那么就会自动创建
管理也可以用

创建分支

git branch dev

切换分支

git checkout dev

跟前面的回退比较下,没有 –

这两条命令也可以简化为

git checkout -b dev

可以用如下命令从远程库clone分支到本地

git checkout -b dev origin/dev

切换到dev后 对文件进行修改,然后 add commit
再用checkout指令切回到master

这时候master下的文件回到了修改前的状态,因为之前的修改是在dev分之下进行的,master不会受影响

如果需要把dev的修改整合到master,可以使用

git merge dev

如果需要删除分支

git branch -d dev

要查看当前是哪个分支,使用

git branch

解决merge时的冲突

把冲突的文件改成正确的样子然后 add commit即可

git log --graph

可以查看分支的合并情况

merge 的时候会默认使用 Fast forward模式,会自动提交,但是这个模式是看不到分支的合并情况的,如果不想使用这个模式需要添加几个参数

$ git merge --no-ff -m "merge with no-ff" dev

–no-ff就是不使用这个模式,如果没有冲突就会自动提交,-m就是log信息

分支管理策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:
这里写图片描述

bug分支

处理bug建议用bug分支
比如我在dev分支上进行新功能的开发,这时候需要修复master的bug,那么先需要用

git stash

把当前的工作现场存储起来
然后切换到master分支,创建一个bug分支,修复好以后merge进去

然后再切换到dev分支,用

git stash list

就可以看到储存起来的stash

可以用git stash apply进行恢复,但是不会删除stash中的内容,需要git stash drop来手动删除
也可以用git stash pop可以恢复并且直接删除

有些人可能会有疑问,master上的bug被修复好了,但是dev的还没修复,那功能开发完以后把dev merge到master的时候不是会有冲突吗?

git关注的是修改

所以只要bug修改的代码和新功能的代码没有关系就不会有冲突
如果有冲突,那么修复即可

查看远程库的信息

git remote
git remote -v//可以看到你是否有推送权限

抓取分支

git pull

使用前提是要先把两个分支管理起来

git branch --set-upstream-to origin/dev dev

标签

标签就是版本库的快照

首先切换到你需要打标签的分支,然后用

git tag v1.0

就可以创建标签了,但是创建的是最近一次commit的标签

可以用

git tag

查看所有标签

要给之前的提交打标签,需要git log --pretty=oneline --abbrev-commit查看提交的id,然后git tag v2.0 commitId就ok了,commitId就是你想要打标签的那次提交的id

可以用git show tagName查看标签的详细信息

git tag -d v1.0//删除标签
git push origin :refs/tags/v0.9//删除远程库标签
git push origin v1.0//把标签推送到远程库
git push origin --tags

一些技巧

配置别名

git config --global alias.co checkout

这样 checktout 命令就可以简化为 git co
如果是简化多个单词的命令 则需要用引号包裹起来

$ git config --global alias.unstage 'reset HEAD'

查看最近指定数目的log

git log -10

下面这个丧心病狂的指令可以让你的log记录清晰无比

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值