• git(代码仓库)


    第1章 git介绍

    1.1 参数:

    第2章 git管理一个项目

    2.1 图示

    2.2 cd /项目路径

    2.3 git config --globle user.email  "邮箱地址"

    2.4 git confgi --globle user.name  'xiaodong'

    2.5 git init

    2.6 git log

    2.7 git status

    2.8 git commit -m '描述信息'

    2.9 git log

    2.10 git add .

    第3章 项目回滚

    3.1 git reset  --hard  '唯一标识'

    3.2 git reflog

    3.3 例:完整项目管理

    第4章 git 进阶(开发未完成时)

    4.1 statsh

    4.2 git stash

    4.3 例:

    4.4 git stash pop

    4.5 git stash list

    4.6 git stash clear

    4.7 git stash pop

    4.8 git stash  apply

    4.9 git stash drop

    第5章 分支

    5.1 介绍

    5.2 git branch

    5.3 git branch dev

    5.4 git checkout  dev

    5.5 git merage

    5.6 git branch -d debug

    5.7 实战:

    第6章 github应用

    6.1 上传下载github命令

    6.2 实战GitHub

    6.3 查看合并信息

    第7章 协同开发

    7.1 合作者

    7.2 组织

    7.3 忽略合并某文件

    7.4 协同开发过程

    第8章 用户凭证

    8.1 秘钥

    8.2 密码

    8.3 相关操作:

    8.4 补充版本命令

    8.5 git发布

    第1章 git介绍

    介绍:帮你管理版本的工具

    地址:https://git-scm.com

    1.1 参数:

    $ git

    usage: git [--version] [--help] [-C <path>] [-c name=value]

               [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]

               [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]

               [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]

               <command> [<args>]

     

    These are common Git commands used in various situations:

     

    start a working area (see also: git help tutorial)

       clone      Clone a repository into a new directory

       init       Create an empty Git repository or reinitialize an existing one

     

    work on the current change (see also: git help everyday)

       add        Add file contents to the index

       mv         Move or rename a file, a directory, or a symlink

       reset      Reset current HEAD to the specified state

       rm         Remove files from the working tree and from the index

     

    examine the history and state (see also: git help revisions)

       bisect     Use binary search to find the commit that introduced a bug

       grep       Print lines matching a pattern

       log        Show commit logs

       show       Show various types of objects

       status     Show the working tree status

     

    grow, mark and tweak your common history

       branch     List, create, or delete branches

       checkout   Switch branches or restore working tree files

       commit     Record changes to the repository

       diff       Show changes between commits, commit and working tree, etc

       merge      Join two or more development histories together

       rebase     Reapply commits on top of another base tip

       tag        Create, list, delete or verify a tag object signed with GPG

     

    collaborate (see also: git help workflows)

       fetch      Download objects and refs from another repository

       pull       Fetch from and integrate with another repository or a local branch

       push       Update remote refs along with associated objects

    第2章 git管理一个项目

    2.1 图示

    Git把管理的文件分为了两个区域四个状态

     

    l  工作区:当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用 git status】命令查看。

    l  版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 git add . 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录

    2.2 cd /项目路径

    2.3 git config --globle user.email  "邮箱地址"

    解释:添加邮箱地址

    2.4 git confgi --globle user.name  'xiaodong'

    解释:设置master管理名称

    2.5 git init

    解释:管理记录当前代码状态

    2.6 git log

    解释:查看当前保存版本

    2.7 git status

    解释:查看修改状态

    2.8 git commit -m '描述信息'

    解释:添加描述信息要写详细,提交代码

    2.9 git log

    查看当前版本之前保存版本,

    2.10 git add .

    解释:

    新增所有新增功能

    亦可:

    git add 文件名

    添加新增功能文件

    git commit -m '新增功能'

    工作区:当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用git status】命令查看。

    第3章 项目回滚

     

    3.1 git reset  --hard  '唯一标识'

    解释:回滚项目

     

    3.2 git reflog

    解释:查看全部项目,包含被回滚的项目

     

    例:

    git reset --heart 5ad460f

    3.3 例:完整项目管理

    $ git status                     # 查看当前git状态

    On branch master

    Initial commit

    Untracked files:

      (use "git add <file>..." to include in what will be committed)

     

        .idea/

        app01/

        db.sqlite3

        manage.py

        pondo/

        readme

        templates/

     

    nothing added to commit but untracked files present (use "git add" to track)

    $ git add .                       # 添加当前目录下所有文件到版本库

    $ git commit -m '第一次提交'        # 提交到版本库,并填写版本说明,以便以后回滚。

    [master (root-commit) df47fe4] 第一次提交

    files changed, 879 insertions(+)

     create mode 100644 .idea/dictionaries/maple.xml

     create mode 100644 .idea/encodings.xml

     create mode 100644 .idea/inspectionProfiles/profiles_settings.xml

    第4章 git 进阶(开发未完成时)

    4.1 statsh

    解释:stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某

    4.2 git stash

    解释:

    stash:{词义}隐藏

    隐藏为开发玩的功能,修改以前的功能bug

    4.3 例:

    $ vim app01/views.py             # 开发直播功能,刚开发到一半

     

    $ git status

    On branch master

    Changes not staged for commit:

      (use "git add <file>..." to update what will be committed)

      (use "git checkout -- <file>..." to discard changes in working directory)

     

        modified:   app01/views.py

     

    no changes added to commit (use "git add" and/or "git commit -a")

     

    $ git stash                     # 将开发到一半的直播功能,临时存储到“某个地方”

    Saved working directory and index state WIP on master: 0972f4b 非洲专区上线

    HEAD is now at 0972f4b 非洲专区上线

     

    $ git status                    # 工作区回到当前版本未做任何操作前

    On branch master

    nothing to commit, working tree clean

     

    $ vim pondo/settings.py         # 紧急修复bug

    $ git status

    On branch master

    Changes not staged for commit:

      (use "git add <file>..." to update what will be committed)

      (use "git checkout -- <file>..." to discard changes in working directory)

     

        modified:   pondo/settings.py

    no changes added to commit (use "git add" and/or "git commit -a")

     

    $ git add .                     # 添加到修改bug的代码到暂存状态

    $ git commit -m '紧急修复bug'     # 提交修复Bug的代码到分支

    [master 1300d33] 紧急修复bug

    file changed, 1 insertion(+)

     

    $ git stash pop                 # 将开发到一半的直播功能从“某个地方”再次拿会工作区继续开发

    On branch master

    Changes not staged for commit:

      (use "git add <file>..." to update what will be committed)

      (use "git checkout -- <file>..." to discard changes in working directory)

     

        modified:   app01/views.py

     

    no changes added to commit (use "git add" and/or "git commit -a")

    Dropped refs/stash@{0} (059d78ca8fa204f9559bd3ce0ae76235969b4301)

     

    4.4 git stash pop

    解释:恢复未开发完成的功能

    注意:

    特别的:执行 git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行 git stash pop 时候就会出现冲突,有冲突解决冲突即可。

    4.5 git stash list

    解释:查看‘某个地方’存储的所有记录

    4.6 git stash clear

    解释:清空某个地方

    4.7 git stash pop

    解释:将第一个记录从某个地方重新拿到工作区(可能引起冲突)

    4.8 git stash  apply

    编号,将指定编号记录从某个地方从新拿到工作区(可能有冲突)

    4.9 git stash drop

    解释:编号,删除指定编号的记录

    第5章 分支

    5.1 介绍

    branch称为分支,默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支

    5.2 git branch

    查看所有分支

    5.3 git branch dev

    创建新的分支

    5.4 git checkout  dev

    切换分支

    5.5 git merage

    合并分支:

    git checkout master (先切换到master分支)

    git merage dev (将开发完成的dev分支合并到master

     

    例:

    $ git branch dev                 # 创建新分支,即:拷贝一份当前所在分支代码到新分支

    $ git checkout dev               # 切换到dev分支

    $ vim app01/views.py             # 开发功能

    $ git status                     # 查看状态,即:在dev分支修改了app01/views.py文件

    On branch dev

    Changes not staged for commit:

      (use "git add <file>..." to update what will be committed)

      (use "git checkout -- <file>..." to discard changes in working directory)

     

        modified:   app01/views.py

     

    no changes added to commit (use "git add" and/or "git commit -a")

    $ git add .                      # 将修改文件添加到版本库的暂存区

    $ git commit -m '新功能开发完毕'    # 将暂存区的内容提交到当前所在分支,即:dev分支

    [dev 32b40cd] 新功能开发完毕

    file changed, 2 insertions(+)

    $ git checkout master             # 切换回master分支

    Switched to branch 'master'

    $ git merge dev                   # dev分支内容合并到master分支

    Updating 0972f4b..32b40cd

    Fast-forward

     app01/views.py | 2 ++

    file changed, 2 insertions(+)

     

    5.6 git branch -d debug

    删除debug分支

    5.7 实战:

    线上出现BUG,如何操作?

    l  保存当前的修改,切换到master分支,创建debug分支,再切换到debug分支上进行代码的修改,

    l  修改完成之后,提交版本

    l  奇幻到master分支,将debug分支上的代码合并过来,把debug分支删除。

    $ git branch                     # 当前在master分支

    * master

    $ git branch dev                 # 创建dev分支用于开发新功能

     

    $ git checkout dev               # 切换到dev分支

    Switched to branch 'dev'

    $ vim app01/views.py             # 开发新功能到一半,需要紧急修复Bug

    $ git add .

    $ git commit -m '新功能开发一半'

    [dev b3ac2cb] 新功能开发一半

    file changed, 2 insertions(+)

    $ git checkout master            # 切换回master分支

    Switched to branch 'master'

    $ git branch bug                 # 创建bug分支

    $ git checkout bug               # 切换到bug分支

    Switched to branch 'bug'

     

    $ vim pondo/settings.py          # 修改bug

    $ git add .                      # 提交bug

    $ git commit -m '紧急修复bug'      # 提交bug

    [bug f42f386] 紧急修复bug

    file changed, 1 insertion(+), 1 deletion(-)

     

     

    $ git checkout master            # 切换会master

    Switched to branch 'master'

     

    $ git merge bug                  # bug分支内容合并到master分支,表示bug修复完毕,可以上线

    Updating 0972f4b..f42f386

    Fast-forward

     pondo/settings.py | 2 +-

    file changed, 1 insertion(+), 1 deletion(-)

    $ git checkout dev               # 切换到dev分支,继续开发新功能

    Switched to branch 'dev'

     

    $ vim app01/views.py             # 继续开发其他一半功能

     

    $ git add .                      # 提交新功能

     

    $ git commit -m '继续开发完成'      # 提交功能

    [dev c0bfb27] 继续开发完成

    file changed, 1 insertion(+)

     

    $ git checkout master            # 切换回master分支

    Switched to branch 'master'

     

    $ git merge dev                  # dev分支合并到master分支

    Merge made by the 'recursive' strategy.

     app01/views.py | 3 +++

    file changed, 3 insertions(+)

    第6章 github应用

    说明:git可以是用该URL进行向远程推送版本信息或获取版本信息

     

    6.1 上传下载github命令

    git remote add origin https://github.com/maple-shaw/pondo.git   # 为地址起一个别名origin

    git push origin master   # 将本地master分支内容以及版本信息推送到GitHub

    git push origin dev              # 将本地dev分支内容以及版本信息推送到GitHub

    git clone https://github.com/maple-shaw/pondo.git    # 将项目从GitHub中获取

    git branch dev origin/dev                           # 创建dev分支且和远程dev分支同步

    git push origin dev                               # 提交dev分支内容到远程GitHub托管仓库的dev分支

     

    6.2 实战GitHub

    在家里,小P开发完毕部分功能将代码推送到GitHub

    $ git remote add origin https://github.com/maple-shaw/pondo.git   # 为地址起一个别名origin

    $ git push origin master              # 将本地master分支内容以及版本信息推送到GitHub

    Username for 'https://github.com':                               # 输入GitHub用户名

    Password for 'https://maple-shaw@github.com':                       # 输入GitHub密码

    Counting objects: 2, done.

    Delta compression using up to 4 threads.

    Compressing objects: 100% (2/2), done.

    Writing objects: 100% (2/2), 270 bytes | 0 bytes/s, done.

    Total 2 (delta 1), reused 0 (delta 0)

    remote: Resolving deltas: 100% (1/1), completed with 1 local object.

    To https://github.com/maple-shaw/pondo.git

       634aac4..274f1e4  master -> master

    $ git push origin dev              # 将本地dev分支内容以及版本信息推送到GitHub

    Counting objects: 3, done.

    Delta compression using up to 4 threads.

    Compressing objects: 100% (2/2), done.

    Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.

    Total 3 (delta 1), reused 0 (delta 0)

    remote: Resolving deltas: 100% (1/1), completed with 1 local object.

    To https://github.com/maple-shaw/pondo.git

       274f1e4..50e2169  dev -> dev

    在公司,新电脑第一次使用,需要将代码从GitHub中获取并继续开发,开发完事下班就下班回家。

    $ git clone https://github.com/maple-shaw/pondo.git    # 将项目从GitHub中获取

    Cloning into 'pondo'...

    remote: Counting objects: 31, done.

    remote: Compressing objects: 100% (26/26), done.

    remote: Total 31 (delta 2), reused 30 (delta 1), pack-reused 0

    Unpacking objects: 100% (31/31), done.

    $ cd pondo/

    $ git Branch                                          # 默认获取到得只有master分支

    * master

    $ git branch dev origin/dev                           # 创建dev分支且和远程dev分支同步

    Branch dev set up to track remote branch dev from origin.

    $ git checkout dev                                    # 切换到dev分支

    Switched to branch 'dev'

     

    $ vim app01/views.py                                  # 继续开发新功能

     

    $ git add .                                           # 添加文件到版本库的暂存状态

    $ git commit -m '公司开发功能1'                         # 提交新功能到版本库的分支

    [dev 9281447] 公司开发功能1

    file changed, 1 insertion(+), 1 deletion(-)

    $ git push origin dev                                 # 提交dev分支内容到远程GitHub托管仓库的dev分支

    Username for 'https://github.com': maple

    Password for 'https://maple-shaw@github.com':

    Counting objects: 4, done.

    Delta compression using up to 4 threads.

    Compressing objects: 100% (4/4), done.

    Writing objects: 100% (4/4), 427 bytes | 0 bytes/s, done.

    Total 4 (delta 2), reused 0 (delta 0)

    remote: Resolving deltas: 100% (2/2), completed with 2 local objects.

    To https://github.com/maple-shaw/pondo.git

       50e2169..9281447  dev -> dev

    在家里,由于白天在公司已经开发一部分功能并提交到GitHub,家里电脑的代码还是昨晚的版本,所以需要从GitHub拉去最新代码,然后继续开发。

    $ git checkout dev                                   # 切换到dev分支

    Already on 'dev'

    $ git pull origin dev                                # 从远程GitHub仓库获取dev分支最新内容,并合并到本地

    remote: Counting objects: 4, done.

    remote: Compressing objects: 100% (2/2), done.

    remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0

    Unpacking objects: 100% (4/4), done.

    From https://github.com/maple/pondo

     * branch            dev        -> FETCH_HEAD

       50e2169..9281447  dev        -> origin/dev

    Updating 50e2169..9281447

    Fast-forward

     app01/views.py | 2 +-

    file changed, 1 insertion(+), 1 deletion(-)

     $ vim app01/views.py                                # 继续开发新功能

     $ git add .                                         # 添加文件到版本库的暂存状态

    $ git commit -m '家里开发功能1'                        # 提交新功能到版本库的分支

    在公司,由于昨天晚上在家已经开发了一部分功能,在公司需要先把昨晚开发的功能从GitHub中拉取,并继续开发。

    $ git checkout dev                                   # 切换到dev分支

    $ git fetch origin dev                               # GitHub仓库获取dev分支最新内容到版本库的分支

    remote: Counting objects: 3, done.

    remote: Compressing objects: 100% (1/1), done.

    remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0

    Unpacking objects: 100% (3/3), done.

    From https://github.com/maple-shaw/pondo

     * branch            dev        -> FETCH_HEAD

       150d891..65b6604  dev        -> origin/dev

    $ git merge origin/dev                               # 将版本库的分支内容合并到工作区

    Updating 150d891..65b6604

    Fast-forward

     readme | 5 ++++-

    file changed, 4 insertions(+), 1 deletion(-)

    $ vim app01/views.py                                 # 继续开发新功能

    $ git add .                                          # 添加文件到版本库的暂存状态

    $ git commit -m 'xxxxxxxxxxx'                        # 提交新功能到版本库的分支

    长此以往,将GitGitHub结合使用做到避免电脑损坏造成数据丢失以及多地开发的问题,上文执行过程中执行git pull origin 分支】命令等同于【git fetch origin 分支】+ git merge origin/分支】,并且在执行过程中可能会出现冲突,原因是由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。

                                                        

    6.3 查看合并信息

     

    第7章 协同开发

    协同开发一般有两种方式:

    7.1 合作者

    将其他用户添加到仓库合作者中之后,该用户就具有向当前仓库提交代码。

     

    7.2 组织

    创建一个组织,然后再该组织下可以创建多个项目,组内成员可以向组内所有项目提交代码。PS:也可以对某个项目指定合作者

     

     

     

     

    7.3 忽略合并某文件

     vim gitignore

    #将想忽略的文件名添加进来

    git add.

    git commit -m '添加忽略'

     

    7.4 协同开发过程

    ·         创建程序

    o    用户A创建程序,提交到GitHub

    o    用户B克隆项目

    o    用户C克隆项目

    ·         开发功能

    o    用户A开发功能1

    o    用户B开发功能2

    o    用户C开发功能3

    ·         提交

    o    用户A提交功能1,并pushA用户手速快,先提交。)

    o    用户B提交功能2,无法push,因为GitHub上已经有其他人提交的新代码。
    解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能2

    o    用户C提交功能3,无法push,无法提交,因为GitHub上已经有其他人提交的新代码。
    解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能3

    ·         获取最新代码

    o    用户A获取最新代码

    o    用户B获取最新代码

    o    用户C获取最新代码

    在上面红色标注的解决方法位置可以有三种方式操作,三者都可以完成合并并提交新功能,但是日志记录会有差异,如:前两者版本记录中会出现合并,而第三种可以保证版本记录干净整洁。

    o    git pull origin master   然后 git push origin master

    o    git fetch origin master 然后 git merge origin/master   git push origin master

    第8章 用户凭证

    由于GitGithub交互操作可能会很频繁,那么一定少不了用户授权的操作,为了防止每次操作重复输入用户名和密码,Git提供了两种解决方法:

     

    8.1 秘钥

    首先创建一对秘钥  ssh-keygen -t rsa,然后将 id_rsa.pub (公钥)内容拷贝到github中,日后操作无需再输入用户名和密码。

    注意:这种方式需要使用GIt git@github.com:maple-shaw/xxxxx.git 格式地址。

    8.2 密码

    Https访问git时,避免每次操作需要输入用户名和密码,可以在配置文件中添加如下配置项:

        [credential]

        helper = store/cache/第三方

    store:

            表示将用户名和密码保存在硬盘上

            第一次输入过用户名和密码之后,用户名和密码就会保存在当前用户根目录的 .git-credentials 文件中,内容格式为:https://用户名:密码@github.com

     

            自动添加配置命令:git config credential.helper store

    cache:

            表示将用户名和密码保存在缓存中

            第一次输入过用户名和密码之后,用户名和密码就会保存在缓存中,默认超时时间是 900 秒,缓存相关文件保存在当前用户根目录的 git-credential-cache

            自动添加配置命令:

                   git config credential.helper cache

                   git config credential.helper 'cache --timeout=300'

     

    8.3 相关操作:

            清除缓存:git credential-cache exit

            指定超时:

                [credential]

                helper = cache --timeout=300

    注意:这种方式需要使用GIt https://github.com/maple-shaw/xxxx.git 格式地址。

    8.4 补充版本命令

    git tag -a v1.0 -m '版本介绍'        本地创建Tag

    git show v1.0                       查看

    git tags -n                         查看本地Tag

    git tag -l 'v1.4.2.*'               查看本地Tag,模糊匹配

    git tag -d v1.0                     删除Tag

    git push origin :refs/tags/v0.2     更新远程tag

    git checkout v.10                   切换tag

    git fetch origin tag V1.2

    git push origin  --tags

    git pull origin  --tags

    git clone -b v0.1

    8.5 git发布

    基本管理

    git add .

    git commit -m 'xxx'

    git push origin master

    git pull origin  master

     

    版本控制

    本地创建版本信息

    git tag -a v1.1 -m 'xxx'

    把本地版本推送到远程

    git push origin --tags

    下载指定版本:

     git clone -b v1.1 https://github.com/wangxiaodong-sir/jesion.git

     

     

    1 git介绍... 1

    1.1 参数:... 1

    2 git管理一个项目... 2

    2.1 图示... 2

    2.2 cd /项目路径... 3

    2.3 git config --globle user.email  "邮箱地址". 3

    2.4 git confgi --globle user.name  'xiaodong'3

    2.5 git init3

    2.6 git log. 3

    2.7 git status. 3

    2.8 git commit -m '描述信息'3

    2.9 git log. 3

    2.10 git add .3

    3项目回滚... 4

    3.1 git reset  --hard  '唯一标识'4

    3.2 git reflog. 5

    3.3 例:完整项目管理... 5

    4 git 进阶(开发未完成时)... 6

    4.1 statsh. 6

    4.2 git stash. 6

    4.3 例:... 6

    4.4 git stash pop. 8

    4.5 git stash list8

    4.6 git stash clear8

    4.7 git stash pop. 8

    4.8 git stash  apply. 8

    4.9 git stash drop. 8

    5分支... 8

    5.1 介绍... 8

    5.2 git branch. 8

    5.3 git branch dev. 8

    5.4 git checkout  dev. 9

    5.5 git merage. 9

    5.6 git branch -d debug. 10

    5.7 实战:... 10

    6 github应用... 11

    6.1 上传下载github命令... 12

    6.2 实战GitHub. 13

    6.3 查看合并信息... 16

    7协同开发... 16

    7.1 合作者... 16

    7.2 组织... 17

    7.3 忽略合并某文件... 20

    7.4 协同开发过程... 20

    8用户凭证... 21

    8.1 秘钥... 21

    8.2 密码... 21

    8.3 相关操作:... 21

    8.4 补充版本命令... 22

    8.5 git发布    22

  • 相关阅读:
    挑战程序设计竞赛 dp
    算法导论 动态规划
    算法导论第二章
    divide conquer
    时间戳
    bootstrap 针对超小屏幕和中等屏幕设备定义的不同的类
    jQuery中的Ajax
    怎么判断一个变量是Null还是undefined
    认识Ajax
    关于apache
  • 原文地址:https://www.cnblogs.com/wang-xd/p/10385142.html
Copyright © 2020-2023  润新知