git版本管理工具学习(二)

连接远程仓库

  1. 注册github

  2. 创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"   -》生成.ssh目录,里面有id_rsa(私钥)id_rsa.pub(公钥)

  3. 将公钥添入 Github SSH Key (SSH Key可以有多个,方便多台电脑使用一个账户管理一个仓库)

  4. 在Github中创建Repository,最好与本地同名

  5. 把一个已有的本地仓库与之关联 : git remote add origin git@github.com:UserName/RepositoryName.git

  6. 把本地库的所有内容推送到远程库:git push -u origin master (由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。)

从远程仓库克隆
  • git clone git@github.com:michaelliao/gitskills.git
  • GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令

分支管理

  •  基本操作(HEAD指向当前分支,master主分支)
    • 创建新的分支并切换:git checkout -b dev
    • 查看分支:git branch
    • 切换分支:git checkout master
    • 合并指定分支到当前分支:git merge dev (当没有冲突时默认使用FastForword模式,即删除分支后会丢掉分支信息,使用--no-ff禁用FF模式)
    • 删除分支:git branch -d dev
  • 解决分支合并冲突
    • 手动解决,自动合并失败后,Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,通过手动解决后,再add+commit实现合并
    • 查看图结构:git log --graph --pretty=oneline --abbrev-commit
  • 分支使用策略
    • master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面工作
    • dev分支用于开发,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本
    • 开发者每个人在dev上有自己的分支
  • Bug分支(在开发过程中,你需要暂停当前分支的工作,而建立新的分支处理bug等问题)
    • 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash
    • 查看工作现场列表:git stash list
    • 恢复现场:git stash apply stash@{0}(不在list中删除),git stash pop(自动删除list中记录)
  • Feature分支:新功能最好在新的分支中开始
    • 丢弃没有合并的分支(强制删除):git branch -D feature
  • 多人协作
    • 查看远程仓库信息:git remote -v
    • 推送本地分支到远程:git push origin master (主分支,开发分支需要同步到远程,其他视具体情况而定)
    • 从远程仓库clone,默认情况下,只能看到本地的master分支,创建远程origindev分支到本地:git checkout -b dev origin/dev,建立连接:git branch --set-upstream dev origin/dev
    • 解决推送失败问题:当多人修改了远程仓库的内容时推送会产生冲突
      • 先用git pull把最新的提交从origin/dev抓下来
      • 手动解决本地合并冲突
      • git push origin dev

 标签管理

  1. 切换到要打标签的分支
  2. 打标签:git tag <tag_name> [commitId] -m "comment"
  3. 查看标签:git show <tag_name>
  4. 删除标签:git tag -d <tag_name>
  5. 推送标签到远程:git push origin <tag_name>/--tags
  6. 删除远程标签:git tag -d <tag_name>   git push origin :refs/tags/<tag_name>

自定义Git

  • 忽略某些文件时,需要编写.gitignore

 

posted @ 2016-10-18 16:00  HectorHou  阅读(178)  评论(0编辑  收藏  举报