转载请标明出处: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 - -continuegit 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字符串来形象地展示你的分支、合并历史
查看状态
查看文件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 checkout - -track origin/serverfix
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 恢复文件的同一时候 也删除文件