一、合并远程仓库上的提交记录
在git管理中我们有些时候经常会遇到(这是最后一次提交了,这一定是最后一次的了,这肯定是最后一次了,打死不改了。。。)然后在不断的提交代码中导致我们的日志量雍余处理一个相似的问题提交记录,当最后解决好了,看之前的记录很不好看,想要合并一下,怎么处理呢,这里我们使用git命令实现一下:
首先在分支上创建了3个提交记录,如下图:
合并提交记录
假设需要合并这3个提交记录,执行命令git rebase -i HEAD~3
会有如下提示:
pick
是rebase时的指令,具体我们还可以使用如下指令:
- 选择pick指令,git会应用这个提交,以同样的提交信息(commit message)保存提交
- 选择reword指令,git会应用这个提交,但需要重新编辑提交信息
- 选择edit指令,git会应用这个提交,但会因为amending而终止
- 选择squash指令,git会应用这个提交,但会与之前的提交合并
- 选择fixup指令,git会应用这个提交,但会丢掉提交日志
- 选择exec指令,git会在shell中运行这个命令
接下来,如果我们修改提示文件(按英文键盘i进入编辑状态,将想要忽略的的前面的pick修改为s):(其中s 表示的是squash,也可以全写使用,同样的效果)
pick 3e60dd4 创建合并提交记录
s 627c7d7 修改合并提交记录
s 3a259d9 完成合并提交记录
修改后按esc推出编辑,:wq保存修改。 会有如下提示:
如果我们不想修改任何信息,保存(:wq)即可,也可以修改最终的提交信息后再保存。
如果合并有冲突,在解决冲突后需要输入:
git add .
git rebase --continue
如果不想合并了,放弃合并的指令是:
git rebase --abort
然后提交:git push -f
然后我们就可以看到远端和本地的分支记录已经合并操作完成合为一个记录
然后我们再看下这时的git history:
* 44c536b - (HEAD -> feature) 合并提交记录完成 (4 minutes ago) <Blackfat>
可以看到3条提交记录,已经合并成了一条记录,并且修改了最终的提交信息。
二、git删除远端分支
git push origin --delete [branch_name]
三、git在一个分支上面将另一个分支上面的某一次commit合并到当前分支
cherry-pick
在当前分支上面使用命令:
git cherry-pick 30fbcccb0cfa19873b4341f043aedbd661b7e2e5
(后面的一长串数字+字母,是你想要合并的commit的hash值,可以在代码平台或者你的代码提交工具里面找到这个Commit Hash,注意:不是Parent Hash,也不是Tree Hash)
四、.gitignore文件不生效解决方法
使用git提交代码希望忽略某些文件时,需要配置.gitignore。
不过已经提交后文件,再修改.gitignore文件会没有效果。
用下面命令解决:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
使用时最好所有文件已经完全push了。