Git操作指令二

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能够查看所有的工作现场
    1. 使用git stash apply atash@{xxx}可以恢复到指定的工作现场,但是不会删除stash的内容, 再使用git stash drop删除stash的内容
    2. 使用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;
  • 删除远程标签:
    1. 先从本地删除:git tag -d <tag-name>,
    2. 把删除的信息推送到远程:git push origin :refs/tags/<tag-name>.
使用GitHub
  • 在GitHub上,可以任意Fork开源库,Fork后自己的账号下就拥有了一个同样的开源库;
  • 自己拥有Fork后的仓库的读写权限,clone自己账号下的仓库的地址,创建到本地;
  • 可以推送pull request给官方仓库来贡献代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值