git命令使用总结

Pull之前先stash
1.git stash list 2.git stash 3.git stash list
4.git status –uno 5.git pull 6.git stash pop

创建分支
git branch –a
git checkout –b 分支名
git push origin 分支名 推动分支
git branch –d 分支名 删除本地新建分支
git push origin :分支名 删除远端新建分支

查看提交
git log –author=xull
git add git commit git push
git diff

想要让某一个文件放弃修改,同步服务器。
解决方案:git checkout [本地变动文件的路径]
服务器代码完全替换和覆盖本地的代码改动。
解决方案:git fetch --all
git reset --hard origin/master
git pull

和远端分支相关联,并拉取代码
git branch --set-upstream-to=origin/dev dev
git pull -r

清楚本地任何修改
git checkout . && git clean -xdf

在使用git时,在未添加.ignore文件前使用 git add . 将所有文件添加到库中,不小心将一些不需要加入版本库的文件加到了版本库中。由于此时还没有提交所以不存在HEAD版本,不能使用 git reset HEAD命令。
解决使用 git rm -r --cached .

git reset revert 回退回滚取消提交返回上一版本

总有一天你会遇到下面的问题.
(1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.
(2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.
这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.
大致分为下面2种情况:
1.没有push
这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令
reset git reset [–soft | --mixed | --hard
上面常见三种类型
–mixed
会保留源码,只是将git commit和index 信息回退到了某个版本.
git reset 默认是 --mixed 模式 git reset --mixed 等价于 git reset
–soft
保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
–hard
源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
当然有人在push代码以后,也使用 reset --hard 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突…
所以,这种情况你要使用下面的方式
2.已经push
对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令
revert
git revert用于反转提交,执行evert命令时要求工作树必须是干净的.
git revert用一个新提交来消除一个历史提交所做的任何修改.
revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)
revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
通常,前几位即可
git revert c011eb3
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit
看似达到的效果是一样的,其实完全不同.
第一:
上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.
第二:
如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
第三:
reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

git撤销本地所有修改(新增、删除、修改)
git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。
git reset --hard HASH #返回到某个节点,不保留修改。
git reset --soft HASH #返回到某个节点。保留修改

git clean -df #返回到某个节点
git clean 参数
-n 显示 将要 删除的 文件 和 目录
-f 删除 文件
-df 删除 文件 和 目录
现在我在master分支上,工作目标是干净的,也没有需要commit的:

$ git branch

  • master
    release

$ git status
On branch master
Your branch is up-to-date with ‘origin/master’.
nothing to commit, working directory clean

新建远程分支
1.新建一个本地分支:
$ git checkout -b dbg_lichen_star
2.查看一下现在的分支状态:
git branch
dbg_lichen_star
master
release
星号(
)表示当前所在分支。现在的状态是成功创建的新的分支并且已经切换到新分支上。
3.把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):
$ git push origin dbg_lichen_star:dbg_lichen_star
使用git branch -a查看所有分支,会看到remotes/origin/dbg_lichen_star这个远程分支,说明新建远程分支成功。
4.删除远程分支
我比较喜欢的简单方式,推送一个空分支到远程分支,其实就相当于删除远程分支:
$ git push origin :dbg_lichen_star
也可以使用:
$ git push origin --delete dbg_lichen_star
这两种方式都可以删除指定的远程分支

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值