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,并自动切换到该本地分支且设置分支上游


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
    d = difftool
[diff]
    tool = vimdiff
[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的默认行为

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章