Git基本用法

一、创建版本库

什么叫版本库?又名仓库,英文名 repository。可以简单理解成一个目录,这个目录内所有内容都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪历史,或者在将来的某个时刻还原。

创建版本库
创建一个空文件夹

$ mkdir learngit
$ cd learngit
通过git init变成可管理的仓库
git init
Initialized empty Git repository in /Users/michael/learngit/.git/

把文件添加到版本库
所有的版本控制系统,只能追踪文件的改动,可以告诉你文件每次的改动,但是没法追踪文件的变化。

在文件夹下新建一个readme文件
第一步用git add命令,把文件添加进仓库

git add . 提交所有文件
git add readme

第二步,用git commit告诉命令,把文件提交到仓库

$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
git commit -m ""

后面记录的是本次提交的说明,可以输入任意内容

git log查看提交记录

回退版本 git reset
HEAD表示当前版本
HEAD^上一个 HEAD^^上两个
HEAD~100上一百个

git reset –hard HEAD^

git reflog记录每一次的命令
git reset –hard commit_id(变成这个版本)

工作区和暂存区

工作区(Working Directory)
版本库( Repository)
工作区里面有一个.git隐藏目录,是git的版本库
版本库里有很多东西,其中最重要的称为stage(或者叫idnex)的暂存区。还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

git add是把文件添加到暂存区
git commit提交更改,实际上是把暂存区的所有内容提交到当前分支。

git status查看状态。

管理修改
Git跟踪并管理的是修改,而非文件。

撤销修改
git checkout – filename

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区。
然后使用上述撤销修改就可以做到恢复原有状态了

删除文件
git rm file
然后commit

如果误删文件
git checkout – file

创建分支并切换
git checkout -b dev

git branch dev 创建分支
git checkout dev切换分支
git branch 查看当前分支
git merge dev把dev分支合并到当前分支
git branch -d dev 删除dev分支

解决冲突
git merge 分支
会把冲突体现在本地上,修改。
然后提交即可。
git log –graph 显示分支合并图

分支管理策略
通常合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
git merge –no-ff表示禁用Fast forward,会提交一个新的commit
所以格式为
git merge –no-ff -m “message”dev

bug分支
软件开发中,有bug需要修复,Git通过一个新的临时分支来修复,修复后合并分支,然后将临时分支删除。

当你接到一个修复一个代号101的bug的任务,创建一个分支issue-101来修复。但是当前dev进行的工作还没提交,工作只进行到一半,没法提交,但是必须在限定时间内修复bug
Git提供了stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。
使用git stash后,工作区就是干净得了,可以安心地创建分支来修改bug

在需要修改bug的分支上建立临时分支,进行修改。然后merge。
这时候切换回dev分支,分支的工作区是干净的,需要用

git stash list查看刚才的工作现场。
工作现场还在 git把stash内容存在了某个地方,需要恢复一下,有两个办法。
1、git stash apply恢复,但是恢复后,stash内容并不删除,需要使用git stash drop删除。
2、git stash pop回复的同时删除stash内容。

Feature分支
软件开发中,需要不断添加新的功能。添加一个新功能时,不希望因为一些实验性质的代码,把分支搞乱,所以,每天添加一个新功能最好新建一个feature分支,在上面开发,完成后合并并删除。

新建分支
add and commit
checkout dev
合并并删除

但是当新功能需要取消时,必须销毁该分支。
git branch -d 分支
销毁失败,因为分支没有被合并
需要大写参数-D

多人协作
当你从远程仓库克隆时,实际上Git自动把本地的master和远程的master分支对应起来了,并且远程仓库默认名称是origin
git remote查看远程库
git remote -v显示详细信息。

显示了可以抓取和推送origin的地址,如果没有推送权限,看不到push地址。

推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库,推送时要指定本地分支。这样GIt就会把该分支推送到远程库对应的远程分支上。

git branch -a可以查看本地分支和远程分支

抓取分支
从远程仓库clone时,默认只能看到本地的master分支。
如果想要在分支上开发,必须创建远程origin和dev分支到本地
git checkout -b dev origin/dev
这样就可以在dev上继续修改,然后是不是的把dev分支push到远程。
如果远程分支被修改,pull会产生失败,此时先用pull把最新的提交从origin/dev住下来,然后在本地合并,解决冲突,再推送。
git branch –set-upstream-to=origin/dev dev
建立dev与origin/dev分支的链接。

多人协作的工作模式
1、用git push origin推送自己的修改
2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull视图合并
3、如果合并用冲突,则解决冲突,并在本地提交
4、没有冲突或者解决冲突之后再用git push origin 推送
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch —-set-upstream-to origin/

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的
  • 从本地推送分支,如果失败,需要先pull
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
  • 建立本地分支与远程分支的关联,git branch –set-upstrean branch-name origin/branch-name;
  • 从远程抓取分支,使用git pull,如果有冲突,先处理冲突。

git log –graph –pretty=oneline –abbrev-commit
查看git日志。

创建标签
在git中打标签非常简单,首先切换到需要打标签的分支
git tag 可以打一个新的标签
git tag v1.0
默认标签是打在最新提交的commit上的,如果忘记打标签,可以找到历史提交的commit id,然后打上就可以了
git tag v0.8 f52c633
再用git tag查看标签
也可以用git show 查看标签详细信息
还可以创建带说明的标签
git tag -a v1.0 -m “” commit_id
-a指定标签名
-m指定说明文字

注意:标签总是和某个commit挂钩的,如果这个commit既出现在master分支,又出现在dev分支,那么这两个分支都可以看到这个标签。

git tag -d 删除标签
tag都是只存储在本地,不会自动推送到远程。如果需要推送到远程,使用命令
git push origin
或者一次推送全部尚未推送到远程的本地标签
git push origin –tags
如果标签已经推送到远程,要删除远程标签要先从本地删除。
然后从远程删除。
git push origin :/refs/tags/tagname

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值