git 命令

git init       // git 初始化,建立一个空的本地仓库

git clone 分支地址               // 克隆分支,该命令会在本地生成一个目录,与远程主机的分支名相同

git clone 分支地址 本地目录名         // 克隆分支,该命令会在本地生成一个指定名称的目录

git clone -o 主机名 分支地址            // 给远程主机命名。 克隆分支的时候,所使用的远程主机会被 git 自动命名为 origin ,如果想使用其他主机名就需要用该命令

git checkout 分支名称          // 切换分支

git checkout -b 新分支名称 老分支名称         // 基于某分支创建新分支

git commit -m '备注'        // 提交代码到本地仓库

git merge  分支名             // 合并指定分支到当前分支

git status                           // 查看当前分支信息

git remote 系列 【 为方便管理,git要求每一个远程仓库必须有一个名字。git remote 就是用来管理远程仓库的 】

git remote             // 列出所有的远程仓库

git remote -v        // 查看远程仓库网址

git remote show 仓库名        // 显示仓库的详细信息

git remote add 仓库名 网址         // 添加远程仓库

git remote rm 仓库名                // 删除远程仓库

git remote rename 仓库名 新仓库名        // 重命名仓库

git pull 系列

git pull                                  // 拉取远程分支到本地

git pull 仓库名 分支名 :本地分支名         // 拉取指定的远程分支到本地,并与本地的制定分支合并

git pull 仓库名 分支名            // 拉取指定的远程分支到本地,并与当前分支合并(也就是说当要合并的是当前分支,上面一条命令的 ‘ : 本地分支名 ’可省略)

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的 release 分支自动"追踪" origin/release 分支

git branch --set-upstream 本地分支名 仓库名/远程分支名              // 建立追踪关系
举个栗子: git branch --set-upstream release origin/release        // 指定release分支追踪远程origin/release分支

git pull 仓库名        // 拉取当前分支在远程仓库的追踪分支,并合并

git pull -p                // 删除在远程仓库已经删除的分支(如果远程仓库删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支)

git push 系列

git push 仓库名 本地分支名 :远程分支名            // 推送本地分支内容到远程仓库指定分支,如果该远程分支不存在,则会被新建。

git push 仓库名 本地分支名      // 省略远程分支名,表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

git push 仓库名 :远程分支名        // 省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

git branch 系列 【分支管理】

git branch                      // 查看本地分支,并且在当前分支前面加 * 号标识

git branch -r                   // 查看远程分支,

git branch -a                  // 查看所有分支,包括本地分支和远程分支,同样在当前分支前面加 * 号标识

git branch 分支名         // 创建新分支,但不会自动切换到新分支,仍在当前分支

git branch 新分支名 老分支名                // 基于某分支创建新分支;作用等同于 【 git checkout -b 新分支名称 老分支名称 】

git branch -m | -M 分支名 新分支名         // 分支重命名,若新分支名已存在,则需要使用 -M 强制命名;否则则使用 -m 即可

git branch -d  | -D 分支名           // 删除分支

git branch -d -r 分支名               // 删除远程分支

git branch 分支名         // 创建分支

git help branch            // git branch的帮助文档

举个栗子(帮助文档中的原案例):


git add 系列

git add 文件路径         // 添加版本控制

git add -A         // 提交所有变化 [ A 即 all ]
git add -u         // 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) [ u 即 update ]
git add .           // 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

git log 系列 【日志、记录管理】

1. git log          // 列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者、提交日期、和提交说明。如果记录过多,则按Page Up、Page Down、↓、↑来控制显示;按q退出历史记录列表。

2. git log -n             // n表示条数;如果不想向上面那样全部显示,可以选择显示前n条。

3. git log --stat -n       // 简要的显示增改的行数统计,及提交的变更文件的统计,-n 同上,前n条,可省略。列出修改过的文件以及其中添加和移除的行数,并在最后列出修改文件的个数及所有增减行数小计

4. git log -p -n          // 作用基本同上,但是所展示内容更为详细,详细的列出每个文件修改的内容。

5. git log --graph         // ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况(我觉得并不常用)

6. git log --pretty=oneline          // 一行显示,只显示哈希字串和提交说明。

