Git命令

##基本命令
git clean -f 删除未被跟踪的文件
git clean -df 删除未被跟踪的文件和文件夹
###差异对比
git log -p 命令来显示每一次提交与其父节点提交内容之间快照的差异
git log -p ./src/filepath/a.c 命令来显示指定文件每一次提交与其父节点提交内容之间快照的差异
git diff 查看工作目录中某个还未载入(stage)的文件的差异
git diff --stage 查看载入(staged)而并未提交(not committed)的内容差异
git diff HEAD 查看最后一次提交之后工作目录中文件的变更
git diff v1.6.0 -- README 查看创建v1.6这个标签之后README文件所发生的修改
git diff v1.0 v1.1 两个版本之间比对
git diff --stat v1.6.1.1 v1.6.1.2 显示所有文件统计差异
git diff --stat v1.6.1.1 v1.6.1.2 ./src/filepath/a.c 显示指定文件统计差异
git diff v1.6.1.1 v1.6.1.2 显示所有文件详细差异
git diff v1.6.1.1 v1.6.1.2 ./src/filepath/a.c 显示指定文件详细差异
###查看变更历史
git log 查看所有文件变更历史
git log ./src/filepath/a.c 查看对指定文件的变更历史


###还原代码
git revert HEAD 撤销前一次 commit
git revert HEAD^ 撤销前前一次 commit
git revert commit_id 撤销指定的版本,撤销也会作为一次提交进行保存
git push origin master 将还原更改提交到远程分支上

git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容


##远程分支
###远程分支查看
git remote -v 查看远程分支
###添加远程分支
git remote add origin https://gitee.com/lvxinliang/CPPTest.git
###推送本地分支到远程分支并设置分支上游
git push -u origin master 初次提交本地分支,将本地的master分支推送到origin主机,同时设置 master 的 git pull/status 的上游,后面就可以不加任何参数使用git push
git push --set-upstream origin master 效果同上,上面是缩写
###推送本地分支到远程分支
git push origin master 将本地分支推送到远程的同名分支上

拉取远程分支并创建本地分支

git checkout -b dev origin/dev 在本地新建dev,并自动切换到该本地分支且设置分支上游

删除远程分支

git push origin --delete dev_br

删除远程tag

git push origin :refs/tags/remote_tag


##Tag操作
###创建Tag
git tag v1.0 当前分支创建一个名为v1.0的tag
###列出所有Tag
git tag
###删除Tag
git tag -d v0.1
###推送本地Tag到远程
git push origin v1.0
###一次性推送全部尚未推送到远程的本地标签
git push origin --tags
###删除远程Tag
git tag -d v0.9 要删除远程标签就麻烦一点,先从本地删除
git push origin :refs/tags/v0.9 然后,从远程删除。删除命令也是push


##代码合并
###合并单个commit
git cherry-pick 6bbf6b4 #6bbf6b4为dev01上的commitId 将dev01上功能A对应代码cherry-pick到dev02上

##常用配置

[alias]
	co = checkout
	ci = commit
	br = branch
	st = status
	last = log -1
	lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
	lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %C(bold blue)%s%Creset %Cgreen(%cr) <%an>%Creset' --abbrev-commit --date=relative --author lvxinliang
	d = difftool
[diff]
	tool = vimdiff
[core]
	pager = less -F -X
[difftool]
	prompt = false
[user]
	email = user@163.com
	name = user
[color]
	ui = auto
[push]
	default = simple

##差别
###git revert 和 git reset的区别

  1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

##Refs:
Git push与pull的默认行为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值