Git常用命令

来源:互联网 发布:北京鼎泰网络推广公司 编辑:程序博客网 时间:2024/05/29 04:51

Git基本常用命令如下:

http://blog.csdn.net/xx326664162/article/details/49083121


基本命令


  • 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 恢复文件的同时 也删除文件

0 0
原创粉丝点击