GIT操作宝典
git用远程覆盖本地
git fetch --all
git reset --hard origin/master
清除GIT版本信息
find . -name “.git” | xargs rm -rf
我怎么知道分支是否已经合并到master中?
git branch --merged master列出合并到母版中的分支
git branch --merged 列出合并到HEAD中的分支(即当前分支的尖端)
git branch --no-merged 列出尚未合并的分支
===【将远程git仓库里的指定分支拉取到本地(本地不存在的分支)】=
git checkout -b 本地分支名 remotes/origin/远程分支名
git checkout -b branch_name remotes/origin/branch
克隆代码
git clone <git地址> 克隆远端地址(http和ssh协议,ssh需要上传公钥到服务器)
常用命令集合
git pull --rebase 【拉取线上版本】
git push 【将本地提交的代码推送到远端服务器】
git status 【查看当前发送变化文件】
git add . 【增加文件到本地缓存去】
git reset HEAD +文件 【撤销本地缓存(add的反向操作)】
git commit -m 提交日志 【提交并添加日志到本地仓库】
git commit -am 提交日志 【新增并提交的命令】
git checkout . 【撤销当前改变的代码】
git checkout {文件} 【撤销文件的改变的代码】
git revert {提交ID} 【还原指定版本的修改】
git status -s 【显示简单的修改列表】
git rm 文件 【删除文件】
git rm -f 文件 【删除文件】
暂存区使用
git stash 【将本地代码提交到暂存去】
git stash list 【查看本地暂存去的存放历史】
git stash pop 【将暂存去的记录弹出】
分支命令
git branch -a 查看所有分支
git branch -r 查看远程分支
git branch –vv 查看本地分支和远程分支关系
git branch –u origin/<分支名> 将当前分支和远端分支做关联
git checkout -b <分支名> origin/<分支名>
git branch --set-upstream-to=remotes/origin/<分支名> <分支名> 本地远端分支关联
git push --set-upstream origin 分支名 à将本地分支推到远端
git push origin <分支名>:<分支名> 本地推送到远端
git push origin :br (origin 后面有空格【删除远程分支】 分支名称不用添加 remotes/origin
git push origin :remotes/origin/dev(名称是remotes/origin后面的)
如果同事存在tag名称和分支名相同是 需要加入
git push origin :refs/heads/分支名 (删除分支)
git push origin :refs/tags/分支名 (删除标签)
git branch -d +分支名 删除本地分支
git cherry-pick 提交ID
git push -u origin develop 把develop分支推送到远程仓库
git branch --set-upstream-to=remotes/origin/dev dev 本地分支和远端分支关联
git用远程覆盖本地:git fetch --all && git reset --hard origin/master && git pull
git fetch --all
git reset --hard origin/master
git pull
版本回滚
git reset --hard HEAD^ 返回上1个版本
git reset --hard HEAD^^ 返回上2个版本
git reset --hard HEAD~100 返回上100个版本
git reset --hard <commit id> 返回制定Id的版本
合并多次提交记录
git rebase -i HEAD~4
注意:该命令执行后,会弹出一个编辑窗口,4次提交的commit倒序排列,最上面的是最早的提交,最下面的是最近一次提交。修改第2到第四行 的第一个单词pick为squash
git add .
git rebase --continue
git rebase --abort
合并代码
git merge +分支名
### 解决冲突后
git add .
git status
git rebase --continue
git push
### 合并制定的提交版本
git cherry-pick <commit id>
提交日志
git show <commit id> 查看某次commit的修改内容
git log -p <filename> 查看某个文件的修改历史
git log -p -2 查看最近2次的更新内容
git reflog 所有提交的log
git log -n 查看n次提交的日志
git show commitId +文件名
日志查看
查看日志:git log
如两天前的提交历史:git log --since=2.days
如指定作者为"BeginMan"的所有提交:$ git log --author=BeginMan
如指定关键字为“init”的所有提交:$ git log --grep=init
如指定提交者为"Jack"的所有提交:$ git log --committer=Jack
存储密码和解除存储
git config credential.helper store
git config --system --unset credential.helper
常用配置
git config --system --list 查看系统配置
git config --global user.name “XXX“
git config --global user.email “XXX@gmail.com"
git config --list
配置Git 公钥私钥
进入C:\Users\xxx\.ssh目录;检查是否存在id_rsa和id_ras_pub文件;
如果不存在则在bash_shell中执行:ssh-keygen -t rsa -C xxx@xx
在Windows的CMD窗口中:type C:\Users\xxxx\.ssh\id_rsa.pub 或者在linux的shell窗口下:cat ~/.ssh/id_rsa.pub 获取公钥
将公钥上传到服务器上即可
美化GIT Bash Shell 日志显示(配置.gitconf)
[user]
name = xxx(自己修改)
email = xxx@xx.com(自己修改)
[alias]
logs = log -15 --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
ck = checkout
cm = commit
pl = pull --rebase
ps = push
ss = status
mg = merge
rb = rebas -i HEAD~10
对git 的常用命令添加别名,以上仅供参考,大家可以自己定义。
GIT标签
打标签
git tag -a 标签名 指定版本号
git tag -a 标签名 -m ‘标签备注’
查看标签
git tag 所有的标签
git tag -l ‘v1.4.2.*’
git show 标签号
分享标签
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。
其命令格式如同推送分支:
git push origin 标签名
git push origin –tags
Git比较
git diff 【hashcode1】【hashcode2】文件名
git log #查看commit的历史
git show #查看某次commit的修改内容
10. Git分支覆盖
方法1:
git push origin develop:master -f
[本地的develop分支—> 强制(-force)推送到远程master]
git check master
git pull
方法2:
git checkout master // 切换到旧的分支
git reset –hard develop // 将本地的旧分支 master 重置成 develop
git push origin master –force // 再推送到远程仓库
11 查询分支是否合并
11.1查询当前分支合并过的分支名
git log |grep "Merge branch*"
11.2 查询当前分支是否合并过某个分支
git log |grep 分支名
git log 分支名 |grep 提交ID