Git知识点记录3-Git基础

1.设置全局的用户名和邮箱属性
    git config --global user.name "Tom"
    git config --global user.email "Tom@163.com"
  设置文本编辑器
    git config --global core.editor "'E:\Program Files (x86)\EditPlus\EditPlus\EditPlus\EditPlus.exe'"

2.查看配置信息
    git config --list
 查看某个属性值: git config <属性值>  


3.获取帮助
    git help <verb>
    git <verb> --help
    man git-<verb>

4.获取git仓库
    4.1.初始化git仓库:
        git init
    4.2.克隆git仓库
        git clone <url>

5.查看当前文件处于的状态
    git status
    如果你使用 git status -s 命令或 git status --short 命令,你将得到一种格式更为紧凑的输出。

6.跟踪新文件或将已跟踪文件修改后, 放入暂存区
    git add ... -> 将指定文件添加到暂存区
    git add * -> 所有文件添加到暂存区

7.查看已暂存和未暂存的修改
    git diff -> 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异
    git diff --staged | git diff --cached -> 这条命令将比对已暂存文件与最后一次提交的文件差异
    git difftool -> 调用 emerge 或 vimdiff 等软件(包括商业软件)输出 diff 的分析结果, 比较工作目录中当前文件和暂存区域快照之间的差异
    git difftool --cached(staged) -> 调用 emerge 或 vimdiff 等软件(包括商业软件)输出 diff 的分析结果, 比较已暂存文件与最后一次提交的文件差异

8.提交更新
    git commit
    git commit -m "提交信息说明" -> 将提交信息与提交命令放在同一行
    git commit -a -> Git 就会自动把所有已经跟踪过的文件暂存起来一并提交, 从而跳过 git add
    git commit -a -m "xxx" -> 不需要先执行git add添加文件到暂存区, 直接提交和添加暂存一起执行

9.移除文件
    git rm    -> 从已跟踪文件清单中移除(确切地说,是从暂存区域移除), 并连带从工作目录中删除指定的文件
    git rm -f -> 如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f(译注:即 force 的首字母)
    git rm --cached xxx -> 想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中
    git rm log/\*.log -> 列出文件或者目录的名字, 此命令删除 log/ 目录下扩展名为 .log 的所有文件
    git rm \*~ -> 该命令会删除所有名字以 ~ 结尾的文件。

10.移动文件
    git mv file_from file_to -> 要在 Git 中对文件改名

11.查看提交历史 和 限制输出长度
    git log    -> 按时间先后顺序列出所有的提交,最近的更新排在最上面
    git log --patch | git log -p -> 会显示每次提交所引入的差异
    git log -n -> 只显示最近的n次提交
    git log --stat -> 显示每次提交的简略统计信息(文件修改统计信息)
    git log pretty=oneline(short|full|fuller) -> 可以使用不同于默认格式的方式展示提交历史, =选项不同详尽程度不一
    git log pretty=format:"%h ..."    -> 定制记录的显示格式, ""中的内容就是格式, 具体百度

    git log --since=2.weeks -> 列出最近两周的所有提交
    git log --since(after) -> 仅显示指定时间之后的提交
    git log --until(before) -> 仅显示指定时间之前的提交
    git log --author -> 仅显示作者匹配指定字符串的提交
    git log --committer -> 仅显示提交者匹配指定字符串的提交
    git log --grep -> 仅显示提交说明中包含指定字符串的提交
    git log -S -> 仅显示添加或删除内容匹配指定字符串的提交

12.撤消操作
    git commit --amend -> 如果上次提交以来未做任何修改(例如,在上次提交后马上执行了此命令),快照会保持不变,而修改的只是提交信息
    
    示例1: 本次提交之后发现提交信息写错了, 执行命令: git commit --amend, 前提是提交之后没做任何修改

    示例2: 本次提交之后发现有文件漏了暂存并提交, 执行如下命令:
        git add ** -> 先暂存文件
        git commit --amend -> 可以改也可以不该提交信息, 然后保存即可, 此文件就在之前的提交中了, 而且没有多余的其他提交记录

13.取消暂存或工作空间的文件

    示例1: 修改了两个被追踪的文件, 执行了git add * 暂存了两个文件, 但是想分别作为两个独立的文件进行两次提交, 如何取消其中一个文件的暂存呢?
        其实git status命令就已经给出了提示:
            git status之后会发现有一个提示命令: use "git restore --staged <file>..." to unstage
        所以执行命令: git restore --staged <file>... 就可以取消暂存, 回到未暂存的状态

    示例2: 修改了文件, 但是还没有暂存, 不想保留想要撤回修改, 将它还原成上次提交时的样子
        其实git status 也已经给出了提示
            git status之后会发现提示命令: use "git restore <file>..." to discard changes in working directory
        所以执行命令: git restore <file> 就可以撤销修改了

