You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Aug 7, 2024. It is now read-only.
commit 后,即可删除掉这个 temp 文件夹,然后执行 git worktree prune 清理一下 linked working tree 记录即可。
详细:git worktree 可以将分支切换到其他文件夹下,原来的文件夹叫做 main working tree,其他文件夹又叫做 linked working tree, linked working tree 已经完成了 git init 和 git clone 的操作,在 linked working tree 会被自动合并到 main linked working tree。
作为一个基本上只会 push 和 pull 的还依赖于 SourceTree 的 git 弱渣,随手记录一下自己主要使用的 git 命令,让自己以后找起来更方便🙄
修正最后一个 commit 消息
场景:你在最后一条 commit 消息里有个笔误,已经执行了
git commit -m "Fxies bug #42"
,但在git push
之前你意识到消息应该是 “Fixes bug #42″。方法:
git commit --amend
或git commit --amend -m "Fixes bug #42"
详细:
git commit --amend
会用一个新的 commit 更新并替换最近的 commit ,这个新的 commit 会把任何修改内容和上一个 commit 的内容结合起来。如果当前没有提出任何修改,这个操作就只会把上次的 commit 消息重写一遍。修正非最后一个 commit 消息
场景:突然发现之前的一次或几次commit不是十分满意,想要撤销或修改这条commit记录
方法:
git rebase -i HEAD~X
详细:
git rebase
可以用来修改历史的 commit 记录,包括压缩快进等。也可以用来修改 commit message,在需要修改 commit message 前修改为e
或r
即可。参考:How to modify existing, unpushed commits?
撤销最后一个commit
场景:在完成了一次本地commit之后,对这次commit不是十分满意,想要撤销这条commit记录
方法:
git reset <last good SHA>
或git reset --hard <last good SHA>
详细:git reset 会把你的代码库历史返回到指定的 SHA 状态。 这样就像是这些提交从来没有发生过。缺省情况下,撤销的 commit 的修改的代码将会恢复到工作区,对应的 commit 的记录被撤销掉。如果加了--hard,那么撤销的 commit 的代码也会消失掉。如果想一并撤销远端的提交,使用 git push origin master --force 或者 git push -f origin master 即可,sourceTree 里也有开启 force push 的选项。
参考:Force “git push” to overwrite remote files
合并远端新建的的分支
场景:在本地开了一个仓库并且有了一些 commit,同时在 Github 上也开了一个仓库,这种情况下是无法直接 pull 将两个仓库同步的,会报错
fatal: refusing to merge unrelated histories
方法:
git pull origin master --allow-unrelated-histories
详细:要合并的两个仓库没有共同的节点,相当于是要将两段不同的 history 合并,默认情况下是不允许的,需要添加
--allow-unrelated-histories
参考:
合并多次commit
场景: 将多次提交的commit合并为一次提交。
方法:
使用 worktree 在不同目录下同步
场景:在 master 分支下我们是开发环境,里面有 node_modules,这个文件夹在 gitignore 中当然是被忽略的的。然后我们在 gh-pages 中要做一个展示分支,放一些静态资源。那么每次当我们切换到 gh-pages 再切回 master 下时,master 下的 node_modules 就不!见!了!(因为没有被 track),导致还要重新 npm install 一次。
方法:
git worktree add ../temp gh-pages
git worktree add ../temp -b gh-pages
然后我们就可以在 temp 文件中中随意操作,任何操作都会和原来的仓库保持同步。
commit 后,即可删除掉这个 temp 文件夹,然后执行
git worktree prune
清理一下 linked working tree 记录即可。详细:git worktree 可以将分支切换到其他文件夹下,原来的文件夹叫做 main working tree,其他文件夹又叫做 linked working tree, linked working tree 已经完成了 git init 和 git clone 的操作,在 linked working tree 会被自动合并到 main linked working tree。
参考:
The text was updated successfully, but these errors were encountered: