zoukankan      html  css  js  c++  java
  • git常用命令与操作

    参考:https://www.cnblogs.com/wupeiqi/p/7295372.html

    设置账号

    commit之前要先设置账号
    
    git config --global user.email 'xx@xxx.com'
    git config --global user.name 'xxx'

    git常用命令

    git init                          初始化,表示即将对当前文件夹进行版本控制。
    git status                        查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。
    
    git add <文件>                     将指定文件添加到版本库的暂存状态。
    git add .                         将全部文件添加到版本库的暂存状态。
    git checkout <文件>                从暂存状态拿回工作区
    git commit -m '提交信息'           将暂存区的文件提交到版本库的分支。
    git commit -a -m '提交信息'        ====> 相当于两条命令: 1 git add .   2 git commit -m '提交信息'
    
    git log                            查看提交记录,即:历史版本记录
    git reflog                         查看版本历史(更详细)
    
    git reset --hard <版本号>           回到某一个版本

    git stash和git branch

    方式一 git stash

    git stash             将工作区(红色的文件)的文件暂存都"某个神奇的地方"
    git stash pop         将"某个神奇的地方"的第一个记录拿到当前工作区
        1 自动合并
        2 出现冲突(需要手动解决冲突)
        
    git stash list                 查看'某个神奇的地方'存储的所有记录
    git stash clear                清空'某个神奇的地方'
    git stash apply <编号>          将指定编号的记录拿回工作区
    git stash drop <编号>           将指定编号的记录从工作区删除

    方式二 git branch

    注意:千万不要在master分支上做开发

    git branch <分支名>            【在当前分支上】创建分支
    git checkout <分支名>        切换分支
    git branch -d <分支名>        删除分支
    git merge <分支名>            将分支合并到当前分支
        会产生一条合并记录
        可能会产生冲突(如果两个分支都修改了同一条记录)
    git branch                    查看分支

    合并分支时的三种情况?

    1 【直接合并】主分支有的功能, 子分支都有, 并且子分支开发了新功能
    2 【会产生一条合并记录】主分支有的【部分】功能, 子分支没有, 并且子分支开发了新功能
    3 【会产生冲突,需要自己手动去处理冲突】主分支和子分支修改了同一条代码

    本地与云端的交互

    代码托管的网站: github Bitbucket 码云
    自己创建代码托管的网站: gitlab

    1 git remote add origin https://github.com/....            将远程仓库添加个别名        # origin就是后面仓库地址的别名
    2 git push -u origin master                                把master推到origin远程仓库
    3 git clone <仓库地址>                                      下载仓库代码
    4 git pull origin dev                                      把分支dev拉取到本地(注意:先自己在本地建个分支dev)
    
    git fetch origin dev         将远程分支拉倒本地版本库
    git merge origin/dev         将本地origin/dev合并到工作区        ===>  上面两条命令相当于:  git pull origin dev
    
    git rebase origin/dev        (==> 相当于git merge origin/dev, 但这是去看合并历史不会出现分叉)        # 保持提交记录的整洁

    git之多人协同开发

    1 允许他人操作程序
      - 合作者 (仓库-->setting-->collaborators)
      - 创建组织 (new organization)

    2 分支
      - master
      - dev
        - sch
        - xdb

    3 协同开发规则
      一起合并
      合并时间:(一般1-2天)小功能开发好了合并一次

      问题: git push origin dev 可能会报错
      解决办法:先 git pull origin dev 拉取代码

      创建review分支

    给别人代码贡献力量

    问题: 怎么在github上给别人代码添加功能?

    1 fork
    2 添加完功能
    3 pull request

    其他

    1 不用反复输入用户名密码

    方式一: https

    git remote add origin https://用户名:密码@github.com/......

    方式二: ssh

    1 先在本地电脑生成公钥私钥: ssh-keygen.ext
    2 把公钥到github上设置
    3 通过git@github.com:...下载仓库代码

    2 创建忽略文件

    1 项目目录下: vim .gitignore

    # Byte-compiled / optimized / DLL files
    
    # pycharm
    .idea/
    .DS_Store
    offline-script/
    media/
     
    # database migrations
    */migrations/*.py
    !*/migrations/__init__.py
     
     
    __pycache__/
    *.py[cod]
    *$py.class
     
    # Django stuff:
    *.log
    local_settings.py
    *.sqlite3
     
     
    # C extensions
    *.so
     
    # Distribution / packaging
    .Python
    build/
    develop-eggs/
    dist/
    downloads/
    eggs/
    .eggs/
    lib/
    lib64/
    parts/
    sdist/
    var/
    wheels/
    *.egg-info/
    .installed.cfg
    *.egg
    MANIFEST
     
    # PyInstaller
    #  Usually these files are written by a python script from a template
    #  before PyInstaller builds the exe, so as to inject date/other infos into it.
    *.manifest
    *.spec
     
    # Installer logs
    pip-log.txt
    pip-delete-this-directory.txt
     
    # Unit test / coverage reports
    htmlcov/
    .tox/
    .coverage
    .coverage.*
    .cache
    nosetests.xml
    coverage.xml
    *.cover
    .hypothesis/
    .pytest_cache/
     
    # Translations
    *.mo
    *.pot
     
     
    # Flask stuff:
    instance/
    .webassets-cache
     
    # Scrapy stuff:
    .scrapy
     
    # Sphinx documentation
    docs/_build/
     
    # PyBuilder
    target/
     
    # Jupyter Notebook
    .ipynb_checkpoints
     
    # IPython
    profile_default/
    ipython_config.py
     
    # pyenv
    .python-version
     
    # celery beat schedule file
    celerybeat-schedule
     
    # SageMath parsed files
    *.sage.py
     
    # Environments
    .env
    .venv
    env/
    venv/
    ENV/
    env.bak/
    venv.bak/
     
    # Spyder project settings
    .spyderproject
    .spyproject
     
    # Rope project settings
    .ropeproject
     
    # mkdocs documentation
    /site
     
    # mypy
    .mypy_cache/
    .dmypy.json
    dmypy.json
    .gitignore

    2 可以在创建github仓库时选上

    3 版本

    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
  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/sunch/p/10409379.html
Copyright © 2011-2022 走看看