14.查看远程仓库
    git remote -> 如果想查看已经配置的远程仓库服务器可执行此命令, 会列出你指定的每一个远程服务器的简写,如果已经克隆了仓库,那么至少应该能看到 origin(Git给克隆的仓库服务器的默认名字)
    git remote -v -> 会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL

15.添加远程仓库
    git clone 命令可以自行添加远程仓库的, 但是这里是自己来添加, 命令:git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定简写(类似origin)

    示例1: git remote add demo-git https://github.com/Tome/git/demo-git.git
        现在你可以在命令行中使用字符串 demo-git 来代替整个 URL。如果你想拉取仓库中有但你没有的信息,可以运行 git fetch demo-git

16.从远程仓库中抓取与拉取
    git fetch <remote> -> 从远程仓库中获得数据,会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看

        如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)
    后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

17.推送到远程仓库
    git push <remote> <branch> -> 分享你的项目时,必须将其推送到上游。

    git push origin master -> 只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效, 否则被拒绝, 必须先拉取他人的推送合并

18.查看某个远程仓库
    git remote show <remote> -> 查看某一个远程仓库的更多信息, 会列出远程仓库的 URL 与跟踪分支的信息,它告诉你正处于什么分支

    git remote show origin -> 查看远程仓库origin的信息

19.远程仓库的重命名与移除
    git remote rename oldname newname -> 修改一个远程仓库的简写名

    git remote rename demo-git git -> 将之前远程仓库名的简写从demo-git改为git
    git remote remove demo-git 或 git remote rm demo-git -> 想要移除一个远程仓库demo-git

20.打标签
    20.1.列出标签
        git tag (可带上可选的 -l 选项 --list) -> 在 Git 中列出已有的标签
        git tag -l "v1.8.5*" -> 只查询1.8.5系列的标签(按照通配符列出标签需要 -l 或 --list 选项)

    20.2.创建标签
        Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)
            ①轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。
            ②而附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息
            ,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签
            ,或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。

        附注标签:
            git tag -a v1.4 -m "my version 1.4" -> -m 选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会启动编辑器要求你输入信息。

            git show 命令可以看到标签信息和与之对应的提交信息

        轻量标签:
            不需要使用 -a、-s 或 -m 选项,只需要提供标签名字
            git tag v1.4

            git show 命令可以看到标签信息和与之对应的提交信息
    
    20.3.后期打标签:
        也可以对过去的提交打标签。要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和, git log可以查询):
        例如: git tag -a v1.2 9fceb02
        git show 可以查看

    20.4.共享标签:
        默认情况下,git push 命令并不会传送标签到远程仓库服务器上。在创建完标签后你必须显式地推送标签到共享服务器上。
        git push origin <tagname>  -> 推送某个标签
        git push origin --tags -> 要一次性推送很多标签

    20.5.删除标签
        git tag -d <tagname> -> 删除掉你本地仓库上的标签, 并不会从任何远程仓库中移除这个标签
        git push <remote> :refs/tags/<tagname> -> 从任何远程仓库中移除这个标签, 含义是,将冒号前面的空值推送到远程标签名,从而高效地删除它
        git push origin --delete <tagname> -> 更直观的删除远程标签的方式

    20.6.检出标签
        git checkout

21.Git别名
    可以通过 gitconfig 文件来轻松地为每一个命令设置一个别名, 如下:
        $ git config --global alias.co checkout
        $ git config --global alias.br branch
        $ git config --global alias.ci commit
        $ git config --global alias.st status
    意味着,当要输入 git commit 时,只需要输入 git ci

22.stash
  git stash -> 将当前分支的工作隐藏起来, 就可以已切换分支了
  git stash list -> 查看当前隐藏的工作

  恢复stash:
    ①.git stash apply -> 恢复, 回复之后还需要使用命令git stash drop来删除
    ②.git stash pop -> 恢复的同时把stash内容也删除了

23.拉取
  git pull
  如果失败:
    git branch --set-upstream-to=dgit/<branch> test -> 绑定远程test和本地分支<branch>, 然后就可以pull了

24.查看分支
  git branch

25.分支创建
  git branch <name> -> 创建分支, 指定名字

26.分支切换
  git checkout <name> -> 切换到name的分支

27.创建新分支的同时切换过去
  git checkout -b <newbranchname>

28.删除分支
  git branch -d <name> -> 删除本地分支

  git push dgit -d <name> -> 删除远程分支

29.分支的新建与合并
  git merge <branchname> -> 将branchname的分支合并到当前分支

30.遇到冲突时的分支合并
  如果你想使用图形化工具来解决冲突,你可以运行 git mergetool

31.分支管理
  git branch 命令不只是可以创建与删除分支。 如果不加任何参数运行它,会得到当前所有分支的一个列表

  git branch -v -> 查看每一个分支的最后一次提交

32.远程分支
  git remote show <remote> -> 获得远程分支的更多信息

33.推送分支
  git branch <name> -> 先创建
  git push dgit <name> -> 推送

posted @ 2020-07-03 15:21  KILLNPE  阅读(162)  评论(0编辑  收藏  举报