• git基础


    1. Git配置

    Git 提供了一个叫做git config 的工具,专门用来配置或读取相应的工作环境变量。这些环境变量,可以存放在以下三个不同的地方:

    • /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用git config 时用--system 选项,读写的就是这个文件。
    • ~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用git config 时用--global 选项,读写的就是这个文件。
    • 当前项目的git 目录中的配置文件(也就是工作目录中的.git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config 里的配置会覆盖/etc/gitconfig中的同名变量。

    在Windows 系统上,Git 会找寻用户主目录下的.gitconfig 文件。主目录即$HOME 变量指定的目录,一般都是C:Documents and Settings$USER。接下来配置个人的用户名称和电子邮件地址。这两条配置很重要,每次Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:

    $ git config --global user.name "John Doe";            
    $ git config --global user.email johndoe@example.com
    

    要检查已有的配置信息,可以使用git config --list 命令;
    也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:

    $ git config user.name
    abd
    $ git config user.email
    xxxxx@formail.com
    

    获取帮助常用命令

    $ git help <verb>
    $ git <verb> --help
    $ man git-<verb>
    

    2. Git基础

    2.1 取得git仓库

    从本地目录初始化一个仓库执行:

    $ git init

    初始化后,在当前目录下会出现一个名为.git 的目录,所有Git 需要的数据和资源都存放在这个目录中。.git文件也叫本地仓库

    从现有仓库克隆执行命令:git clone [url]

    $ git clone git@github.com:name/rep_name.git

    当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin

    2.2 记录更新到仓库

    工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪,在Git 内都只有三种状态:已提交(committed)已修改(modified)已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

    常用命令

    • git status : 查看当前本地仓库状态
    • git add : 跟踪新文件 ,即是把文件修改添加到暂存区(stage)
    • git commit -m "commit construction" : 提交更改,实际是把暂存区的所有内容提交到当前分支
    • git rm : 从暂存区中移除某个文件
    • git mv file_from file_to : 移动文件,在同一个目录中移动,相当于对文件重命名
    • git log : 查看提交历史
      • $ git log –p -2 : -p 选项展开显示每次提交的内容差异,用-2 则仅显示最近的两次更新
      • $ git log --pretty=oneline --pretty 选项可改变提交展示提交历史的默认格式,如用oneline将每个提交放在一行显示,这在提交数很大时非常有用
      • 其它选项 说明:
        -p 按补丁格式显示每个更新之间的差异。
        --stat 显示每次更新的文件修改统计信息。
        --shortstat 只显示--stat 中最后的行数修改添加移除统计。
        --name-only 仅在提交信息后显示已修改的文件清单。
        --name-status 显示新增、修改、删除的文件清单。
        --abbrev-commit 仅显示SHA-1 的前几个字符,而非所有的40 个字符。
        --relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
        --graph 显示ASCII 图形表示的分支合并历史。
        --pretty 使用其他格式显示历史提交信息。可用的选项包括oneline,short,full,fuller 和format(后跟指定格式)

    2.3 远程仓库的使用

    • 查看当前的远程仓库 git remote 
      git remote
      它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库。

      也可以加上-v 选项(译注:此为—verbose 的简写,取首字母),显示对应的克隆地址:

        $ git remote -v
        origin git://github.com/schacon/ticgit.git
      
    • 添加或者关联一个远程仓库 git remote add [remote_shortname] [url]
        $ git remote add ups git@server-name:path/repo-name.git
      
    • 从远程仓库抓取数据到本地 git fetch [remote_shortname]
      • 如果是克隆了一个仓库,此命令会自动将远程仓库归于origin 名下。所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次fetch 以来别人提交的更新)。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并
      • 如果设置了某个分支用于跟踪某个远端仓库的分支,可以使用git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。在日常工作中我们经常这么用,既快且好。实际上,默认情况下git clone 命令本质上就是自动创建了本地的master 分支用于跟踪远程仓库中的master 分支(假设远程仓库确实有master 分支)。所以一般我们运行git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中当前分支。
    • 推送数据到远程仓库 git push ([remote_name]) ([branch_name])
      $ git push origin master
      只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,并到自己的项目中,然后才可以再次推送。

    • 查看远程仓库信息 git remote show [remote_name]
      $ git remote show origin

    • 远程仓库的删除和重命名
      • 重命名 git remote rename [oldname] [newname]
        git remote rename pb paul
      • 删除 ** git remote rm [remote_repname]
        $ git remote rm paul

    3. Git 分支

    Git中,HEAD指针是一个指向你当前正在工作中的本地分支的指针。在切换分支时,HEAD指针指向切换后的分支。

    3.1 基本分支常用命令

    • git branch : 查看所有分支信息,当前分支前面会标一个*号
    • git branch <branch_name>: 创建分支
    • git checkout <branch_name>: 切换分支
    • git checkout -b <branch_name>: 创建同时切换到新创建的分支
    • git checkout -b <branch_name>origin/branch_name : 在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致
    • git merge <branch_name>: 合并某分支到当前分支,有冲突,先执行git status 查看哪个文件冲突,再执行git add 或者 git commit命令解决冲突
    • git branch -d <bbranch_name>: 删除分支
    • git log --graph : 查看分支合并详细图
    • git log --graph --pretty=oneline --abbrev-commit(常用此命令) : 查看分支合并缩略图(只显示每次提交的一行)

    3.2 远程分支

    3.2.1 创建和管理远程分支

    远程分支就是本地分支push到服务器上的时候产生的

    1. 创建本地分支
      git branch b1
    2. 切换本地分支
      git checkout b1
    3. 远程分支就是本地分支push到服务器上,服务器会自动创建一个和本地同名的远程分支。git push [远程仓库名]:[远程分支名]
      git push origin b1
    4. 抓取远程分支数据
      • git pull <remote_rep>这种方式没有把本地分支和远程分支链接起来
      • git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联,然后再使用git pull,如果有冲突,要先处理冲突
    5. 推送数据到远程服务器
      • 如果在当前分支,使用
        git push
        或者
        git push origin b1
      • 不在当前分支,使用
        git push origin <local_branch_name>:<remote_branch_name>
    6. 删除远程分支
      git push [远程仓库名] :[远程分支名],删除远程分支名,注意:前的空格不能少,原理是把一个空分支push到server上,相当于删除该分支

      git push origin :b1

    4. Git储藏功能(Stashing)

    经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。

    git stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。

    常用命令

    • git stash : 储藏当前工作状态
    • git stash list : 查看现有的储藏
    • git stash apply (stash_name如stash@2) : 恢复储藏,若不指定name,Git默认使用最近的储藏即是stash@1,并尝试应用它,以这种方式恢复,stash内容不删除,还需要用git stash drop来删除
    • git stash drop (stash_name如stash@{2}): 删除储藏,()表可选
    • git stash pop (stash_name如stash@{2}) : 恢复stash内容同时把stash中内容删除,()表可选

    参考:

    1. 《Pro Git》中文版
    2. 廖雪峰Git教程
    只为训练自己,时刻锤炼一个程序员最基本的技能!
  • 相关阅读:
    【学习笔记】pip3 安装使用国内源
    【学习笔记】Team Explorer for Microsoft Visual Studio2015 安装时发生严重错误
    微信聊天记录长图 打印
    Go语言中用 os/exec 执行命令的五种姿势
    Python 代码调试神器:PySnooper
    终于来了!!Pyston v2.0 发布,解决 Python 慢速的救星
    超详细讲解如何使用 pdb 在服务器上调试代码
    超详细图文教你如何使用 PyCharm 进行远程调试
    最全的 pip 使用指南,50 % 你可能都没用过~
    学 Python 一定要学会的几个高阶函数
  • 原文地址:https://www.cnblogs.com/coding-wtf/p/6058290.html
Copyright © 2020-2023  润新知