zoukankan      html  css  js  c++  java
  • Git经常使用命令

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49083121 文章出自:薛瑄的博客
    你也能够查看我的其它同类文章,也会让你有一定的收货!

    Git基本经常使用命令例如以下:

    基本命令


    • mkdir XX  (创建一个空文件夹 XX指文件夹名)
    • pwd  显示当前文件夹的路径。
    • git init   把当前的文件夹变成能够管理的git仓库,生成隐藏.git文件。

    • git add XX   把xx文件加入到暂存区去。详情
    • git add . 将全部改动过的工作文件提交暂存区
    • git commit –m “XX”  提交文件 –m 后面的是凝视。

    • git commit -a -m ‘message’ 自己主动把全部已经跟踪过的文件暂存起来一并提交,从而跳过 git add。详情

    • git ls-files 查看已经跟踪的文件

    • cat XX  查看XX文件内容
    • ssh-keygen -t rsa –C “youremail@example.com” 创建SSH Key
    • git help < command> 显示command的help
    • git show 显示某次提交的内容 git show $id

    撤销

    对未跟踪文件的删除(对该文件从来没有使用过add命令)


    • git clean 命令仅仅会移除没有忽略的未跟踪文件 详情
    • git clean -f -d命令来移除工作文件夹中全部未追踪的文件以及空的子文件夹。

    对工作文件夹的撤销(对文件改动后未使用add命令)

    • git checkout - - < file> 抛弃工作文件夹的改动 详情
    • git checkout . 抛弃工作文件夹改动

    对暂存区的撤销(使用add命令后,未使用commit)

    • git reset HEAD  撤销暂存区域的文件 详情

    对版本号库的撤销,使用commit后

    • git reset –hard HEAD^ 或者 git reset –hard HEAD~  回退到上一个版本号 (假设想回退到100个版本号,使用git reset –hard HEAD~100 ) 已经push到线上代码块,使用该命令会退后,在push会有冲突
    • git revert [标识代码] 用一个新提交来消除一个历史提交所做的不论什么改动.已经push到线上代码块。使用该命令回退后,再push不会有冲突详情

    • git commit - -amend  又一次提交(覆盖上次的提交)

    git 撤销 merging,git取消merge

    • git reset –hard HEAD (or sha_1) 详情

    移除和移动


    • git rm XX  从已跟踪文件清单中移除。并删除磁盘上的指定文件,建议使用该命令前先备份数据详情
    • git rm - -cached < file> 从暂存区域移除,文件保留在磁盘。不想让 Git 继续跟踪
    • git mv file_from file_to 重命名file_from为file_to 详情

    打标签


    • git tag 列出已有的标签
    • git tag -l ‘v1.8.5*’ 使用特定的模式查找标签
    • git tag v1.4-lw 给提交打标签(轻量标签
    • git tag -a v1.4 -m ‘my version 1.4’ 附注标签
    • git tag -a v1.2 9fceb02 后期打标签。要在那个提交上打标签,须要在命令的末尾指定提交的校验和(或部分校验和)
    • git push origin [tagname] 共享标签 git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后必须显式地推送标签到共享服务器上
    • git push origin - -tags 一次性推送非常多标签
    • git checkout -b [branchname] [tagname] 检出标签 在特定的标签上创建一个新分支:

    变基和衍合


    • git merge < branch>  合并branch分支到当前分支 三方合并
    • git merge < branch> - -no-ff 不要Fast-Foward合并,这样能够生成merge提交
      运行merge操作后,假设有冲突,须要运行add commit进行提交

      • git merge -Xignore-space-change whitespace 忽略全部空白改动。详情
    • git rebase master 将当前分支变基到master 详情
      运行rebase操作后,假设有冲突 1、解决冲突 2、git add . 3、git rebase - -continue

    • git rebase - -onto master server client   取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的改动,然后把它们在 master 分支上重演一遍”详情
      例如以下:三个分支ABC,这个命令可将分支BC之间的改动,应用到分支A上。(在使用这个命令运行这种操作时,最好在C的分支上再创建一个分支D,这样能够保存原来的状态不丢失)

    A–(删除某个功能)–B—(修复一个bug)–CD

    A–(删除某个功能)–B—(修复bug)—D
    |
    |——–(修复bug)—–C

    • git rebase master server 直接将特性分支(即本例中的 server)变基到目标分支(即 master)上。

      这样做能省去你先切换到 server 分支,再对其运行变基命令的多个步骤

    • git mergetool 假设你想使用图形化工具来解决冲突 详情

    查看提交历史


    • git log  查看历史记录
    • git reflog  查看历史记录的版本号号id
    • git log -p -2  用来显示每次提交的内容差异。 你也能够加上 -2 来仅显示近期两次提交
    • git log - -stat  查看每次提交的简略的统计信息
    • git log - -pretty=oneline  这个选项能够指定使用不同于默认格式的方式展示提交历史,用 oneline 将每个提交放在一行显示
    • git log - -pretty=oneline - -graph 结合使用时尤事实上用。 这个选项graph 加入了一些ASCII字符串来形象地展示你的分支、合并历史

    查看状态


    • git status  查看仓库状态。详情
    • git status -s 详情

    • git stash - -all 移除每一样东西并存放在栈中

    查看文件diff


    • git diff < file> 比較工作文件夹和暂存区文件差异 (git diff 本身仅仅显示尚未暂存的改动,而不是自上次提交以来所做的全部改动 )
    • git diff - -staged 比較暂存区和版本号库差异(查看已暂存的将要加入到下次提交里的内容,该命令的旧版:git diff - -cached,详情

    • git diff < id1>< id2> 比較两次提交之间的差异

    • git diff < branch1>..< branch2> # 在两个分支之间比較

    • git diff - -stat # 仅仅比較统计信息

    分支管理


    假设当前分支没有提交。而切换到另外一个,则当前分支会丢失

    • git branch < branch>  创建分支
    • git branch < branch> < commit num>在某一次提交上创建分支
    • git branch –d < branch>  删除分支
    • git br -D < branch> 强制删除某个分支 (未被合并的分支被删除的时候须要强制)
    • git checkout < branch>  切换分支
    • git checkout –b < branch>   创建并切换分支
    • git checkout -b < new_branch> < branch> 基于branch(能够是远程分支)创建新的new_branch
    • git checkout remotes/origin/dev 一般在github上克隆下来的项目都是master分支,假设想克隆其它分支(比如:dev分支),能够1、git branch -a #查看全部分支,2、用该命令检出remotes/origin/dev远程分支,3、在检出的远程分支上,创建一个本地分支。详情 详情
    • git branch -a 查看远程分支

    查看分支情况


    • git branch  查看分支,分支前的 * 字符:它代表如今检出的那一个分支(也就是说,当前 HEAD 指针所指向的分支)。

    • git branch -v  查看每个分支的最后一次提交
    • git branch - -merged  能够过滤这个列表中已经合并或尚未合到当前分支的分支。

    • git branch - -no-merged   能够过滤这个列表中尚未合并到当前分支的分支。
    • git branch -vv  查看设置的全部跟踪分支与远程分支的关系
    • git show-branch 能够看出分支上的递交状况
    • gitk 各个分支当前状态,具体信息,仅仅能查看当前分支曾经的信息
    • git log - -graph - -decorate - -all
    • git branch -m devel develop 重命名本地分支devel为develop

    储藏与清理


    • git stash 新的储藏推送到栈上
    • git stash list 查看储藏的东西
    • git stash apply 将刚刚储藏的工作又一次应用
    • git stash apply stash@{2} 指定储藏的工作又一次应用
    • git stash apply - -index 文件的改动被又一次应用了,暂存的文件又一次暂存
    • git stash - -keep-index 告诉 Git 不要储藏不论什么你通过 git add 命令已暂存的东西 详情
    • git stash -u 储藏不论什么创建的未跟踪文件
    • git stash branch 创建一个新分支,检出储藏工作时所在的提交,又一次在那应用工作,然后在应用成功后扔掉储藏 详情

    远程分支


    • git clone -o booyah 远程分支名字将会是 booyah/master,默觉得origin/master

    • git clone https://github.com/xx/testgit  从远程库中克隆,创建一个指向Git服务器的 master 分支的指针,而且在本地将其命名为 origin/master(远程分支)。 Git 也会给你一个与 origin 的 master 分支在指向同一个地方的本地 master 分支(跟踪分支),这样你就有工作的基础。详情

    • git remote add [teamone] [URL]   将这个远程仓库命名为 teamone,将其作为整个 URL 的缩写。
    • git remote 查看远程库的信息
    • git remote –v 查看远程库的具体信息
    • git remote show [remote] 获得远程分支的很多其它信息
    • git remote set-head origin master 设置远程仓库的HEAD指向master分支
    • git remote set-url - -push [name] [newUrl] 改动远程仓库(也能够不使用push,改变fetch和push的url)
    • git ls-remote [remote]   来显式地获得远程引用的完整列表

    跟踪分支


    • git checkout -b [branch] [remotename]/[branch] 当克隆一个仓库时,它一般会自己主动地创建一个跟踪 origin/master 的 master 分支。 然而,假设你愿意的话能够设置其它的跟踪分支 - 其它远程仓库上的跟踪分支,或者不跟踪 master 分支。 这是一个十分经常使用的操作所以 Git 提供了 –track 快捷方式:

      • git checkout - -track origin/serverfix
        Branch serverfix set up to track remote branch serverfix from origin.
    • git branch -u origin/serverfix
      Branch serverfix set up to track remote branch serverfix from origin.
      在分支中运行命令,设置已有的本地分支跟踪一个刚刚拉取下来的远程分支。或者想要改动正在跟踪的上游分支

    推送


    • git push –u origin master  首次提交,把当前master分支推送到远程库,而且跟踪(如无远程主分支则创建,用于初始化远程仓库)

    • git push -u origin develop 首次将本地develop分支提交到远程develop分支,而且track

    • git push origin master  Git会把master分支推送到远程库相应的远程分支上

    • git push origin serverfix:awesomebranch 来将本地的 serverfix 分支推送到远程仓库上的 awesomebranch 分支。

      (是否跟踪。待验证)

    • git push - -force   命令覆盖了服务器上的提交历史 (慎用)

    拉取


    特别注意的一点是当抓取到新的远程跟踪分支时。本地不会自己主动生成一份可编辑的副本(拷贝)。 换一句话说。这种情况下,不会有一个新的 serverfix 分支 - 仅仅有一个不能够改动的 origin/serverfix 指针。

    • git fetch origin   查找 “origin” 是哪一个服务器。从中抓取本地没有的数据,而且更新本地数据库,移动 origin/master 指针指向新的、更新后的位置。

    • git fetch <远程主机名> <分支名> 取回全部分支(branch)的更新。假设仅仅想取回特定分支的更新。能够指定分支名

    • git pull  在一个跟踪分支上输入 git pull。Git 能自己主动地识别去哪个服务器上抓取、合并到哪个分支。

    • git pull –no-ff # 抓取远程仓库全部分支更新并合并到本地,不要快进合并

    删除远程分支


    • git push origin - -delete serverfix   从服务器上删除 serverfix 分支
    • git push origin :serverfix 从服务器上删除 serverfix 分支 ,推送空分支相当于删除,详情
    • git fetch -p 删除掉没有与远程分支相应的本地分支
    • git remote prune origin 删除本地分支,这个本地分支相应的远程分支已经不在

    隐藏


    • git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

    • git stash list 查看全部被隐藏的文件列表

    • git stash apply 恢复被隐藏的文件,可是内容不删除

    • git stash drop 删除文件

    • git stash pop 恢复文件的同一时候 也删除文件

  • 相关阅读:
    HDOJ1251解题报告【字典树】
    HDOJ1305解题报告【字典树】
    HDOJ1087解题报告【动态规划】
    HDOJ1075解题报告【STL】
    HDOJ1172解题报告【暴力】
    ibatis 中调用存储过程
    后端开挂:3行代码写出8个接口!
    Go模拟浏览器登录操作代码
    Java架构师必须知道的 6 大设计原则
    easyUI时间戳转换(3种解决方法)
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7110148.html
Copyright © 2011-2022 走看看