Git - 常用命令


带你深入掌握Git、GitHub和GitLab详细教程


多人同时修改不同文件或同一文件的不同地方

git push 

返回信息

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/demo/demo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

两种方案:
第一种是直接pull
第二种:

git branch -av

查看分支会出现一个ahead 1,说明本地分支多余远程一个提交

* master                2dd5429 [ahead 1] local edit a
git fetch
git branch -av

git fetch 后查看分支会出现一个ahead 1, behind 1。ahead 1说明本地分支多余远程一个提交,behind 1也说明本地落后远程一个提交

* master                2dd5429 [ahead 1, behind 1] local edit a

现在执行merge操作

git merge origin/master

没有冲突提交

git push origin

merge问题

git merge origin/dev

提示:原因是两个分支不是一个源头,–allow-unrelated-histories进行允许合并,即可解决问题

refusing to merge unrelated histories

执行如下解决

git merge --allow-unrelated-histories origin/dev

发现merge错了怎么办? 下面的命令即可恢复merge之前的状态

git merge --abort

将变更的文件放到暂存区

git add -u

add+commit

git commit -am '修改提交'

分支操作

查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge

不能删除当前分支
删除本地分支命令 master_bak
git branch -d master_bak
删除远程分支命令 master_bak
git push origin :master_bak
删除一个没有合并过的分支
$ git branch -D feature-vulcan

修改分支名称
先删除远程分支
重命名本地分支
重新提交一个远程分支
例:
将远程分支的dev分支重命名为develop分支
先删除远程分支
git push --delete origin dev
重命名本地分支
git branch -m dev develop

重新提交一个远程分支
git push origin develop

删除文件

git rm file

log操作

查看提交历史
git log --oneline
查询提交历史
$ git log --pretty=oneline --abbrev-commit
查看某个文件提交历史
git log --pretty=oneline /d/workspaces/GitDown/credit-api/src/main/java/com/credit/api/util/factory/DataFactory.java
查看修改的内容
git log -p 7eeacc7ae9eb63f8f40eb24af280939a2ca54490
git log --graph命令可以看到分支合并图

远程代码库回滚

这个是重点要说的内容,过程比本地回滚要复杂
应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
操作步骤:
1、git checkout the_branch
2、git pull
3、git branch the_branch_backup //备份一下这个分支当前的情况
4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id
5、git push origin :the_branch //删除远程 the_branch
6、git push origin the_branch //用回滚后的本地分支重新建立远程分支
7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支
如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,并且选择了 Force Push选项(在push权限设置里有这个选项)
另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞

pull push 省去指定分支

git branch --set-upstream-to=origin/dev_3
git pull 即可


继续深入学习

带你深入掌握Git、GitHub和GitLab详细教程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值