Please enter a commit message to explain why this merge is necessary.
请输入提交消息来解释为什么这种合并是必要的
demo_image
git 在 pull
或者 merge
合并分支的时候有时会遇到这个界面。如果要输入解释的话就需要按照以下不着解决。(若无需解释,可以跳过第 1、2 步,直接从下面第 3 步开始)
解决方法:
1.按键盘字母 i
进入 insert 模式。
2.修改最上面那行黄色合并信息,可以不修改。
3.按键盘左上角 Esc
。
4.输入 :wq
,注意是 冒号+wq
,按回车键 Enter
即可。
用 git rm
来删除文件,同时还会将这个删除的操作记录下来。 用 rm ,仅仅是删除了物理文件,没有将其从 git 的记录中删除。
直观的来讲,git rm
删除过的文件,执行 git commit -m "abc"
提交时,会自动将删除该文件的操作提交上去。
而用 rm
命令直接删除的文件,单纯执行 git commit -m "abc"
提交时,则不会将删除该文件的操作提交上去,需要在执行 commit 的时候,多加一个-a 参数, 即 rm
删除后,需要使用 git commit -am "abc"
提交才会将删除文件的操作提交上去。
比如:
删除文件 test.file
git rm test.filegit commit -m "delete test.file"git push
或者
rm test.filegit commit -am "delete test.file"git push
删除目录 work
git rm work -r -fgit commit -m "delete work"git push
# 1.Checkoutgit checkout --orphan latest_branch# Add all the filesgit add -A# Commit the changesgit commit -am "commit message"# Delete the branchgit branch -D master#5.Rename the current branch to mastergit branch -m master# 6.Finally, force update your repositorygit push -f origin master
给 fork 配置远程库
# 使用git remote -v# 查看远程状态# 确定一个被同步给 fork 远程的上游仓库git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY# 再次查看状态确认是否配置成功
同步 fork
# 从上游仓库 fetch 分支和提交点,提交给本地 master,并会被存储在一个本地分支 upstream/mastergit fetch upstream# 切换到本地主分支(如果不在的话)git fetch upstream# 把 upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容。git merge upstream/master# 如果想更新到 Github 的 fork 上,直接git push origin master
git mv -f oldfolder newfolder
git add -u newfolder
-u
选项会更新已经追踪的文件和文件夹。
git commit -m "changed the foldername whaddup"
git mv foldername tempname && git mv tempname folderName
在大小写不敏感的系统中,如 windows,重命名文件的大小写,使用临时文件名
git mv -n foldername folderName
(显示重命名会发生的改变,不进行重命名操作)
英文状态下 按 Q
# oldhttps://github.com/tsejx/git-guidebook.git# newhttps://github.com/tsejx/Git-Guidebook.git
查看当前项目链接远程仓库地址
git remote -v
第一种:通过命令行直接修改远程地址
cd 本地仓库目录# 查看所有远程仓库,git remote xx 查看远程仓库地址(如 xxx 为 origin)git remotegit remote set-url origin https://github.com/tsejx/Git-Guide.git
第二种:先删除远程仓库再添加远程仓库
cd 本地仓库目录# 查看所有远程仓库,git remote xx 查看远程仓库地址(如 xxx 为 origin)git remotegit remote rm origingit remote add origin https://github.com/tsejx/Git-Guide.git
第三种:直接修改配置文件
# 1. cd 本地仓库目录# 2. vim config# 3. 修改 [remote "origin"] 下的 url 即可
撤销最近一次 git merge
git reset --merge HEAD^
由于拼写错误导致需要修改文件名大小写后重新提交代码,结果发现 git status 中并未找到该变化,究其原因是 Git 默认配置了忽略大小写敏感。
解决方法:
# 查看忽略大小写配置项git config core.ignorecase# 设置大小写敏感为敏感git config core.ignorecase false
假设我把 vuejs fork 到了我的账户下,但是原项目会一直保持更新,我的账户下的 vuejs 并不是最新的代码,因此需要保持与原项目代码保持一致。
# 1. 把 fork 后的仓库克隆到本地git clone https://github.com/tsejx/vue.git# 2. 进入根目录,增加远程分支(fork 的分支),名为 update_stream(自定义)到本地git remote add update_stream https://github.com/vue/vue.git# 3. 检查状态# 通过以下命令会发现多出 update_stream 的远程分支git remote -v# 4. 把远程分支 update_stream 的代码拉取到本地git fetch update_stream# 5. 合并对方远程原始分支 update_stream 的代码git merge update_stream/master# 6. 把最新的代码推送到你的 Github 上git push origin master# 7. 如果需要给 update_stream 发送 Pull Request
打开 Github 上你的仓库
点击 Pull Request => 点击 New Pull Request => 输入 Title 和功能说明 => 点击 Send pull request
在使用 Git 创建项目时候,在两个分支合并的时候会出现以下情况。 有时会在 git pull
或 git push
时候遇到,因为两个分支没有取得关系,也就是原本是独立非关联的。
fatal: refusing to merge unrelated histories
只需要在操作命令后加上 --allow-unrelated-histories
即可解决。
git merge master --allow-unrelated-historiesgit pull origin master --allow-unrelated-histories
Are you sure you want to continue connecting (yes/no)?
时,选择 yesls -al ~/.ssh
ssh-keygen -t rsa -C "Github UserName"
(双引号内为 Github 用户名),按三次回车cat ~/.ssh/id_rsa.pub
生成新的 SSH场景
分析
对于远程仓库中已经删除了的 tag,即使使用 git fetch --prune,甚至 git fetch --tags 确保下载所有 tags,也不会让其在本地也将其删除的。而且,似乎 git 目前也没有提供一个直接的命令和参数选项可以删除本地的在远程已经不存在的 tag
解决方法
# 删除所有本地分支git tag -l | xargs git tag -d# 从远程拉去所有信息git fetch origin --prune
参考:https://blog.csdn.net/lyc_stronger/article/details/51954852
解决方法:
vim /etc/hosts
github.com
相关的 dns ip 注释# 192.30.252.129 github.com# 192.30.252.131 github.com# 204.13.251.16 github.com
估计是 github.com 的动态 IP 导致相关问题
解决方式:
# 格式git remote set-url origin git+ssh://git@github.com/<username>/<repository-name>.git# 例如git remote set-url origin git+ssh://git@github.com/tsejx/git-guidebook.git