如何使用Git?

1.Git简介:

Git是目前世界上最先进的分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。

版本控制系统两大功能:
1:可以回溯历史,很容易回到之前的某个版本
2:多人合作时,很容易将代码合并到一起

分布式版本控制系统优点:项目组每个人电脑上都有版本信息的记录
普通版本控制系统:版本记录只存在于服务器上,每个人本地只有代码,而不能记录版本

官网:https://git-scm.com/

windows安装:

进入官网,点击合适的版本进行安装

ubuntu安装:

sudo apt-get install git

安装成功后使用如下命令:

git

会出现git的使用命令介绍

 

2.远程仓库的创建

1.事先注册好github账号,登陆GitHub

2.在右上角找到“new repository”按钮,创建一个新的仓库

3.仓库名可以任意取,并且可以在Description框里添加一些该仓库的描述信息

4.仓库有public和private(收费)两种模式,通常我们选择public存放一些开放源代码

5.可以对仓库进行一些初始化操作(可选):

  Add a README file-------可以在里面添加对该仓库的详细描述信息

  Add .gitignore------比如选择python,那么提交的时候会过滤掉pyc文件

  Choose a license------比如选择GNU General Public License

 

3.远程仓库克隆到本地

将github上的项目,克隆到本地一份,并将本地仓库和github上的仓库进行关联起来。在本地有权限的目录下执行,该目录下会自动生成一个远程仓库名的目录,并且在该目录下会生成.git的一个隐藏文件,切忌修改任何内容

克隆到本地有HTTPS,SSH等方式:

HTTPS方式:

命令:git clone <远程库https地址>

这种克隆方式,每次从本地库提交代码到远程库的时候都需要输入账号名和密码

SSH方式:

命令:git clone <远程库SSH地址>

这种方式首先我们需要创建项目的SSH Key:

  • 执行命令:ssh-keygen -t rsa -C "邮箱"
  • 执行命令后,在用户主目录里能找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
  • 接着登录github注册或登录账号,打开“settings”的“SSH Keys”页面,然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key
  • 测试是否能够连接:ssh -T git@github.com

这种克隆方式,之后每次从本地库提交代码到远程库,都不需要输入账号和密码

 

4.设置和查看用户名和邮箱

尽量将git客户端的用户名、邮箱和github账号的用户名、邮箱设置为完全一致

设置全局用户名和邮箱:
git config --global user.name '用户名'
git config --global user.email '邮箱地址'

查看全局用户名和邮箱:
git config --global user.name
git config --global user.email

注意:当前库的操作需要在当前库根目录下(即.git隐藏文件所在目录下)进行

设置当前库的用户名和邮箱:
git config user.name "用户名"
git config user.email "邮箱地址"

查看当前库的用户名和邮箱:
git config user.name
git config user.email

 

5.本地库与远程库交互

  • 5.1 远程库别名操作

    • 查看所有远程库别名
      git remote -v
    • 给远程库起别名
      git remote add <别名> <远程库地址>

      比如 git remote add origin https:xxx.git

    • 删除别名
      git remote remove <别名>
  • 5.2 Push  -- 使用本地分支来更新合并远程分支

    git push <远程主机名> <本地分支名>:<远程分支名>
    • 省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被创建。
      git push origin master

      将本地的master分支推送到origin主机的master分支。如果后者不存在,则会创建。

    • --delete 分支名 (表示删除分支)
      git push origin --delete dev

      表示删除origin主机上的dev分支

    • --force(忽略冲突,强制推送本地分支到远程)
      git push origin master --force

      在远程主机产生一个”非直进式”的合并(non-fast-forward merge),除非你很确定要这样做,否则应避免

    • --tags(带上该版本标签推送)
      git tag -a 'version-2.1' -m '版本2.1'
      git push origin master:master --tags

      给当前库打上version-2.1标签,并提交

  • 5.3 Pull -- 拉取并合并远程分支到本地

    git pull <远程主机> <远程分支>:<本地分支>
    • 省略本地分支,则自动合并到当前分支
      git pull origin master

6.分支操作

  • 查看分支

    git branck -v
  • 创建分支

    git branch <分支名>
  • 切换分支

    git checkout <分支名>
  • 创建并切换到该分支

    git checkout -b <分支名>
  • 删除本地分支

    git branch -d <分支名>
  • 删除远程分支

    git push <远程主机名> --delete <分支名>
  • 合并分支

    git merge <分支名>

    合并指定分支到当前分支 

7.配置Git忽略文件

  • 创建忽略规则文件git.ignore(前缀名随便起),建议放在用户家目录下
    # Byte-compiled / optimized / DLL files
    __pycache__/
    *.py[cod]
    *$py.class
    
    # C extensions
    *.so
    
    # Distribution / packaging
    .Python
    build/
    develop-eggs/
    dist/
    downloads/
    eggs/
    .eggs/
    lib/
    lib64/
    parts/
    sdist/
    var/
    wheels/
    share/python-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/
    .nox/
    .coverage
    .coverage.*
    .cache
    nosetests.xml
    coverage.xml
    *.cover
    *.py,cover
    .hypothesis/
    .pytest_cache/
    cover/
    
    # Translations
    *.mo
    *.pot
    
    # Django stuff:
    *.log
    local_settings.py
    db.sqlite3
    db.sqlite3-journal
    
    # Flask stuff:
    instance/
    .webassets-cache
    
    # Scrapy stuff:
    .scrapy
    
    # Sphinx documentation
    docs/_build/
    
    # PyBuilder
    .pybuilder/
    target/
    
    # Jupyter Notebook
    .ipynb_checkpoints
    
    # IPython
    profile_default/
    ipython_config.py
    
    # pyenv
    #   For a library or package, you might want to ignore these files since the code is
    #   intended to run in multiple environments; otherwise, check them in:
    # .python-version
    
    # pipenv
    #   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
    #   However, in case of collaboration, if having platform-specific dependencies or dependencies
    #   having no cross-platform support, pipenv may install dependencies that don't work, or not
    #   install all needed dependencies.
    #Pipfile.lock
    
    # PEP 582; used by e.g. github.com/David-OConnor/pyflow
    __pypackages__/
    
    # Celery stuff
    celerybeat-schedule
    celerybeat.pid
    
    # 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
    
    # Pyre type checker
    .pyre/
    
    # pytype static type analyzer
    .pytype/
    
    # Cython debug symbols
    cython_debug/
    
    .idea
    *.iml
    View Code
  • 在家目录下的.gitconfig 文件中引用忽略配置文件,注意路径使用‘/’连接
    [user]
        name = <用户名>
        email = <邮箱地址>
    
    [core]
        excludesfile = C:/Users/<用户目录名>/git.ignore

     

8.Git常用命令

git config --global user.name <用户名>                 设置用户名

git config --global user.email <邮箱>                 设置用户邮箱

git init                                              初始化本地库

git status                                            查看本地库状态

git add <文件名>                                       添加文件到暂存区

git commit -m "日志信息" <文件名>                       提交到本地库

git reflog                                           查看历史版本记录

git reset --hard <版本号>                              版本穿梭

 

posted @ 2020-12-26 03:02  eliwang  阅读(130)  评论(0编辑  收藏  举报