参考:
列举一些疑问
Q1: git
中的 origin
到底指的是什么?
A1: 使用 git remote -v
查看绑定的远程仓库,然后我们会发现,其实origin
只是远程仓库的一个默认标签而已… 指代着某一个远程仓库… 然后如果要添加远程仓库作为标签,可以使用 git remote add <label> <link>
此问参考:
https://blog.csdn.net/u011478909/article/details/77683754
Q2: 在IDEA中创建库后右键项目文件夹没有Git选项
A2: 尝试在项目文件夹同目录创建Git repo
Q3: 何为快进模式? 弊端是啥?与非快进模式的区别是啥?
A3: 快进模式是指两个要合并的分支不存在冲突的时候,一个分支中的东西在另外一个分支中均存在且一模一样,此时就是简单的指向分支的指针移动,很快!所以就叫快进模式。
那么使用快进模式的弊端是啥? 就在于这种快速合并并不会保存另外一个分支的提交信息,在合并之后甚至你都不知道有另外一个分支的存在…因此使用非快进模式会使我们的提交历史更加清晰。
如何使用非快进模式?在普通的合并指令上加入 --no-ff
参数即可,如果需要加备注也是可以的。
此问参考:https://blog.csdn.net/andyzhaojianhui/article/details/78072143
Q4: git clone
\ git fetch
\ git pull
异同
A4: git clone
就是把远程仓库master
分支完完全全克隆到本地,有多少提交全部克隆到本地
git fetch
\ git pull
用于本地已经有该项目仓库的情况,命令作用是将远程仓库的最新提交与本地仓库进行同步
区别:简单的从效果上来说,git pull = git fetch + git merge
但是请不要认为git fetch
是没有存在必要的… 有时候可能git
会让你分步操作,特别是远程仓库上有你本地仓库没有的文件的时候,会要求你手动进行git merge
操作
此问参考:https://blog.csdn.net/qq_29545781/article/details/94910444
Q5: master
\ origin
\ origin/master
傻傻搞不清
A5:origin/master
是标签为 origin
的远程仓库(见Q1)的 master
分支的本地副本,在Q4中曾经提交到,可能会出现git pull
分成两步进行的需求。
这种情况的实例见下方代码示范:
git fetch origin master // 实际上执行这条指令后,远程仓库master分支已被同步到本地副本origin/master
git merge origin/merge // 将本地副本分支与当前分支合并
看了上面的示范,我们也许会情不自禁的蹦出两个问题
I. 如何fetch
其他或者多个远程分支?
git fetch <remoteReposLabel> <branch1> <branch2>
II.如何merge
多个分支?
git merge <branch1> <branch2>
此问参考:https://blog.csdn.net/u014599371/article/details/90055737
Q6: 我们一直在使用的--hard
参数是什么?
A6: --hard
参数的作用有,移动本地库的HEAD
指针,重置stage
,重置work dir
此问参考:https://blog.csdn.net/qq_15003505/article/details/81408826
Q7: 远程仓库多人协作?
A7:多人协作的工作模式通常是这样:
-
首先,可以试图用
git push origin <branch-name>
推送自己的修改; -
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; -
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!
注记:如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch -u <remoteRepoLabel>/<branch-name> <localBranchName>
此问参考:https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320
Q8: error: -refusing to merge unrelated histories
A8: $git pull origin master --allow-unrelated-histories
造成这个问题的原因是本地仓库 和 远程仓库是分别创立的,如果本地仓库的产生是直接从远程仓库那里克隆下来的就不会有这样的问题。
此问参考:https://blog.csdn.net/u012145252/article/details/80628451
Q9: 为什么git branch
时候看不到分支?为啥设置分支映射的时候提示分支不存在?
A9: 先commit
一次看看?
“因为
git
的分支必须指向一个commit
,没有任何commit
就没有任何分支
提交第一个commit
后git
自动创建master
分支” -------廖雪峰
此问参考:https://blog.csdn.net/qq_39671159/article/details/81261049
To be continue…