GIT使用笔记

GIT使用笔记。有些命令tortoisegit无法胜任,则使用命令行。

合并多个提交记录

git bash中操作。
1、合并最新的N个提交。
示例:
git rebase -i HEAD~3
出现VI编辑器,输入i进入编辑模式。第一行的commit不可修改。其它的commit将pick改为s。输入:wq保存并退出,git进行压缩。接着进入另一个VI编辑器,将已有的提交日志删除,重新添加新的提交日志。输入:wq
此时最新的3个提交已被合并。日志为刚才添加的,而时间则是3个提交最早的那一次时间。

注意必须添加日志,否则无法完成操作。提示:

1
2
Aborting commit due to empty commit message.
Could not apply 9cf099d... 7777777777777777

其它:出现异常,使用git rebase --abort放弃操作。

强制重新提交新的仓库

相当于清空原仓库,而不删除。
删除 .git,再新建仓库

1
2
3
4
rm -rf .git
git init
git add .
git commit -m "first commit"

添加远程仓库并提交:

1
2
git remote add origin https://latelee@github.com/latelee/foobar.git
git push -u --force origin master

注:如果提交了不应该提交的内容,可以重新制作本地的 git 仓库,再用此法,则原地址未变,而内容改变,过程的版本不再看到。

删除远程仓库tag

标签v1.0已打,但发现问题,重新改,删除该标签,在新的提交上打上v1.0(注:此场景不是另一个新版本的发布)。此时无法推送远程。可删除远程标签,再推送。

1
2
3
git tag -d v1.0
git push origin :v1.0
(注:冒号前有空格)

问题及解决

git checkout时出现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")

Changes to be committed:

new file: archives/2020/12/index.html
new file: archives/2020/index.html
new file: archives/page/3/index.html
new file: page/5/index.html
new file: uncategorized/undefined/index.html

Unmerged paths:
(use "git add <file>..." to mark resolution)

both added: activity/website-update/1.jpg
both added: dl/apt-key.gpg
both added: image/3part/aliyun.jpg
both added: image/3part/docker.jpg
both added: image/3part/exmail.jpg

不需要保留本地修改情况下,执行下面两步:

1
2
git fetch origin
git reset --hard origin/master

再次查看:

1
2
3
4
git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean