您的位置:首页 > 其它

Git操作指令二

2017-03-10 15:19 399 查看
Git基本

冲突解决

分支合并策略

分支策略原则

bug分支

恢复工作现场有两种模式

删除未合并的分支

多人协作

推送分支

抓取分支

删除远程仓库分支

标签管理

创建标签

操作标签

使用GitHub

Git基本

Git鼓励大量使用分支:

查看分支:
git branch


创建分支:
git branch <name>


切换分支:
git checkout <name>


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


合并分支到当前分支:
git merge <name>
name
:分支名, 合并到那个分支需要先切换到那个分支。

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


冲突解决:

当git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

git log --graph
命令可以看到分支合并图。

分支合并策略:

git默认模式为
Fast forward
,这种模式下删除分支会丢失分支的信息。我们可以强制禁用这种模式,Git就会在
merge
时生成一个新的commit信息,这样从分支历史上就可以看出分支信息.

使用
--no-ff
的方式
merge


语句如下:
git merge --no-ff -m "添加信息" <name>


分支策略原则:

master
分支应该是稳定的,不能在上面干活,仅用来发布新版本。

需要给
master
创建一个对应的分支,如
dev
,用来作为中介

工作的时候,各自先创建
dev
的分支,阶段性的合并都在
dev
上,最后需要发布的时候合并到
master
上。

这样就能保证
master
分支的稳定性

bug分支

因当前工作未完成无法提交,但bug又很紧急时,如何建立bug分支。

git提供了一个隐藏的功能,能够隐藏当前的工作现场,等现场恢复后仍可以继续工作。

* 隐藏当前工作现场
git stash
,使用
git status
查看工作区是干净的。

* 确定在哪个分支上修复bug,假定在
master
分支上修复,就从
master
创建临时分支。

* 切换到
master
分支:
git checkout master
, 创建分支:
git checkout -b issue-001


* 修复完成后,再切换到
master
分支,并完成合并,最后删除
issue-001
分支

* 返回原工作现场:切换到工作现场的分支
gitcheckout <name>
, 查看工作现场
git stash list
。使用
git stash pop
就能直接恢复工作刚才的工作现场。

恢复工作现场有两种模式:

使用
git stash list
能够查看所有的工作现场

使用
git stash apply atash@{xxx}
可以恢复到指定的工作现场,但是不会删除
stash
的内容, 再使用
git stash drop
删除
stash
的内容

使用
git stash pop
会恢复到工作现场并删除
stash
的内容

删除未合并的分支

使用
git branch -D <name>
name:分支名,强行删除

多人协作:

当你从远程仓库克隆时,实际上Git自动把本地的
master
分支和远程的
master
分支对应起来,并且远程仓库的默认名称为
origin
.

查看远程库的信息:
git remote


git remote -v
显示更详细的信息。

推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,git就会把该分支推送到远程库对应的远程分支上:
git push origin master
推送主分支.

如果要推送其他分支,就改成
git push origin <name>
.

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送呢?

*
master
分支为主分支,因此要时刻与远程同步;

* 创建
master
对应的开发分支如
dev
,团队所有成员都需要在这上面工作,所以也需要与远程同步;

* bug分支只用于在本地修复bug,就没有必要推送到远程了;

* 总之,分支是否推送到远程,关键看这个分支是否需要多人协同操作,是否别人会需要这个分支上的内容。

抓取分支

克隆远程库
git clone <address>
,默认只能看到本地的
master


创建远程库
origin
的分支
dev
到本地:
git checkout -b dev origin/dev
.现在就可以在
dev
上进行修改,并能
push
到远程库.

如果别人在你之前先
push
修改的
origin/dev
分支内容,这时候你
push
时会提示推送失败,因为这个文件有冲突。

解决的办法是:先用
git pull
把最新的提交从
origin/dev
抓下来,然后,在本地合并,解决冲突后,再推送。

如果git提示有”no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令
git branch --set-upstream <btanch-name> origin/<btanch-name>
创建链接;

链接创建成功后,在
git pull
,根据
git
的提示,如果有冲突就解决冲突,解决后或没有冲突,在
git push origin <branch-name>
推送到远程库。

删除远程仓库分支

查看远程分支
git branch -r
;

删除远程分支
git branch -r -d origin/<branch-name>
; 这个只是删除远程分支在本地的索引。

真正的删除远程分支
git push origin :<branch-name>


标签管理

发布版本的时,通常需要在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来任何时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

Git的标签实际就是指向某个commit的指针,但是标签不能移动。创建和删除标签都是瞬间完成的。

创建标签

切换到需要打标签的分支,
git branch
查看全部分支,
git checkout <btanch-name>
切换分支;

打标签
git tag <tag-name>
,设置标签名称,默认为
HEAD
,也可以指定commit id,
git tag <tag-name> <commint-id>
;

还可以创建有说明的标签,用
-a
指定标签名,
-m
指定说明文字:
git tag -a <tag-name> -m "说明文字" <commit-id>


查看标签:
git tag
;

查看标签的详细信息:
git show <tag-name>


操作标签

如果标签打错了,也可以删除。
git tag -d <tag-name>
,创建的标签都存储在本地,不会自动推送到远程,所以,打错的标签可以安全的在本地删除;

如果要推送某个标签到远程,
git push origin <tag-name>
,或者一次性推送全部尚未推送到远程的本地标签:
git push origin --tags
;

删除远程标签:

先从本地删除:
git tag -d <tag-name>
,

把删除的信息推送到远程:
git push origin :refs/tags/<tag-name>
.

使用GitHub

在GitHub上,可以任意Fork开源库,Fork后自己的账号下就拥有了一个同样的开源库;

自己拥有Fork后的仓库的读写权限,clone自己账号下的仓库的地址,创建到本地;

可以推送pull request给官方仓库来贡献代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git