7. git log --pretty=format:" "  -n          // 控制显示的记录格式,-n 同上,前n条,可省略。常用的格式占位符写法及其代表的意义如下:

    %H        提交对象(commit)的完整哈希字串
    %h         提交对象的简短哈希字串
    %T         树对象(tree)的完整哈希字串
    %t          树对象的简短哈希字串
    %P         父对象(parent)的完整哈希字串
    %p         父对象的简短哈希字串
    %an       作者(author)的名字
    %ae       作者的电子邮件地址
    %ad       作者修订日期(可以用 -date= 选项定制格式)
    %ar        作者修订日期,按多久以前的方式显示
    %cn        提交者(committer)的名字
    %ce        提交者的电子邮件地址
    %cd        提交日期(可以用 -date= 选项定制格式)
    %cr         提交日期,按多久以前的方式显示
    %s          提交说明

7.1 带颜色的日志:

       以这句为例:  git log --pretty=format:'%Cred%h%Creset -%C(yellow)%s %Cgreen(%cd) %C(bold blue)<%an>' --date=format:'%Y-%m-%d %H:%M:%S'

       效果如图:

       详解:

                    先断句:[%Cred%h][%Creset -][%C(yellow)%s][%Cgreen(%cd)][%C(bold blue)<%an>]
                    然后是很明显能得到的规律了;
                            一个颜色 + 一个内容
                            颜色以%C开头,后边接颜色,还可以设置字体,如果要设置字体的话,要一块加个括号
                                     能设置的颜色值包括:reset(默认的灰色),normal, black, red, green, yellow, blue, magenta, cyan, white
                                     字体属性则有bold, dim, ul, blink, reverse
                                    内容可以是占位符,也可以是直接显示的普通字符

8. git log 文件名          // 指定文件名;只列出关于指定文件的提交历史记录

    git log *文件名        // 该命令后边的路径还支持正则,比如:git log *_list.html

   另外,文件名应该放到参数的最后位置,通常在前面加上 -- 并用空格隔开表示是文件


9. 指定时间、提交人、关键字等

-(n) 仅显示最近的 n 条提交                                           

--grep 仅显示指定关键字的提交。                                  // 如指定关键字为“优化”的所有提交: git log --grep=优化

--since, --after 仅显示指定时间之后的提交。                // 如9月18号之后的所有提交:git log --since=2017.09.18

--until, --before 仅显示指定时间之前的提交。              // 如两天前的提交历史:git log --before=2.days

--author 仅显示指定作者相关的提交。                          // 如指定作者为"BeginMan"的所有提交:$ git log --author=BeginMan

--committer 仅显示指定提交者相关的提交。               // 如指定提交者为"Jack"的所有提交:$ git log --committer=Jack

              注意:以上选项后面的参数可以带单双引号,如--author="BeginMan"

                       作者和提交者的区别不知道是啥?
                      作者与提交者的关系:作者是程序的修改者,提交者是代码提交人(自己的修改不提交是怎么能让别人拉下来再提交的?)
                     其实作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交到仓库的人。所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是作者,而那个核心成员就是提交者(懂了吗?其实我也没看懂。。。)

              举个栗子:如果要查看 Git 仓库中,2017 年 3 月期间,gitster 提交的脚本,可以用下面的查询命令:

                      git log --pretty="%h - %s" --author=gitster --since="2017-03-01" \
                      --before="2017-04-01"  /

10. git log --no-merges
        默认情况下git log会输出merge commit.  你可以通过--no-merges标记来过滤掉merge commit;
        另外,如果你只对merge commit感兴趣可以使用 —merges:git log --merges。

10. -S"<string>"、-G"<string>"
    有时你想搜索和新增或删除某行代码相关的commit. 可以使用这条命令
    假设你想知道Hello, World!这句话是什么时候加入到项目里去的,可以用:git log -S"Hello,World!"
    另外:如果你想使用正则表达式去匹配而不是字符串, 那么你可以使用-G代替-S.
    这是一个非常有用的debug工具, 使用他你可以定位所有跟某行代码相关的commit. 甚至可以查看某行是什么时候被copy的, 什么时候移到另外一个文件中去的
    注:-S后没有"=",与查询内容之间也没有空格符

总结:

git log 命令支持的选项

-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(后跟指定格式)。


git 版本回退

git reset --hard 版本号           // 回退到制定版本

git push -f -u origin 分支名     // 强制推送到远程服务器




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值