Git使用vi或vim命令打开、关闭、保存文件
1、vi & vim 有两种工作模式:
(1) 命令模式:接受、执行 vi & vim 操作命令的模式,打开文件后的默认模式;
(2) 编辑模式:对打开的文件内容进行 增、删、改 操作的模式;
#在编辑模式下按下 ESC 键,回退到命令模式。
2、创建、打开文件:$ vi 文件名
(1)使用 vi 加 文件路径(或文件名)的模式打开文件,如果文件存在则打开现有文件,如果文件不存在则新建文件,并在终端最下面一行显示打开的是一个新文件。
(2)键盘输入字母 “i”或“Insert”键进入最常用的插入编辑模式。
3、保存文件:
(1)在插入编辑模式下编辑文件。
(2)按下 “ESC” 键,退出编辑模式,切换到命令模式。
(3)在命令模式下键入"ZZ"或者":wq"保存修改并且退出 vi 。
(4)如果只想保存文件,则键入":w",回车后底行会提示写入操作结果,并保持停留在命令模式。
4、放弃所有文件修改:
(1)放弃所有文件修改:按下 "ESC" 键进入命令模式,键入 ":q!" 回车后放弃修改并退出vi。
(2)放弃所有文件修改,但不退出 vi ,即回退到文件打开后最后一次保存操作的状态,继续进行文件操作:按下 "ESC" 键进入命令模式,键入 ":e!" ,回车后回到命令模式。
git关联、删除、推送远程仓库
- git remote -v 查看当前关联的远程仓库
- git remote add second [url] 关联远程仓库
- git remote set-url origin [url] 修改远程仓库
- git push origin master 推送到远程仓库
- git remote remove origin 删除远程仓库
注意事项:以指定用户身份推送或拉取 git push origin master https://用户名@xxx/xxx.git
查看git的所有配置
git config --list
查看git配置的邮箱和用户名
git config user.email
git config user.name
只修改当前项目下的邮箱和用户名
git config user.email "***@**.com
git config user.name "你的用户名"
修改全局的邮箱和用户名
git config --global user.email "***@**.com
git config --global user.name "你的用户名"
查看.git文件所在目录
git rev-parse --git-dir
重置配置信息
git config --unset
重置刚刚提交的用户信息
git commit --amend --reset-author
温馨提示:项目配置git config < 全局配置 git config --global < 系统配置 git config --system
利用rebase指令合并多次提交
合并步骤
- 查看 log 记录,使用
git rebase -i选择要合并的 commit - 编辑要合并的版本信息,保存提交,多条合并会出现多次(可能会出现冲突)
- 修改注释信息后,保存提交,多条合并会出现多次
- 推送远程仓库或合并到主干分支
首先查看提交记录 git log
从HEAD版本开始往过去数3个版本
$ git rebase -i HEAD~3
# 合并指定版本号(不包含此版本)
$ git rebase -i [commitid]
# 从HEAD版本开始往过去数3个版本
$ git rebase -i HEAD~3
说明:
- `-i(--interactive)`:弹出交互式的界面进行编辑合并
- `[commitid]`:要合并多个版本之前的版本号,注意:`[commitid]` 本身不参与合并
指令解释(交互编辑时使用):
- p, pick = use commit
- r, reword = use commit, but edit the commit message
- e, edit = use commit, but stop for amending
- s, squash = use commit, but meld into previous commit
- f, fixup = like "squash", but discard this commit's log message
- x, exec = run command (the rest of the line) using shell
- d, drop = remove commit
执行了rebase命令之后,会弹出一个窗,将pick改为squash或者s,之后保存并关闭文本编辑窗口即可
pick 3759b84 update clear-logs.sh
s 1693a6f update clear-logs.sh version
pick 8c8f3f4 update website
保存退出,Git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史
不然我们的修改就丢弃了。修改以后要记得敲下面的命令:
git add .
git rebase --continue
如果你想放弃这次压缩的话,执行以下命令:
git rebase --abort
如果没有冲突,或者冲突已经解决,则会出现修改后的的窗口,输入:wq保存退出即可
最后提交到远程(注意不要覆盖别人的代码,因为这几个都是我自己提交的,另外合并好之后不要pull
否则不但没有合并,远程还会多出两次提交,执行以下命令强制推送到远程)
git push --force origin master ==> 简写 git push -f
利用rebase指令删除远程提交
删除最后一次提交
- 第一步:回滚上一次提交
git reset --hard HEAD^ - 第二步:强制提交本地代码
git push origin master -f
删除指定commit提交(非最后一次提交)
- 第一步:强制提交本地代码,可以结合git提交记录一起看
git reflog - 第二步:rebase操作
git rebase -i 35f96e1(把原本的pick单词修改为drop就表示该ID对应的 commit log 我们需要删除,然后保存退出即可) - 第三步:提交至远程
git add . # 冲突时使用
git commit -m "new commit" # 冲突时使用
git rebase --continue # 冲突时使用
git push origin 分支 -f
修改提交说明
误提交大文件怎么办?
git rm --cached xx.png
git commit --amend
若历史版本,需要变基 git rebase -i <commit-id>
删除合并历史 命令
rm -rf .git/MERGE*
如何将B分支的一个commit合并到A分支:
git checkout B- //查看提交日志
git log - 找出要合并的commit ID
- 切换到A分支上
git checkout A git cherry-pick commitID
git合并不同仓库的分支代码(两个仓库需要有一个提交节点代码是相同的)
原文链接:git合并不同仓库的分支代码 | 果实的技术分享 (shengshunyan.xyz)
- 第一步:在A项目添加你所需要合并的项目仓库
git remote add pony-B http://xxx.git - 第二步:查看A项目的所有远程仓库
git remote show - 第三步:拉取B项目的仓库
git fetch pony-B - 第四步:查看你所需要合并分支的提交记录
git log pony-B/master(根据自己需要的分支) --oneline - 第五步:根据第4步得出所需的提交commitId
git cherry-pick f2fbbf8a - 第六步:完成后可删除关联的B项目仓库
git remote remove pony-B