报错
情况一:git pull报错
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> release
其实,输出的提示信息说的还是比较明白的。
使用git在本地新建一个分支后,需要做远程分支关联。如果没有关联,git会在下面的操作中提示你显示的添加关联。
关联目的是在执行git pull, git push操作时就不需要指定对应的远程分支,你只要没有显示指定,git pull的时候,就会提示你。
解决方法:
就是按照提示添加一下呗:
git branch --set-upstream-to=origin/remote_branch your_branch
其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
或者使用
git push origin xxx
情况二:git push报错
To github.com:michaelliao/learngit.git
! [rejected] dev -> dev (non-fast-forward)
error: failed to push some refs to 'git@github.com:michaelliao/learngit.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这是因为远程分支比你的本地更新,有人先于我们提交代码到远程
解决方法:
拉取最新代码,然后在push
git pull
情况三:git add报错
案例一:
Changes not staged for commit
可是我们明明有修改啊!
解决方法:
目录层级不对,找到正确的再次执行命令
案例二:
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.
因为这个文件被我们忽略了
解决方法:
强制提交
git add -f xxx
疑问
情况一:别人在远程库中已经新建好了一个分支,我们想要在本地创建该分支
git checkout dev/master
git pull
git branch -r
git checkout origin/xxx -b xxx
git push origin xxx
情况二:开发新的项目时,我们肯定要新建分支,如果我们/别人已经在远程库中新建了一个分支,如果我们也要在该分支上开发,那么可以在本地直接从该远程库中创建分
支(实际上同上)
git checkout origin/item-1.9-1125(远程分支名) -b item-1.9-1125(本地分支名,无所谓叫什么) : 切远程分支到本地,这样远程分支和本地分支就关联起来了,push的话只会push到该远程分支
情况三:当我们改完代码,而且是第一次push,发现push不上去时
git push origin 分支名 -> push到远程
情况四:如果我们两个人同时完成一个项目,并且在各自的分支开发,上预发环境或者上线的时候我们需要将两人的代码merge到一个分支,此时我们需要新建一个分支,
将两人的代码merge到该分支,用这个分支上预发和上线
假定现在两人都开发完,准备合代码的分支叫item-merge
a: 从当前的分支新建分支item-merge
git checkout -b item-merge (已经新建了item-merge分支,该分支包含a的代码)
b: 已经将自己的代码push到item-merge
a: git fetch (拉下新分支)
git pull origin item-merge (该分支为想要拉取代码的分支,这样我们就将别人的代码拉到了我们的这个分支)
⚠️在情况四的基础上,如果第一个人先push到后端并部署了,第二个人在push时会提醒先pull,pull之后发现会有冲突,那么我们在后端库中找到对应的文件解决冲突
“Accept CurrentChange”接受当前更改,之后在push
情况六:如果我们在本地修改了两个文件a、b,没有add也没有commit,此时我们想要丢弃对a文件的修改,但保留对b文件的修改
git checkout a(想要丢弃的文件名)
情况七:现有a、b两个文件,且内容相同,我们修改了a文件,如果想要b文件中也有a文件中的修改
git checkout b
git merge a
这样我们就将a文件的内容合并到了b文件
情况八:发现pull不下来
可能不是在当前分支修改的,要checkout到修改的分支,然后pull,然后checkout回自己的分支,merge一下,之后add、commit、push