专题一:github基础篇
第一步:安装Git
sudo apt-get install git git-core git-doc git-email gitk git-man git-sh git-svn gitweb
第二步:注册github账户并配置Git
Github官网:github.com/
下面的SeaflyGithub为前面创建的git账户,下面是git使用的邮箱: git config --global user.name "SeaflyDennis" #仓库用户名 git config --global user.email "seafly0616@qq.com" #仓库使用邮箱
第三步:服务端web端创建新的仓库
第五步:添加或删除或修改文件
第一步:添加/修改文件:touch test.c 第二步:添加test.c文件到git本地记录:git add test.c 第三步:为本次本地记录添加注释:git commit -m "新增/修改test.c文件"
第一步:删除文件/目录:rm -rf test.c (正常的shell命令) 第二步:添加被修改的文件到git本地记录:git rm -rf test.c 第三步:为本次本地记录添加注释:git commit -m "本次删除了test.c文件"
实用技巧:一次性添加所有文件更改到git本地记录:git add --all
第六步:将前面更改更新到远程仓库服务器
第一步:git push origin master 第二步:根据提示输入密码(你的github账户登录密码) (这是没有使用ssh_key的情况下,每次远程更新一次都要输入密码)
专题二:github扩展篇
第一节:git版本回退管理
git reflog #查看commit列表 git reset --hard HEAD^^ #回退到HEAD之后的2个版本 git push origin :branch1 #删除远程分支branch1 git reset --hard commit-id #回退到commid-id处 git reset --hard HEAD~3 #回退到最近3次提交
第二节:Git分支高级管理branch
git branch #查看本地分支(当前分支标星) git branch -a #查看本地远程所有分支 git branch -b branch1 #创建并切换到branch1分支 git branch branch1 #创建branch1分支 git checkout -f branch1 #切换到branch1分支
#克隆特定分支内容: git clone -b github.com/xxx/xxx git branch -D branch1 #删除本地分支branch1 git push origin :branch1 #删除远程分支branch1 git push origin branch1 #建立新的远程分支branch1
合并分支到master
第一步:首先切换到master主分支 git checkout -f master 第二步:将目标分支合并到当前主分支 #为了保证版本演进的清晰,我们希望采用'--no-ff'这种做法 git merge --no-ff branch1
第三节:Github远程仓库高级管理
git remote add origin github.com/SeaflyDenni… git remote rename repository1 repository2 #重命名为repository2 git remote rm repository1 #删除远程仓库repository1
第四节:分支的高级管理
Github上提交代码(分支fork与合并merge)
第一步:fork目标项目
先 fork 相应的项目,相当于拷贝一份到自己的github账户下:
第二步:把目标项目clone 到本地分支
把目标项目从自己仓库里clone 到本地分支,对bug做相应的修改 在自己本地 git clone 这个项目,修改bug git clone github.com/beepony/boo… cd bootstrap git checkout -b test-pr git add . && git commit -m "test-pr" git push origin test-pr
第三步:发起 pull request 给原作者
完成修改之后,回到 test-pr 分支,点击旁边绿色的 Compare & pull request 按钮 发起 pull request 给原作者,让他看到,并决定是否接受你的修改
添加对bug的注释信息,确认提交:
第四步:等待原作者同意接受你的修改
原作者同意接受这个bug,就会 merge 到他自己的项目中 git checkout master #原作者首先切换到master #为了保证版本演进的清晰,我们希望采用'--no-ff'这种做法: git merge --no-ff robin_local
第五步:提交流程结束
如果原作者同意,那么你的提交也就成功,并由原作者自行合并到他的分支里。
专题三:搭建github本地服务器
第一步:安装git
sudo apt-get install -y git
第二步:创建一个git用户
创建一个git管理员github用户,用于运行git服务和管理本地git: sudo adduder github
第三步:创建证书登录
此步骤在个人使用情况下可以忽略,只是每次验证需要git管理员密码
第一步:搜集所有需要登录用户的公钥id_rsa.pub文件 第二步:把这些公钥文件导入/home/github/.ssh/authorized_keys文件,一行一个
第四步:初始化git仓库(在服务端创建新仓库)
以下是新建仓库范例:
第一步:在git管理员github用户的HOME目录新建一个容纳该仓库的目录testgitA.git (仓库顶层目录名尽量都以.git为后缀) 第二步:先选定testgitA.git目录作为git仓库,如/home/github/testgitA.git 第三步:开始初始化:sudo git init --bare /home/github/testgitA.git (创建一个裸仓库,因为服务器的git纯粹为了共享,所以不让用户直接登录) 第四步:修改拥有者为git管理员:sudo chown -R github:github /home/github/testgitA.git
扩展:删除仓库 例如:删除testgitA.git这个仓库很简单,就直接让拥有者或root用户删除这个目录即可。
由于world文档无法演示gif动态图,因此此处仅为本地文件超链接:
本笔记来自有道云笔记:第5课-版本控制工具git
第五步:禁用shell登录
出于安全考虑,第二步创建的git用户不允许登录shell,通过修改/etc/password文件 第一步:找到git管理员github这行:github:x:......:/home/github:/usr/bin/bash 第二步:修改为:github:x:....../home/github:/usr/bin/git-shell 这样,github用户可以正常通过ssh使用git,但无法登录shell
第六步:克隆远程仓库
现在,可以通过git clone命令克隆远程仓库了,在各自电脑上执行: git clone github@server:/home/github/testgitA.git
值得注意: 新建的仓库没有任何分支,包括master主分支都没有; 如何创建master主分支,克隆下来后push origin master即可创建; 其他分支可以直接通过branch子命令来创建;