zoukankan      html  css  js  c++  java
  • git学习一——Pro-Git

    1、配置用户名,邮箱

    git config --global user.name "Mike"
    git config --global user.email Mike@example.com

    2、查看配置信息

    git config --list

    也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可

    git config user.name

    3、获取帮助

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

     例如 git help config

    4、初始化仓库

    git init

    5、克隆仓库到本地

    git clone url <自定义项目目录名称>

    6、检查当前文件状态

    git status

    7、跟踪新文件

    git add fileName

    8、忽略某些文件

    创建一个名为.gitignore的文件,列出要忽略的文件模式

    cat .gitignore
    *.[oa]
    *~

    第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现 的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件 (比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以 自动 生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

    文件 .gitignore 的格式规范如下:
    • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
    • 可以使用标准的 glob 模式匹配。
    • 匹配模式最后跟 斜杠(/)说明要忽略的是目录。
    • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取 。

    所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配 任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?) 只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配 (比如 [0-9] 表示匹配所有 0 到 9 的数字)。 

    9、查看具体的修改

    git status只能查看修改过的文件,使用git diff可以查看具体修改的地方

    1)查看尚未暂存的文件更新了哪些部分

    git diff

    这个命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容

    2) 查看已经暂存的文件和上次提交时的快照之间的差异

    git diff --cached

    Note:单单git diff只是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行git diff后却什么也没有,就是这个原因。

    10、提交更新

    每次准备提交前,先用git status查看是不是都已暂存起来了,然后再运行提交命令git commit

    git commit -m description

    在一行命令中提交更新

    记住,提交时记录的是暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对项目做一次快照,以后可以回到这个状态,或者进行比较。

    11、跳过使用暂存区域

    在提交的时候,给git commit 加上-a选项,git就会自动把所有已经跟踪过的文件暂存一并提交,从而跳过git add步骤

    git commit -a -m description

    12、移除文件

    使用git rm命令,从已跟踪文件清单中移除,即从暂存区域移除,并从工作目录中删除指定文件

    git rm fileName

    最后提交的时候,该文件就不再纳入版本管理。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项-f。

    另一种情况是我们需要从git仓库删除某个文件,但希望保留在当前工作目录中。也就是说只是从跟踪清单中删除。比如一些大型日志文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在.gitignore文件中补上,用--cached选项即可

    git rm --cached fileName

      

    13、移动文件

    git mv file_from file_to

    14、查看提交历史 

    git log #按提交时间列出所有的更新,最近的更新排在最上面
    git log -p -2  # -p选项展开显示每次提交的内容差异  -2 则显示最近的两次更新
    git log --stat # 仅显示简要的增改行数统计
    git log --pretty=option  # 指定使用完全不同于默认格式的方式展开提交历史
    git log --pretty=online #将所有提交在一行显示
    git log --pretty=format:"指定格式" # 定制要显示的记录格式
    git log --pretty=format:"%h - %n, %ar:%s"

    限制输出长度还有一些其他常用的选项:

    选项 说明
    -(n) 仅显示最近的 n 条提交
    --since, --after 仅显示指定时间之后的提交。

    --until, --before 仅显示指定时间之前的提交。

    --author 仅显示指定作者相关的提交。

    --committer 仅显示指定提交者相关的提交。 

    15、撤销操作

    1)修改最后一次提交

    撤销刚才的提交操作,可以使用--amend选项重新提交

    git commit --amend

    此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行命令的话,相当于有机会重新编辑提交说明,而所提交的文件快照和之前的一样。

    如果刚才提交时忘了暂存某些修改,可以补充上暂存操作,然后再运行--amend提交 

     2)取消已经暂存的文件

    git reset HEAD <fileName>

    3)取消对文件的修改

    对为暂存区域的文件,取消修改,回到之前的状态 

    git checkout -- <fileName>

    16、远程仓库的使用

    1)查看当前的远程库

    git remote
    git remote -v # 显示对应的克隆地址

    2)添加远程仓库

    添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用

    git remote add [shortname] [url]

    3) 从远程仓库抓取数据

    git fetch [remote-name]

    fetch命令只是将远端数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。如果设置了某个分支用于跟踪某个远端仓库的分支,可以使用git pull命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。

    4)推送数据到远程仓库

    将本地仓库中的数据推送到远程仓库

    git push [remote-name] [branch-name]

    5)查看远程仓库的信息

    git remote show [remote-name]

    6)远程仓库的删除和重命名

    git remote rename orginName newName # 修改某个远程仓库的简短名称
    git remote rm remoteName # 移除对应的远端仓库

    17、打标签

    1)列显现有标签的命令

    git tag

    2) 新建标签

    标签有两种类型:轻量级标签和含附注的标签。

    轻量级标签:像是个不会变化的分支,实际上它就是个指向特定提交对象的引用,保存着对应提交对象的校验和信息的文件

    含附注标签:存储在仓库中的一个独立对象,有自身的校验和信息,包含着标签名字,电子邮件和日期以及标签说明,标签本身也允许使用GPG来签署和验证。

    一般建议使用含附注型标签,以便保留相关信息;如果只是零时性加注标签,或者不需要其他旁注额外信息,用轻量级标签也没问题。

    i. 含附注的标签

    git tag -a tagName -m "description for tag"

    查看相应标签的版本信息,并连同显示打标签时的提交对象。

    git show tagName

    ii. 轻量级标签

    git tag tagName

    3) 后期加注标签

    可以后期对早期某次提交加注标签

    git log --pretty=oneline  # 显示所有历史提交
    git tag -a tagName 校验和  # 打标签时跟上对应提交对象的校验和(或前几位字符) 

    4)分享标签

    默认情况下,git push并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库

    git push remoteName [tagName]

    如果要一次推送所有(本地新增的)标签上去,可以使用--tags选项

    git push remoteName --tags

    18、git命令别名

    git config --global alias.别名 原名

    下面看几个例子

    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即可。

    2)创建新命令

    比如取消暂存文件时输入比较繁琐

    git reset HEAD fileName

    可以设置一下

    git config --global alias.unstage 'reset HEAD --'

    因此只需要输入git unstage fileName即可

    设置last命令

    git config --global alias.last 'log -l HEAD'

    使用git last即可查看最后一次提交信息

  • 相关阅读:
    wget(转)
    852. Peak Index in a Mountain Array
    617. Merge Two Binary Trees
    814. Binary Tree Pruning
    657. Judge Route Circle
    861. Score After Flipping Matrix
    832. Flipping an Image
    461. Hamming Distance
    654. Maximum Binary Tree
    804. Unique Morse Code Words
  • 原文地址:https://www.cnblogs.com/YangqinCao/p/6786260.html
Copyright © 2011-2022 走看看