首页 > 代码库 > 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学习(二)