Git操作指令二
2017-03-10 15:19
399 查看
Git基本
冲突解决
分支合并策略
分支策略原则
bug分支
恢复工作现场有两种模式
删除未合并的分支
多人协作
推送分支
抓取分支
删除远程仓库分支
标签管理
创建标签
操作标签
使用GitHub
查看分支:
创建分支:
切换分支:
创建+切换分支:
合并分支到当前分支:
删除分支:
用
使用
语句如下:
需要给
工作的时候,各自先创建
这样就能保证
git提供了一个隐藏的功能,能够隐藏当前的工作现场,等现场恢复后仍可以继续工作。
* 隐藏当前工作现场
* 确定在哪个分支上修复bug,假定在
* 切换到
* 修复完成后,再切换到
* 返回原工作现场:切换到工作现场的分支
使用
使用
查看远程库的信息:
或
如果要推送其他分支,就改成
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送呢?
*
* 创建
* bug分支只用于在本地修复bug,就没有必要推送到远程了;
* 总之,分支是否推送到远程,关键看这个分支是否需要多人协同操作,是否别人会需要这个分支上的内容。
创建远程库
如果别人在你之前先
解决的办法是:先用
如果git提示有”no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令
链接创建成功后,在
删除远程分支
真正的删除远程分支
Git的标签实际就是指向某个commit的指针,但是标签不能移动。创建和删除标签都是瞬间完成的。
打标签
还可以创建有说明的标签,用
查看标签:
查看标签的详细信息:
如果要推送某个标签到远程,
删除远程标签:
先从本地删除:
把删除的信息推送到远程:
自己拥有Fork后的仓库的读写权限,clone自己账号下的仓库的地址,创建到本地;
可以推送pull request给官方仓库来贡献代码。
冲突解决
分支合并策略
分支策略原则
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给官方仓库来贡献代码。