git 偶尔遇到的难题

修改指定commit

修改commit log中的其中一条commit
如果本地有10次提交,第4次的提交有问题,需要修改commit的信息,并且需要修改代码重新提交

git rebase -i HEAD~5

找到需要修改的commit的上一条记录
然后找到需要修改的commit 记录,将其修改未edit,可以看到其他的都是pick
更改commit记录后,保存
回来修改相应的代码后,将被修改的文件

git add .
git commit --amend
git rebase --continue

删除指定 commit

g revert 

基本设置

1、在终端中输入

ssh-keygen -t rsa -C "username" (注:username为你git上的用户名)

三次回车,如有看到The key's randomart image is,代表你的SSH Key生成成功了。

2、查看并将生产的SSH Key复制出来

cat ~/.ssh/id_rsa.pub

3、将SSH Key粘贴到自己的git账户上。

简单使用

创建并切换分支

$ git checkout -b 
// 等同于
$ git branch 
$ git checkout 

pick 代码冲突

  • 如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。

--continue

  • 用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。
$ git cherry-pick --continue

--abort

  • 发生代码冲突后,放弃合并,回到操作前的样子。
$ git cherry-pick -- abort

撤销commit

  • 不删除工作空间改动代码,撤销commit,不撤销git add .
git reset --soft HEAD^

git 跳过检查

git commit --no-verify -m "修改..."

git tag

git tag -a v -m '修改'

gitignore 规则不生效

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

以下慎用

git删除远程提交(确保还没其他人提交之前,进行强制回滚)

//(数字代表回退几个版本)
git reset --hard HEAD~2
//强制覆盖
git push -f

如果删除以后后悔了怎么办

// 查看历史命令
git reflog
// 回退到哪个版本 commit_id表示记录前的版本
git reset --hard commit_id

你可能感兴趣的:(git 偶尔遇到的难题)