git使用过程遇到的问题

1.今天试git的时候最后一步 git本地仓库push远程仓库的时候,出了这个错:
fatal the current branch master has no upstream branch

解决方案 : 用如下命令提交

git push -u origin master

2.想创建远程分支testT,直接在master下执行以下命令,报错如下

$ git push -u origin testT


出现如下错误:

error: src refspec testT does not match any.
error: failed to push some refs to 'git@github.com:hahaha/ftpmanage.git'

原因:本地分支为空

解决方法如下:
1).在本地创建分支 testT 
2).然后执行git push origin testT 就可以了

3.回退后push问题:
我执行了git log --pretty=oneline拿到commit ID后执行回退

git reset --hard commit ID

但是工作区的内容回退到以前的代码,远程库里面没改变, 我有执行 git add * ....当我去执行git push的时候提示: On branch master Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch)

nothing to commit, working tree clean 让我先拉取,我拉取的话远程库的代码会又回到本地工作区里,这不是没回退一样么?

答:
假设一开始你的本地和远程都是:

a -> b -> c

你想把HEAD回退到b,那么在本地就变成了:

a -> b

这个时候,如果没有远程库,你就接着怎么操作都行,比如:

a -> b -> d

但是在有远程库的情况下,你push会失败,因为远程库是 a->b->c,你的是 a->b->d

两种方案:

- push的时候用--force,强制把远程库变成a -> b -> d,大部分公司严禁这么干,会被别人揍一顿

- 做一个反向操作,把自己本地变成a -> b -> c -> d,注意b和d文件快照内容一莫一样,但是commit id肯定不同,再push上去远程也会变成 a -> b -> c -> d

简单地说就是你无法容易地抹去远程库的提交信息,所以本地提交怎么都行,push前想好了

使用 git revert <commit_id>操作实现以退为进, git revert 不同于 git reset 它不会擦除"回退"之后的 commit_id ,而是正常的当做一次"commit",产生一次新的操作记录,所以可以push,不会让你再pull 其他的不敢妄加猜测。

git diff #是工作区(work dict)和暂存区(stage)的比较

git diff –cached #是暂存区(stage)和分支(master)的比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值