python github

git

1. 版本控制

是否依稀记得你的毕业论文?


1

2

3

4

5

6

7

8

9

10

11

毕业论文_初稿.doc

毕业论文_修改1.doc

毕业论文_修改2.doc

毕业论文_修改3.doc

毕业论文_完整版1.doc

毕业论文_完整版2.doc

毕业论文_完整版3.doc

毕业论文_最终版1.doc

毕业论文_最终版2.doc

毕业论文_死也不改版.doc

...

是否还记得老师让你重新自己写的项目?


1

2

3

4

5

blog1

blog2

blog3

blog4

...

以上是使用文件或文件夹进行版本管理,以上方式有缺点:

  • 多个文件,保留所有版本时,需要将多个文件保存在本地
  • 协同操作,多人协同操作时,需要将文件发来发去...
  • 容易丢失,被删除意味着永远失去(可以选择网盘)

为了解决上述问题,应运而生了版本管理工具:

  • VSS-- Visual Source Safe
    此工具是Microsoft提供的,是使用的相当普遍的工具之一,他可以与VS.net进行无缝集成,成为了独立开发人员和小型开发团队所适合的工具,基本上Window平台上开发的中小型企业,当规模较大后,其性能通常是无法忍受的,对分支与并行开发支持的比较有限。
  • CVS--Concurrent Versions System
    此工具是一个开源工具,与后面提到的SVN是同一个厂家:Collab.Net提供的。CVS是源于unix的版本控制工具,对于CVS的安装和使用最好对unix的系统有所了解能更容易学习,CVS的服务器管理需要进行各种命令行操作。目前,CVS的客户端有winCVS的图形化界面,服务器端也有CVSNT的版本,易用性正在提高。
  • SVN --CollabNet Subversion
    此工具是在CVS 的基础上,由CollabNet提供开发的,也是开源工具,应用比较广泛。他修正cvs的一些局限性,适用范围同cvs,目前有一些基于SVN的第三方工具,如TortoiseSVN,是其客户端程序,使用的也相当广泛。在权限管理,分支合并等方面做的很出色,他可以与Apache集成在一起进行用户认证。不过在权限管理方面目前还没有个很好用的界面化工具,SVNManger对于已经使用SVN进行配置的项目来说,基本上是无法应用的,但对于从头开始的项目是可以的,功能比较强大,但是搭建svnManger比较麻烦。是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。
  • BitKeeper
    是由BitMover公司提供的,BitKeeper自称是“分布式”可扩缩SCM系统。不是采用C/S结构,而是采用P2P结构来实现的,同样支持变更任务,所有变更集的操作都是原子的,与svn,cvs一致。
  • GIT
    Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。

版本管理工具都一般包含客户端和服务端:

  • 客户端(用户):本地编写内容,向服务端获取或提交内容
  • 服务端(网盘):保存所有版本的文件

2. 什么是GIT   

GIT
    Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。

GitHub等
    GitHub、GitCafe、BitBucket和GitLab等是基于Git版本控制的远程文件托管平台。

使用场景:
    - 无远程:在本地 .git 文件夹内维护历时文件
    - 有远程:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库

PS: 
    集中式:远程服务器保存所有版本,用户客户端有某个版本
    分布式:远程服务器保存所有版本,用户客户端有所有版本

3. 安装Git

参见:http://git-scm.com/

PS: 注册GitHub、GitCafe、BitBucket和GitLab等账户,以便于将文件托管在远程。

4. Git使用

              - 开发写代码
                  骑兵
                  步兵
                  勤兵

              - 进入程序目录

                git init       - 初始化,初始化之后会在本地创建一个.git的目录,用于保存git相关信息,如:版本,日志等...

                git status     - 查看当前状态

                git add <file>           - 将文件从《工作区》提交到《暂存区》

                git commit -m "提交信息"   - 将文件从《暂存区》提交到《版本库 》

                git rm --cached <file>   - 将文件从《暂存区》或《版本库》删除文件
                工作区:ls                 - 查看工作区
                暂存区:git ls-files -s    - 查看暂存区和版本库
                版本库:git ls-tree HEAD   - 查看版本库

