Git 操作备忘
特别推荐:https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1
git
批量移除文件
- git rm *.suo 移除一类文件;
设置Git的user name和email:
$ git config —global user.name “norman.zheng”
$ git config —global user.email “norman.zheng@vipshop.com”
生成SSH
- 查看是否已经有SSH密钥了:cd ~/.ssh用此命令进入后ls查看,如果有则备份删除。
- 生成命令
$ ssh-keygen -t rsa -C “norman.zheng@vipshop.com”
- 然后按三个回车,密码设置为空。最后生成了两个文件
id_rsa
和id_rsa.pub
vi命令编辑模式查看公钥,并复制.pub文件,粘贴到gitlab里即可
添加密钥到ssh
ssh-add
文件名
需要之前输入密码。- 在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。
变基
- git rebase 会将当前分支的提交复制到指定的分支之上。
- 变基与合并有一个重大的区别:Git 不会尝试确定要保留或不保留哪些文件。我们执行 rebase 的分支总是含有我们想要保留的最新近的修改!这样我们不会遇到任何合并冲突,而且可以保留一个漂亮的、线性的 Git 历史记录。
交互式变基。在我们正在
rebase -i HEAD~xx
的提交上,我们可以执行以下 6 个动作:
- reword:修改提交信息;
- edit:修改此提交;
- squash:将提交融合到前一个提交中;
- fixup:将提交融合到前一个提交中,不保留该提交的日志消息;
- exec:在每个提交上运行我们想要 rebase 的命令;
- drop:移除该提交。
软重置
git reset --soft HEAD~xx
保留变动,回滚到某个commit
还原(Reverting)另一种撤销修改的方法是执行 git revert。通过对特定的提交执行还原操作,我们会创建一个包含已还原修改的新提交。
git revert xxxx
撤销commitId的变动。并直接生成一个新的commitID(merge后的)
拣选(Cherry-picking)当一个特定分支包含我们的活动分支需要的某个提交时,我们对那个提交执行 cherry-pick!对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包含由拣选出来的提交所引入的修改。
通过在这个远程分支上执行 git fetch,我们就可在本地获取这些修改。这不会以任何方式影响你的本地分支:fetch 只是单纯地下载新的数据而已。
尽管 git fetch 可用于获取某个分支的远程信息,但我们也可以执行 git pull。git pull 实际上是两个命令合成了一个:git fetch 和 git merge。当我们从来源拉取修改时,我们首先是像 git fetch 那样取回所有数据,然后最新的修改会自动合并到本地分支中。
git reflog 是一个非常有用的命令,可以展示已经执行过的所有动作的日志。包括合并、重置、还原,基本上包含你对你的分支所做的任何修改。