zoukankan      html  css  js  c++  java
  • git

    1.安装git:
      sudo apt-get install git-core git-gui git-doc
    2.申请GitHub帐户
    3.建立本地仓库:
      #设置名字便于提交标注
        git config --global user.name "用户名或者用户ID"
      #接收工程变动通知
        git config --global user.email "邮箱"
      #内存中保存账号信息-默认只有15分钟(git config --global credential.helper cache)
        git config --global credential.helper 'cache --timeout=3600'
      #SSH-密钥认证:
       检查已有公钥cd ~/.ssh,若已存在公钥则进行备份mkdir key_backup-->cp id_rsa* key_backup-->rm -rf id_rsa*
       生成密钥:ssh-keygen -t rsa -C "邮箱" #为了方便设生成时不输入口令
       将SSH密钥添加到GitHub公钥管理中:
         sudo apt-get install xclip --> xclip -sel clip < ~/.ssh/id_rsa.pub #复制id_rsa.pub内容-不能有空格或换行
         点击"SSH Keys" --> "Add SSH key" --> 粘进key文本框中 --> "Add key"
       #测试
        ssh -T git@github.com
    4.创建仓库:
     进入GitHub账户中创建一个仓库
      mkdir ~/zcms
      cd ~/zcms
      git init
     创建README文件:
      touch README
      git add README
      git commit -m 'first commit message'
      #此步操作前,代码都在本地仓库中,还未同步到GitHub账户中
      git remote add origin https://github.com/wen12128/zcms.git #定义远程服务器别名origin
      git push origin master #本地和远程同步,默认为master
     #更新文件
        vim README
        git commit -a -m "second"
        git push origin
    5.将远程仓库check out
     mkdir ~/demo --> cd ~/demo --> git init
     git clone https://github.com/wen12128/zcms.git 或 git clone git://github.com/wen12128/zcms.git(Git-daemon协议)
    6.Fork仓库:克隆别人的代码库到自己的项目中,可以作为子模块的形式使用,或二次开发
      在想要的工程首页点击"Fork"按钮
      克隆项目:
        git clone https://github.com/csc/project1.git
        克隆后自已的GitHub上就有了该fork
      远程配置-跟踪原始仓库:
        cd project1
        git remote add upstream https://github.com/csc/project1.git
        git fetch upstream
      Push提交:
        git push origin master
        #同步更新原始仓库到本地仓库
        git fetch upstream
        git merge upstream/master
      #若要贡献代码参考help.github.com/send-pull-requests/  help.github.com/articles/using-pull-requests
      #退订fork更新-到原始仓库上点"Unwatch"
      #删除fork https://help.github.com/articles/deleting-a-repository
    7.社区:
      参考:https://help.github.com/articles/be-social

    8.创建分支:
      ##分支操作Git只生成一个指向当前版本的(快照)指针,不会像其它版本控制那样生成一份现有代码的物理拷贝
      ##Feature branches-功能分支(被用来为即将到来的或遥远的未来版本开发新的功能)
      ##develop branches-开发分支
      ##Release branches-预发布分支(合并到Master分支之前-测试用)
      ##Hotfix branches-修补分支
      ##master         -主分支(正式版本)
      ##--no-ff:默认情况下Git执行"快进式合并",会直接将Master分支指向Develop分支
      ##为了保证版本演进的清晰,使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点
      #设置默认分支settings-->default branche
      git remote -v #查看远程仓库  git remote add [name] [url] #添加远程仓库  git remote rm [name]#删除远程仓库
      git remote set-url --push [name] [newUrl]#修改远程仓库  git pull [remoteName] [localBranchName]#拉取远程仓库  git push [remoteName] [localBranchName]#推送远程仓库
      git branch -r #查看远程分支   git branch #查看本地分支  git checkout [name]#切换分支
      git branch [name]#创建本地分支不会自动切换到该分支  git checkout -b [name]#创建新分支并立即切换到新分支
      git push origin test:master#提交本地test分支作为远程的master分支  git push origin test:test#提交本地test分支作为远程的test分支
      #创建开发分支-从master分支上面分出来(git checkout -b [name] [remoteName] )直接检出远程分支
        git checkout -b develop master
      #切换到Master分支
        git checkout master
      #对Develop分支进行合并
        git merge --no-ff develop
      #更改develop分支
        git checkout develop --> touch me --> git add me --> git commit -m "author des" --> git push origin develop
      #-------------------------------
      #创建功能分支myfeature分支-从Develop分支上面分出来
        git checkout -b myfeature develop
      #切换到开发分支
        git checkout develop
      #合并分支-开发完成后要合并到Develop
        git merge --no-ff myfeature
      #删除myfeature分支
        git branch -d myfeature -->git push origin :myfeature
      #同步
        git push origin develop
      #-------------------------------
      #创建预发布分支release-1.2分支-从Develop分支上面分出来
        git checkout -b release-1.2 develop
      #更新版本
        ./bump-version.sh 1.2
      #发布信息
        git commit -a -m "Bumped version number to 1.2"
      #---预发布结束以后,合并进Develop和Master分支---
      #正式发布一个版本
        git checkout master
        git merge --no-ff release-1.2
      #对合并生成的新节点,做一个标签-以备将来参考
        git tag -m "new version" 1.2 --> git push origin refs/tags/* #推送到GitHub远程版本库-->git tag -d 1.2#删除本地里程碑-->git tag -d :1.2#删除远程里程碑
      #为了保持发布分支的变化,需要合并到开发分支
        git checkout develop
        git merge --no-ff release-1.2
      #发布后删除发布分支上的这个版本
        git branch -d release-1.2
      #-------------------------------
      #创建修补分支hotfix-1.2.1分支-从Master分支上面分出来
        git checkout -b hotfix-1.2.1 master
        ./bump-version.sh 1.2.1
        git commit -a -m "Bumped version number to 1.2.1"
        git commit -m "Fixed severe production problem"
      #---修补结束以后,合并进Master和Develop分支---
      #完成修补重新发布
        git checkout master
        git merge --no-ff hotfix-1.2.1
        git tag -a 1.2.1
      #由于开发分支也有错所以
        git checkout develop
        git merge --no-ff hotfix-1.2.1
        git branch -d hotfix-1.2.1

    常用命令:
    git tag -l #查看里程碑标签
    git config -l git show #可以看某次的变更 git config color.ui true #git的控制台输出变得有色彩 git init #初始化项目 git add . #添加到项目中 只要涉及到文件的改动,都要先add,才能commit git commit #提交 git commit -a -m "注释" #提交所有更改,但是新增文件需要先git admasterd git diff #比较working tree 和 index file 差异 git diff --cached #比较index file 和代码仓库的差异 git status #查看目前工作树的状态 git log #查看commit log列表 git log -p #详细的log,会列出更改的对比 #git撤销当前的更改 git reset --soft #只撤销 commit,保留 working tree 和 index file。 git reset --hard #撤销 commit、index file 和 working tree,即撤销销毁最近一次的 commit git reset --mixed #撤销 commit 和 index file,保留 working tree git reset #和 git reset --mixed 完全一样 git reset - xxxx #用于删除登记在 index file 里的某个文件 git忽略文件-在project目录中添加一个.gitignore 文件,一行一个,书写忽略的文件或者文件夹
    git branch -r #查看远程branch
    git checkout -b bug_fix_local bug_fix_remote #把本地端切换为远程的bug_fix_remote branch并命名为bug_fix_loca

    goagent代理github
      git config --global http.proxy http://127.0.0.1:8087
      git config --global http.sslVerify false 或指定证书位置git config --global http.sslCAinfo /opt/goagent/local/CA.crt
      sudo vim ~/.gitconfig:

    [http]
    	sslVerify = false
    	proxy = http://127.0.0.1:8087
    	sslCAinfo = /opt/goagent/local/CA.crt
    [https]
    	sslVerify = false
    	proxy = https://127.0.0.1:8087
    	sslCAinfo = /opt/goagent/local/CA.crt
    [user]
    	name = github-username
    	email = github-email
    [credential]
    	helper = cache --timeout=3600
    

     将证书导入系统根认证中:
      sudo mkdir /usr/share/ca-certificates/github.com/
      cd /usr/share/ca-certificates/github.com/
      sudo cp /opt/goagent/local/certs/github.com.crt .

      sudo mkdir /usr/share/ca-certificates/goagent/
      cd /usr/share/ca-certificates/goagent/
      sudo cp /opt/goagent/local/CA.crt .

      sudo vim /etc/ca-certificates.conf尾部追加:
        github.com/github.com.crt
        goagent/CA.crt
      sudo dpkg-reconfigure ca-certificates
      sudo update-ca-certificates

      测试一下是否成功!

      #sudo certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "goagent" -i /opt/goagent/local/CA.crt

    参考:
      官方帮助
      Git分支管理策略EN
      Git分支管理策略
      GitHub上分享代码
      Git权威指南
      git快速入门
      图解Git常用命令
      常用命令
      简易指南

  • 相关阅读:
    [转帖]J2ME程序开发全方位基础讲解汇总
    IWAM账号密码不一致引起IIS无法处理ASP文件
    [存档]J2ME中随机数字处理全攻略
    利用计划任务和VBS脚本实现自动WEB共享文件夹里的文件
    完美解决Java程序在 MOTO E680i 中声音文件播放
    J2ME中使用pauseApp控制手机临时退出JAVA程序
    Web页中使用MediaPlayer
    严重注意MSSQL视图跨数据库复制的问题
    Java下数字类型的转换
    项目开发:电话留言软件(20050717)
  • 原文地址:https://www.cnblogs.com/wen12128/p/2791173.html
Copyright © 2011-2022 走看看