阶段一:创业初期

             在原来代码工作区操作,开发了半个月后,临时发现线上程序有bug需要马上修复,怎么办?
              答案:保留开发到一半的代码,从线上拷贝一份代码到其他路径,在原来基础上修改bug,提交;再次回到正在开发的路径继续写代码...
              Git解决方法:利用分支,Git中的分支相当于拷贝一份代码,应用方法以及场景如下:

               【代码已上线】
                  已上线代码在master分支上(默认创建分支)

               【开发新功能到一半】
                  git branch dev       【创建新分支】
                  git checkout dev     【切换进入dev分支】
                  开发程序,仅在dev分支中修改文件,不影响其他分支....
                  开发到一半时,突然出现一个bug需要紧急修复

                 【将已经开发的功能先提交】
                    git add .
                    git commit -m ‘临时提交开发到一半的代码‘
                  或【将已开发的功能先临时保存】
                    git stash
                    git stash list      查看都有哪些临时保存列表
                    git stash apply     从临时列表中取出
                    git stash drop      从临时列表中删除

              【临时修复bug】
                  git checkout master  【切换到master分支】
                  修复bug并提交
                    git add .
                    git commit -m ‘紧急修复bug‘
                  创建新分支,修复bug并提交,合并到master分支
                    git branch bug
                    git checkout bug
                    修复bug...
                    git add .
                    git commit -m ‘紧急修复bug‘
                    git checkout master
                    git merge bug

              【继续开发新功能】
                    git checkout dev
                    开发完毕,上线
                    git checkout master
                    git merge dev

                    Auto-merging readme
                    CONFLICT (content): Merge conflict in readme
                    Automatic merge failed; fix conflicts and then commit the result.
                    出现冲突,解决冲突
                    git add .
                    git commit -m ‘解决冲突‘

阶段二:新功能开发,开发直播功能(预计开发一个月)

              在公司

                【创建远程仓库project】
                    注册github,并在其中创建一个project,创建成功后会给当前project生成一个URL用于让本地和远程连接,如:http://47.93.4.198/wupeiqi/pondo.git

                【添加远程仓库URL】
                     本地执行命令,添加远程连接:git remote add origin http://47.93.4.198/wupeiqi/pondo.git

                【将本地分支内容推送到远程仓库】
                     git push -u origin master

                     PS: 首次推送需要将本地分支同步到远程分支
                         git push --set-upstream origin master
                         git push --set-upstream origin dev

              回家
                【从远程仓库克隆到本地某个目录】
                    git clone http://47.93.4.198/wupeiqi/pondo.git
                    cd pondo

                【clone后本地只有master分支,同步其他分支】
                    git branch dev origin/dev
                    git checkout dev

                【在家继续开发】
                    ...

                【提交到远程版本库】
                    git add .
                    git commit -m ‘在家开发‘

              第二天到公司
                【从远程仓库获取最新内容】
                    git pull origin dev
                    或
                    git fetch origin dev
                    git merge origin/dev
                【继续开发功能】
                    ...
                【提交到远程版本库】
                    git add .
                    git commit -m ‘在家开发‘

              第二天回家:
                【从远程仓库获取最新内容】
                    git pull origin dev
                    或
                    git fetch origin dev
                    git merge origin/dev
                【继续开发功能】
                    ...
                【提交到远程版本库】
                    git add .
                    git commit -m ‘在家开发‘

              重复进行中....

              PS: 如果本地有未提交的内容,则需要
                    - git stash先暂时存储
                    - git pull origin dev 从远程获取最新代码
                    - git stash pop       将暂时存储代码和最新代码进行合并,解决冲突

                  如果在公司的代码只是commit,忘记push到远程;在家又新开发了功能;再次回到公司时,则需要:
                    - git pull origin dev
                    - 解决冲突
                    - git add .
                    - git commit -m ‘解决冲突‘
                    - git push origin dev
                    此次会把上次忘记push和本次解决冲突一起提交到远程

阶段三:项目保存在公司电脑中,缺点:电脑硬盘损坏则代码丢失;在家里电脑无法继续开发。

5. 常用命令:


1

2

3

4

5

6

7

8

9

10

11

cd                                                  - 进入程序目录

git init                                            - 创建一个空的Git仓库或重新初始化一个现有的

git config --global user.name "John Doe"            - 设置用户名

git config --global user.email [email protected]  - 设置电子邮件地址

git status                                          - 查看状态

git add [file]                                      - 将文件从《工作区》提交到《暂存区》

git commit -"提交信息"                            - 将文件从《暂存区》提交到《版本库 》

git rm --cached <file>                                - 将文件从《暂存区》或《版本库》删除文件

工作区:ls                                          - 查看工作区

暂存区:git ls-files -s                             - 查看暂存区和版本库

版本库:git ls-tree HEAD                            - 查看版本库<code class="python comments"><br></code>


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

git init                  #初始化

git add manage.py         #提交单个文件

git add .                 #提交所有文件

git commit -"all file"  #提交注释

git status                #状态

git ls-tree head          #查看版本中所有文件

