zoukankan      html  css  js  c++  java
  • git常用命令

    1、初始化仓库

    $ git init 初始化

    在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.

    $ git add 仓库跟踪

         在提交之前,Git有一个暂存区(staging area),可以放入新添加的文件或者加入新的改动. commit时提交的改动是上一次加入到staging area中      的改动,而不是我们disk上的改动.

         git add .

         会递归地添加当前工作目录中的所有文件.

    $ git commit 提交更新 $ git commit -a 跳过跟踪直接提交暂存

         提交已经被add进来的改动.

         git commit -m “the commit message"

         git commit -a 会先把所有已经track的文件的改动add进来,然后提交(有点像svn的一次提交,不用先暂存). 对于没有track的文件,还是需要git add一下.

         git commit --amend 增补提交. 会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消.

    $ git clone [url] 克隆仓库文件

    获取一个url对应的远程Git repo, 创建一个local copy.

            一般的格式是git clone [url].

            clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定.

    $ git clone [url] [文件夹名] 克隆到自定义名文件夹

    $ git status 查看跟踪情况 简单格式 $ git status -s

         查询repo的状态.

         git status -s: -s表示short, -s的输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言.

    新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M标记。 你可能注意到了 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。 例如,上面的状态报告显示: README文件在工作区被修改了但是还没有将修改后的文件放入暂存区,lib/simplegit.rb 文件被修改了并将修改后的文件放入了暂存区。 而 Rakefile 在工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。

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

    $ cat .gitignore

    *.[oa]

    *~

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

    文件 .gitignore 的格式规范如下:

    要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff:

    $ git diff

    若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令。

         不加参数的git diff:

         show diff of unstaged changes.

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

         若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用:

         git diff --cached 命令.

         show diff of staged changes.

         (Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的).

         git diff HEAD

         show diff of all staged or unstated changes.

         也即比较woking directory和上次提交之间所有的改动.

         如果想看自从某个版本之后都改动了什么,可以用:

         git diff [version tag]

         跟log命令一样,diff也可以加上--stat参数来简化输出.

         git diff [branchA] [branchB]可以用来比较两个分支.

         它实际上会返回一个由A到B的patch,不是我们想要的结果.

         一般我们想要的结果是两个分支分开以后各自的改动都是什么,是由命令:

         git diff [branchA]…[branchB]给出的.

         实际上它是:git diff $(git merge-base [branchA] [branchB]) [branchB]的结果.

    $ git rm 移除文件

    $ git rm --cached 移除暂存区文件

         git rm file: 从staging区移除文件,同时也移除出工作目录.

         git rm --cached: 从staging区移除文件,但留在工作目录中.

         git rm --cached从功能上等同于git reset HEAD,清除了缓存区,但不动工作目录树.

    $ git mv [文件夹2名字] [文件夹1名字] 将 文件夹1名字 改为 文件夹2名字

    git rm - - cached orig; mv orig new; git add new

    2、查看提交历史

    $ git log

    一个常用的选项是 -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交

    $ git log -p -2

    想看到每次提交的简略的统计信息,你可以使用 --stat 选项

    $ git log --stat

    show commit history of a branch.

         git log --oneline --number: 每条log只显示一行,显示number条.

         git log --oneline --graph:可以图形化地表示出分支合并历史.

         git log branchname可以显示特定分支的log.

         git log --oneline branch1 ^branch2,可以查看在分支1,却不在分支2中的提交.^表示排除这个分支(Window下可能要给^branch2加上引号).

         git log --decorate会显示出tag信息.

         git log --author=[author name] 可以指定作者的提交历史.

         git log --since --before --until --after 根据提交时间筛选log.

         --no-merges可以将merge的commits排除在外.

         git log --grep 根据commit信息过滤log: git log --grep=keywords

         默认情况下, git log --grep --author是OR的关系,即满足一条即被返回,如果你想让它们是AND的关系,可以加上--all-match的option.

         git log -S: filter by introduced diff.

         比如: git log -SmethodName (注意S和后面的词之间没有等号分隔).

         git log -p: show patch introduced at each commit.

         每一个提交都是一个快照(snapshot),Git会把每次提交的diff计算出来,作为一个patch显示给你看.

         另一种方法是git show [SHA].

         git log --stat: show diffstat of changes introduced at each commit.

         同样是用来看改动的相对信息的,--stat比-p的输出更简单一些.

    3、撤消操作

    有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:

    $ git commit --amend

    你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:

    $ git commit -m ‘initial commit’

    $ git add forgotten_file

    $ git commit --amend

         提交已经被add进来的改动.

         git commit -m “the commit message"

         git commit -a 会先把所有已经track的文件的改动add进来,然后提交(有点像svn的一次提交,不用先暂存). 对于没有track的文件,还是需要git add一下.

         git commit --amend 增补提交. 会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消.

    4、查看远程仓库

    如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin - 这是 Git 给你克隆的仓库服务器的默认名字:

    $ git remote

    你也可以指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的URL。

    $ git remote -v

    我在之前的章节中已经提到并展示了如何添加远程仓库的示例,不过这里将告诉你如何明确地做到这一点。 运行 gitremote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写:

    $ git remote add <shortname> <url> 

    现在你可以在命令行中使用字符串 pb 来代替整个 URL。 例如,如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb:

    $ git fetch [文件夹名]

    list, add and delete remote repository aliases.

         因为不需要每次都用完整的url,所以Git为每一个remote repo的url都建立一个别名,然后用git remote来管理这个list.

         git remote: 列出remote aliases.

         如果你clone一个project,Git会自动将原来的url添加进来,别名就叫做:origin.

         git remote -v:可以看见每一个别名对应的实际url.

         git remote add [alias] [url]: 添加一个新的remote repo.

         git remote rm [alias]: 删除一个存在的remote alias.

         git remote rename [old-alias] [new-alias]: 重命名.

         git remote set-url [alias] [url]:更新url. 可以加上—push和fetch参数,为同一个别名set不同的存取地址.

    5、推送到远程仓库

    当你想分享你的项目时,必须将其推送到上游。 这个命令很简单:git push [remote-name] [branch-name]。 当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将你所做的备份到服务器:

    $ git push origin master/

         push your new branches and data to a remote repository.

         git push [alias] [branch]

         将会把当前分支merge到alias上的[branch]分支.如果分支已经存在,将会更新,如果不存在,将会添加这个分支.

         如果有多个人向同一个remote repo push代码, Git会首先在你试图push的分支上运行git log,检查它的历史中是否能看到server上的branch现在的tip,如果本地历史中不能看到server的tip,说明本地的代码不是最新的,Git会拒绝你的push,让你先fetch,merge,之后再push,这样就保证了所有人的改动都会被考虑进来.

    6、查看远程仓库

    如果想要查看某一个远程仓库的更多信息,可以使用 git remote show [remote-name] 命令。 如果想以一个特定的缩写名运行这个命令,例如 origin,会得到像下面类似的信息:

    $ git remote show origin

    7、远程仓库的移除与重命名

    如果想要重命名引用的名字可以运行 git remote rename 去修改一个远程仓库的简写名。 例如,想要将pb 重命名为 paul,可以用 git remote rename 这样做:

    $ git remote rename pb paul

    如果因为一些原因想要移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了- 可以使用 git remote rm :

    $ git remote rm paul

    其他

    [我的博客,欢迎交流!](http://rattenking.gitee.io/stone/index.html)

    [我的CSDN博客,欢迎交流!](https://blog.csdn.net/m0_38082783)

    [微信小程序专栏](https://blog.csdn.net/column/details/18335.html)

    [前端笔记专栏](https://blog.csdn.net/column/details/18321.html)

    [微信小程序实现部分高德地图功能的DEMO下载](http://download.csdn.net/download/m0_38082783/10244082)

    [微信小程序实现MUI的部分效果的DEMO下载](http://download.csdn.net/download/m0_38082783/10196944)

    [微信小程序实现MUI的GIT项目地址](https://github.com/Rattenking/WXTUI-DEMO)

    [微信小程序实例列表](http://blog.csdn.net/m0_38082783/article/details/78853722)

    [前端笔记列表](http://blog.csdn.net/m0_38082783/article/details/79208205)

    [游戏列表](http://blog.csdn.net/m0_38082783/article/details/79035621)

  • 相关阅读:
    Java Web 047: 处理商品列表的查询
    Java Web 047:开发商品列表的模板页
    Java Web 046: 处理登录成功后的跳转
    Java Web 045: 处理登录请求
    Java Web 044: 处理注册响应
    Java Web 043: 处理注册请求
    Java Web 042: 创建UserDao控制user的相关数据库操作
    Java Web 041: 创建数据模型和模拟数据库
    Java Web 03: MVC分层架构 / JavaEE分层架构 (图解)
    Java Web 02: 单例模式
  • 原文地址:https://www.cnblogs.com/linewman/p/9918574.html
Copyright © 2011-2022 走看看