首页 > 代码库 > Git学习(二)
Git学习(二)
远程仓库
Git是分布式版本控制系统,同一个Git仓库可以分布到不同的机器上。
最早只有一台机器上有一个原始版本,此后,别的机器可以“克隆”这个原始版本库,而且每台机器病没有主次之分,其实一台机器只要不在同一个目录下,也是可以克隆多个版本库的,但没什么意义。
GitHub
充当服务器,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库,也从服务器仓库拉取别人的提交。
你的本地仓库Git和GitHub仓库之间的传输是通过SSH加密的
添加远程库
现在已经在本地创建了一个Git仓库,又想在GitHub上创建一个Git仓库,并且让这两个仓库进行远程同步。
1、登录GitHub,创建新的仓库“New repository”
2、在Repository name填入仓库名(假设为learngit),其他保持默认,就成功创建了一个新的Git仓库
3、现在可以把一个已有本地仓库与这个仓库关联,然后把本地仓库的内容推送到GitHub上
git remote add origin git@github.com:chehlling/learngit.git 其中chehlling为我的GitHub账户名
4、把本地库的所有内容推送到远程库上
git push -u origin master把当前分支master推送到远程加-u选项,是因为第一次推送master分支时远程库是空的,Git不但会把本地的master分支推送到远程的master分支,还会把本地的master分支和远程关联起来
从现在起,就可通过git push origin master把本地分支的最新修改推送至GitHub
从远程库克隆
git clone git@github.com:chehlling/chatd
要克隆一个仓库,必须知道仓库地址
当从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程仓库的默认名称是origin
git remote
git remote -v
分支管理
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout - name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
查看分支合并图:git log --graph
在每次提交一个版本后,master分支都会向前移动一部,Git都把这些版本串成一条时间线这条时间线就是一个分支。
当只有一条时间线时,这个分支叫主分支,即master分支。
HEAD指向master,master指向提交,所以HEAD指向的就是当前分支。
当创建一个新的分支时,Git新建了一个指针,指向和master相同的提交
分支冲突
可直接查看文件内容来查看冲突
可手动修改文件再提交
分支管理
通常合并分支时,如果可能,Git会用Fast forward模式,这种模式下,删除分支后,会丢掉分支信息,即合并后看不出来曾经做过合并。
加--no-ff参数可以即禁止使用Fast forward模式,合并后的历史有分支,能看出来曾经做过合并。
在实际开发中,master分支应该是非常稳定的,仅用来发布新版本,平时不在上面干活;
dev分支是不稳定的,到某个时候,再把dev分支合并到master上;
每个人在dev的分支上干活,时不时往dev分支上合并就可以了。
Bug分支
git stash 可以把当前工作现场“储存”起来,等以后恢复工作现场后继续工作;
执行完git stash后可用git status查看当前工作区应该是干净的
git stash list 查看保存起来的工作现场在哪里
恢复的办法有两种:一是,先执行git stash apply恢复,再执行git stash drop来删除stash内容;
二是,执行git stash pop,恢复的同事把stash内容也删了。
可以多次stash,恢复的时候,用git stash list查看,然后恢复制定的stash,执行命令git stash apply stash@{0}
Feature分支
添加新功能时
一、提交、合并、删除分支
二、提交、取消这个新功能git branch -D name强行删除
推送分支
git push origin master
git push origin dev
标签管理
tag
git tag <name>就可以打一个新标签,如git tag v1.0
用git tag命令查看所有标签
标签默认是打在最近一次的提交上,如果之前忘了打标签,可先用git log --pretty-oneline --abbrev-commit查看历史版本,找到对应的commit-id号,执行git tag 标签 commit-id号即可。
git show <tahname>可以查看对应标签的详细信息
git tag -a <tagname> -m "information..."可以指定标签信息
git tag -s <tagname> -m "information..."可以用PGP签名标签
推送标签:git push origin <tagname>
推送全部未推送过的标签:git push origin --tags
删除本地标签:git tag -d <tagname>
删除远程标签:git push origin :refs/tags/<tagname>
《完》
本文出自 “零蛋蛋” 博客,谢绝转载!
Git学习(二)