git ls-files -s           #查看暂存区和版本中所有文件

git log                   #查看日志

git reflog                #查看所有日志

git stash                 #将当前修改的内容保存到一个地方

git reset  版本号          #默认等于git reset --mix 版本号

#配置用户信息

git config --local user.name ‘名称‘

git config --local user.email ‘邮箱‘

#回滚

git log

git reset --head 2b349bf

#查看所有日志回滚

git reflog

git reset --head 2b349bf

回滚: 


1

2

3

4

5

6

7

8

9

#方式一: (三步操作)

    git reset --soft 版本号  #从分支回到暂存区

    git reset head 文件     #从暂存区回到修改过的内容

    git check out  文件     #从修改过的文件到原文件

#方式二: (两部步操作)

    git reset --mix 版本号  #从分支回到修改过的内容 == git reset 版本号

    git check out  文件     #从修改过的文件到原文件

#方式三: (一部步操作)

    git reset --hard 版本号  #从分支回到原文件

图示:

6.场景

在原来代码工作区操作,开发了半个月后,临时发现线上程序有bug需要马上修复,怎么办?
              答案:保留开发到一半的代码,从线上拷贝一份代码到其他路径,在原来基础上修改bug,提交;再次回到正在开发的路径继续写代码...
              Git解决方法:利用分支,Git中的分支相当于拷贝一份代码,应用方法以及场景如下:

               【代码已上线】
                  已上线代码在master分支上(默认创建分支)

               【开发新功能到一半】
                  git branch dev       【创建新分支】
                  git checkout dev     【切换进入dev分支】
                  开发程序,仅在dev分支中修改文件,不影响其他分支....
                  开发到一半时,突然出现一个bug需要紧急修复

                 【将已经开发的功能先提交】
                    git add .
                    git commit -m ‘临时提交开发到一半的代码‘
                  或【将已开发的功能先临时保存】
                    git stash
                    git stash list      查看都有哪些临时保存列表
                    git stash apply     从临时列表中取出
                    git stash drop      从临时列表中删除

              【临时修复bug】
                  git checkout master  【切换到master分支】
                  修复bug并提交
                    git add .
                    git commit -m ‘紧急修复bug‘
                  创建新分支,修复bug并提交,合并到master分支
                    git branch bug
                    git checkout bug
                    修复bug...
                    git add .
                    git commit -m ‘紧急修复bug‘
                    git checkout master
                    git merge bug

              【继续开发新功能】
                    git checkout dev
                    开发完毕,上线
                    git checkout master
                    git merge dev

                    Auto-merging readme
                    CONFLICT (content): Merge conflict in readme
                    Automatic merge failed; fix conflicts and then commit the result.
                    出现冲突,解决冲突
                    git add .
                    git commit -m ‘解决冲突‘

新功能开发,开发直播功能(预计开发一个月)

   【创建远程仓库project】
                    注册github,并在其中创建一个project,创建成功后会给当前project生成一个URL用于让本地和远程连接,如:http://47.93.4.198/wupeiqi/pondo.git

                【添加远程仓库URL】
                     本地执行命令,添加远程连接:git remote add origin http://47.93.4.198/wupeiqi/pondo.git

                【将本地分支内容推送到远程仓库】
                     git push -u origin master

                     PS: 首次推送需要将本地分支同步到远程分支
                         git push --set-upstream origin master
                         git push --set-upstream origin dev

              回家
                【从远程仓库克隆到本地某个目录】
                    git clone http://47.93.4.198/wupeiqi/pondo.git
                    cd pondo

                【clone后本地只有master分支,同步其他分支】
                    git branch dev origin/dev
                    git checkout dev

                【在家继续开发】
                    ...

                【提交到远程版本库】
                    git add .
                    git commit -m ‘在家开发‘

              第二天到公司
                【从远程仓库获取最新内容】
                    git pull origin dev
                    或
                    git fetch origin dev
                    git merge origin/dev
                【继续开发功能】
                    ...
                【提交到远程版本库】
                    git add .
                    git commit -m ‘在家开发‘

              第二天回家:
                【从远程仓库获取最新内容】
                    git pull origin dev
                    或
                    git fetch origin dev
                    git merge origin/dev
                【继续开发功能】
                    ...
                【提交到远程版本库】
                    git add .
                    git commit -m ‘在家开发‘

              重复进行中....

              PS: 如果本地有未提交的内容,则需要
                    - git stash先暂时存储
                    - git pull origin dev 从远程获取最新代码
                    - git stash pop       将暂时存储代码和最新代码进行合并,解决冲突

                  如果在公司的代码只是commit,忘记push到远程;在家又新开发了功能;再次回到公司时,则需要:
                    - git pull origin dev
                    - 解决冲突
                    - git add .
                    - git commit -m ‘解决冲突‘
                    - git push origin dev
                    此次会把上次忘记push和本次解决冲突一起提交到远程

