1、Writing int the front
2、git本地创建project的perfect process
makdir ~/hello-world //创建一个项目hello-world
cd ~/hello-world // 进入 这个项目 目录
git init //初始化,
touch README
git add README //更新README文件
git status // 看下,是不是 修改的 都已暂存起来了
git commit -m 'first commit' //提交更新,并注释信息“first commit”
git remote add origin git@github.com:dkf/hello-world.git //连接远程github项目git push -u origin master //将本地项目更新到github项目上去
3、为项目贡献代码
要为一个自己没有推送权限的项目贡献代码,到那个感兴趣的项目主页上,点击页面上方的 "fork" 按钮,GitHub 就会为你复制一份该项目的副本到你的仓库中,这样你就可以向自己的这个副本推送数据了。给项目维护者发邮件请求拉取自己的更新,项目维护者只需将这些副本仓库加为远程仓库,在自己本仓库更新测试,然后合并后的更新推送到主仓库,然后提取更新合并即可。
3.1、为公开的小型项目贡献代码
Cd project #进入在本地的仓库目录下
Git checkout –b featureA #创建新分支featureA,并切换到此分支下
Git commit #提交
完成特性分支开发后,先到原始项目中fork创建自己可写的公开仓库,将此仓库添加为本地的第二个远端仓库,称为myfork,
Git remote add myfork (url) #远程连接myfork仓库
Git push myfork featureA #推送特性分支的更新到myfork库
进行第二项特性的开发:
Git checkout –b featureB origin/maser #创建新分支featureB,并切换到此分支,分支内容和origin/master分支内容一样。
Git commit #提交
Git push myfork featureB #提交新特性到远端myfork库
(email maintainer) #邮件管理者 git request-pull
Git fetch origin #从管理员的更新中同步本地代码的更新
3.2、为大型项目贡献代码
工作流程:为每个补丁创建独立的特性分支,提交补丁,不需自己创建可写的公开仓库,也不用将自己更新推送到服务器,只需将每次提交内容以电子邮件方式发送到邮件列表即可。
git checkout –b dkf #创建新分支dkf,并切换到dkf分支
git commit #提交
git commit #提交
git format-patch –M origin/master #format-patch 命令依次创建补丁文件,并输出文件名。上面的 -M 选项允许 Git 检查是否有对文件重命名的提交(功能同git commit )
4、Others
4.1、分支
分支开发流程:
用master保留完全稳定代码的分支,新建develop或next分支,用来作为稳定性测试,或者新功能的开发,当稳定了合并到maser分支上,再删除原来的分支。
4.2、添加远程仓库dkf
列出所有的远程仓库: git remote –v(如果有master,ab两个分支)
添加一个仓库名叫做dkf(在远程),
git remote add dkf git://github.com/paulboone/ab.git
将远程的分支合并到自己创建的新的分支下(也即从远程仓库中抓取数据到本地):
git fetch dkf (fetch命令将远端的数据拉到本地仓库,并不自动合并到当前工作分支)
即可创建新的分支 dkf/master,dkf/ab两个新的分支。
如果是克隆了一个仓库,此命令会自动将远程仓库命名为origin (origin指的是remote-name)下,将远程分支命名为origin/master。所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)到本地。
git clone:自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有 master 分支)。
git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。
移除对应的远端仓库:git remote rm [remote-name]
4.3、忽略文件 .gitignore (正则)
忽略某些文件:(如编译产生的临时文件,自动生成的文件,日志文件等等,忽略规则符合正则)$ cat .gitignore*.[oa] #表示忽略掉所有以.o,.a结尾的文件。
文件 .gitignore 的格式规范如下:
所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反