Git Remote

Git Remote命令官方解释是:管理和设置当前分支跟踪的仓库;原文Manage the set of repositories ("remotes") whose branches you track.

$ git remote        # 查看当前分支跟踪(远程)仓库别名(一般为origin,以下统一采用该别名)
$ git remote <-v | --verbose>     # 查看跟踪仓库别名及地址
$ git remote show <origin>    # 查看跟踪仓库地址及分支情况

$ git remote add <origin> <url>   # 添加跟踪仓库别名及对应的跟踪地址 

# 更新指定跟踪仓库名的地址
$ git remote set-url [--push] <origin> <newurl> [<oldurl>] 
$ git remote set-url --add <origin> <newurl>
$ git remote set-url --delete <origin> <url>
    [--push]                # manipulate push URLs(操作push的URL)
    [--add]                # add URL
    [--delete]              # delete URLs

$ git remote <remove|rm> <origin>     # 删除指定的跟踪仓库名
$ git remote rename <old> <new>       # 重命名跟踪仓库名

# 设置或删除跟踪仓库的HEAD指向指定分支,命令行中的圆括号表示必选其中之一执行
$ git remote set-head <origin> (-a | --auto | -d | --delete | <branch>) 
    [-a|--auto]         # set refs/remotes/<name>/HEAD according to remote
    [-d|--delete]       # delete refs/remotes/<name>/HEAD

# 清理存在过但现在不存在的本地跟踪分支的引用
$ git remote prune [<options>] <origin> 
    [-n|--dry-run]         # dry run(试运行,彩排)

Git Config

Git配置存在适用范围:

  • 项目范围: git config # 保存在项目根目录.git/config文件
  • 系统用户范围: git config - -global # 保存在用户根目录.gitconfig文件

便于使用,我们通常配置系统用户范围;一些具体配置如下

# 列出所有配置,grep可过滤具体Command命令
$ git config --list [| grep command]
$ git config -l [| grep command]

$ git config --global user.name "username"     # 设置全局用户名(提交历史可见)
$ git config --global user.email "email"     # 设置全局邮箱(提交历史可见)
$ git config --global color.ui <true|false>   # Git会显示适当地颜色[打开|关闭]
$ git config --global core.editor <emacs>       # 设置文本编辑器emacs
$ git config --global merge.tool <vimdiff>      # 设置差异分析工具vimdiff

# 设置命令别名;命令别名列举(可自定义其他别名)
$ git config --global alias.<aliasname> <command>   # 使用别名aliasname代替command
$ git config --global --unset alias.<aliasname>   # 取消别名aliasname设置
    > status [st]
    > commit [ci]
    > checkout [co]
    > branch [br]
    > diff [df]
    > cherry-pick [cp]
# 配置完别名之后,将在对应配置文件产生记录(可直接在该文件配置)
    [alias]  
      st = status  
      ci = commit  
      br = branch  
      co = checkout  
      df = diff 
      cp = cherry-pick

# 处理不同平台换行操作符(如警告: warning: LF will be replaced by CRLF in ...)
$ git config  --global  core.autocrlf <false|true> 

$ git config  --global --unset-all core.ignorecase    # 取消所有关于是否忽略Git大小写的设置
$ git config  --global --system core.ignorecase <false|true>   # 设置Git是否忽略大小写

Git Stash

当你正在实现一个未完成的功能feature时,突然有个优先级更高的任务或者坑闯入你的任务栈,你不得不移情别恋到新的任务,然后,手头的修改又不足以做一个完整的commit,此时就需要暂存statsh你当前的改变。

$ git stash --help         # 查看帮助
$ git stash     # 将当前的改变暂存起来
$ git stash save [message]  # 暂存当前改变,且为暂存添加描述信息
$ git stash list         # 查看暂存列表

$ git stash apply         # 恢复最近的暂存,不删除暂存
$ git stash pop         # 恢复最近的暂存,并删除暂存
$ git stash drop        # 删除最近的暂存 
$ git stash clear       # 删除所有暂存

$ git stash show [<stash>]       # 显示最近的暂存(或指定具体的暂存)
  eg: git stash show -p stash@{1}  # 显示第二次暂存文件的具体改变

# 创建并切换分支,且将最近的暂存(默认)或具体某次暂存移动到新分支
$ git stash branch <branchname> [<stash>]   

阅读全文

Git 标签

$ git tag --help     # 查看帮助

[查看标签]

$ git tag [-l [regular]]        # 查看所有标签列表[list [正则过滤结果]]
$ git show <tag-name>     # 查看标签tag-name信息

[创建/切换标签]

$ git tag <v1.0>     # 创建轻量级标签v1.0
$ git tag <tag-name> <commitID>     # 指定CommitID处创建标签tag-name
$ git tag [-a] <tag-name> -m "<info>"     # 创建待注释[annotate]信息info的标签tag-name

$ git checkout <tag-name>     # 切换状态到指定标签提交处

[删除标签]

$ git tag -d <tag-name>     # 删除标签tag-name(多个标签用空格分隔)
$ git push remote_name  :refs/tags/<tag-name>    # 删除远程标签(冒号前的空格不能省略)

[获取/推送远程标签]

$ git pull [remote_name] --tags     # 获取远程所有标签(remote_name可选)
$ git push [remote_name] --tags     # 推送所有未推送到远程的本地标签(注:存在两条横线,横线与tags之间没有空格)
$ git push [remote_name] <tag-name>        # 将标签tag-name推送到远程