git经常遇到的问题

在工作中经常会遇到这些问题所以总结出来

第一种 git pull如何强制覆盖本地文件

error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge.

使用git reset命令
重要提示:如果您有任何本地更改,将会丢失。无论是否有--hard选项,任何未被推送的本地提交都将丢失。

# 从远程下载最新的,而不尝试合并或rebase任何东西
git fetch -all

# 将主分支重置为您刚刚获取的内容
git reset --hard origin/<branch_name>

在重置之前可以通过从master创建一个分支来维护当前的本地提交:

git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master

在此之后,所有旧的提交都将保存在new-branch-to-save-current-commits中。然而,没有提交的更改(即使staged)将会丢失。确保存储和提交任何你需要的东西。

第二种Git如何同时删除本地分支和远程分支

删除分支使用--delete(-d)选项,命令如下:

git push --delete <remote_name> <branch_name>
git branch -d <branch_name>

# 只删除本地分支
git branch -d branch_name
git branch -D branch_name

其中:

  • <remote_name>远程分支名称一般是origin,比如:origin/dev
  • -d选项的全写是--delete,当前分支必须从上游分支完全合并才能删除
  • -D选项的全写是--delete --force,强制删除,无论当前分支的合并状态如何

另外根据Git版本的不同,还可以选用下面的命令

# Git v1.7.0以上版本
git push <remote_name> --delete <branch_name>
# 上面的命令可简写
git push <remote_name> :<branch_name>

# Git v2.8.0以上版本可以用 -d`
git push <remote_name> --d <branch_name>

第三种 Git如何撤销最近一次提交

1、Git撤销本地的最后一次提交

如果你只是在本地进行提交commit,还没有推送push到远程,可以使用git reset HEAD~

  • git reset --soft HEAD~ 保留提交之后的本地文件修改
  • git reset --hard HEAD~ 不保留提交之后的本地文件修改
  • git reset --soft HEAD~1 和 git reset --soft HEAD~ 等效
# 弄错了一次错误提交
git commit -m '错误提交'

# 撤销本地提交
git reset HEAD~

# 修改文件后继续提交
git add ...
git commit -c ORIG_HEAD

使用git reset HEAD~命令会使工作树(磁盘上文件的状态)保持不变,但会撤销本地提交,并使您提交的更改保持未保存状态(这些更改将显示为“未提交的更改”,您需要在提交之前再次添加它们)。

另外还需要注意,如果你想保留上次提交之后本地的文件修改,使用--soft

2、Git撤销最近一次远程提交

如果你已经把提交推送到远程,只能本地回滚然后再次提交。

回滚到上一次的命令使用git revert HEAD,对文件重新修改后提交到远程即可。

第四种 如何修改提交信息和文件

1、修改本地提交信息(未推送到远程)

如果你在本地进行了一次提交commit,这个提交还未推送到远程,但是这次提交你忘了写message或者少提交了文件。

一方面可以使用上面介绍的方法撤销这次提交,修改之后再提交一次。
另一方面你可以使用git commit --amend -m '新的提交信息'提交一次。

2、修改远程提交信息

如果想要修改的提交信息已经被推送到远程,可以使用git push -f强制提交覆盖:

git push <remote> <branch> --force
# Or
git push <remote> <branch> -f

另外也可以使用git rebase命令,该命令可以修改所有的提交信息(即使不是最后一次提交)。

# X 表示落后于HEAD的提交次数,如果不填默认为1,即上一次提交
git rebase -i HEAD~X
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值