项目保存在公司电脑中,缺点:电脑硬盘损坏则代码丢失;在家里电脑无法继续开发。

7.冲突:

  解决方法:

  第一种方式:stash

  第二种方式:分支 branch

8.协同开发:

第一步:进入官网

https://github.com/

第二步:创建组织

第三步:添加组织名字、邮箱地址

第四步:添加开发成员

第五步:创建知识库地址

第六步:完成

9.fork:

第一步:点击fork生成

第二步:clone本地进行修改

第三步:new pull request

10. .gitignore

https://github.com/github/gitignore/blob/master/Python.gitignore

注意:协同开发时,在解决完冲突之后,应该跟上一个提交的人进行沟通。

时间: 2024-10-20 16:33:50

python github的相关文章

python --github 刷题

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? import random def gen_activate_code(length=8): activate_code_list = [] for i in range(10): activate_code_list.append(str(i)) for i in range(65,91): activate_c

使用Apriori算法和FP-growth算法进行关联分析(Python版)

===================================================================== <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记也包含一些其他python实现的机器学习算法 算法实现均采用python github 源码同步:https://github.com/Thinkgamer/Machine-Learning-With-Python ==================================

28款GitHub最流行的开源机器学习项目

http://ml.ailab.cn/article-76485.html 现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习目前也有了十分广泛的应用,如:数据挖掘.计算机视觉.自然语言处理.生物特征识别.搜索引擎.医学诊断.DNA序列测序.语音和手写识别.战略游戏和机器人等方面. 云栖社区特意翻译整理了目前GitHub上最受欢迎的28款开源的机器学习项目,以供开发者参考使用. 1. TensorFlow TensorFlow 是谷歌发布的第二代机器学习系统.据谷歌宣称,在部分基准测试中

值得学习的python项目

此网站整理的2014年值得一学的pytho项目,http://pycoders.com/2014/ 项目资源都在github上,python程序员进阶必备. 就当作2015年的计划吧.先列表,再对号 Projects 1. robobrowser A library for web scraping built on Requests and BeautifulSoup. Like Mechanize, but with tests, docs, and a Pythonic interface

用python做分布式定时器

分布式任务系统 (Python) github地址 https://github.com/thomashuang/Lilac/blob/master/README.rst 这里将介绍Liac的设计架构,首先分布式任务系统的定义是在多台服务器执行定时任务. 实现技术 分布式定时调度,可以同时在不同服务执行. 使用Leader/Follower Pattern 多线程模式. 只是周期定时,crontab定时,定点任务. 重试失败任务. 线程安全db api,支持读写分离模式 使用data-mappe

5.python中文编码 - python基础入门

python到目前为止,一共有两个版本,分别是2.x和3.x版本,根据官方正式通知2020年停止对python更新和维护,距离今天还有110天左右,所以正在学习python的小伙伴应该暗中庆幸一波. python2.x版本默认采用ASCLL编码,python3.x版本则默认采用UTF-8编码,两者有什么区别呢?唯一区别就是如果代码或者注释中含有中文,ASCLL编码会出现乱码,UTF-8却可以正常显示中文,即python2.x版本中文显示不正常,python3.x版本正常. 一.为什么会出现乱码

10.python break/continue - python基础入门

在昨天的文章:python while循环 文章结尾,我们留下了一个bug,当条件成立时,程序陷入了死循环,如何解决呢? 为了规避这个问题,今天介绍两个关键词:break和continue. 一.break 如果在循环中使用 break ,意味着立即跳出本次循环,直接代码演示: # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat

15.python 字典dict - python基础入门

前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict. python中的字典可与字符串/列表/元组不同,因为字典dict需要由两部分组成,分别是key和value,简称:键值对,下面具体讲解一下关于字典的特点: 1.由一个或者多个键值对构成,键值对的类型可以不相同也可以相同: 2.字典中的键值对需要写在{}中括号内部,键值对中的key和value用:隔开,键值对与键值对之间用逗号隔开: 3.字典是一个无序

python函数声明和调用(18)

函数是指代码片段,可以重复调用,比如我们前面文章接触到的type()/len()等等都是函数,这些函数是python的内置函数,python底层封装后用于实现某些功能. 一.函数的定义 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回:如果没有return语句,默认返回None: def functionname( parameters ): "函数说明" function_sui