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常用命令
常用命令
简易指南