1、本地仓库 & 远程仓库
1、创建本地仓库
git init
2、链接远程仓库,默认名称是origin
git remote add origin https://github.com/coding-xian/my-nlp.git
3、查看链接到的远程仓库地址
git remote -v
注意:会显示fetch和push两行,其中fetch标识的是远程仓库到本地仓库的地址(从哪里获取),
push标识的是本地仓库提交到的远程仓库地址(推送到哪里去);
4、删除本地仓库和远程仓库的链接(如果不行,去config中删除)
git remote rm origin
注意:origin是我们自定义的远程仓库的名称,仓库下面可能存在多个分支,所以仓库>分支
5、查看远程仓库
git remote
2、本地仓库的分支 & 远程仓库的分支
5、查看分支
git branch 仅查看本地分支,带*号的是当前正在使用的分支
git branch -r 仅查看远程分支
git branch -a 同时查看本地分支(绿色)和远程分支(红色)
注意:我们在查看分支之前,要git add和git commit,因为git
的分支必须指向一个commit,提交第一个commit后git自动创建
master分支。(https://blog.csdn.net/qq_39671159/article/details/81261049)
6、创建分支
创建本地分支:
git branch 123 创建本地分支,名称是123
git checkout 123 切换到123分支
git checkout -b local_456 即创建local_456分支,又切换到了local_456分支
创建远程分支:
git push origin local_456:remote_456, 将本地分支local_456直接push到远程,就创建了远程分支remote_456;
7、删除分支(不能删除当前所在的分支)
删除本地分支:
git branch -d 123
删除远程分支:
git push origin :remote_456 删除远程分支,就是push一个空的分支到远程分支remote_456上,就删除了它
或者:
git push origin --delete remote_456
3、本地分支和远程分支之间的映射关系
8、查看本地所有分支和远程分支映射关系,有映射则会显示远程分支,没有就不显示
git branch -vv
9、建立“当前”本地分支和远程分支的映射关系
git branch -u origin/remote_456
或者:
git branch --set-upstream-to origin/remote_456
注意:这个操作是需要切换到你需要建立联系的本地分支上
注意:一个远程分支可以和多个本地分支建立映射,但是一个本地分支不能和多个远程分支建立映射
10、删除“当前”本地分支与远程分支的映射关系
git branch --unset-upstream
11、“新建”本地分支和远程分支的映射(需指定本地分支,没有默认当前分支)
git checkout -b local_789 origin/remote_456
这条指令会新建一个local_789本地分支,并和已有的远程分支建立映射
12、一个综合方法:通过push本地分支到远程分支(push),并和其建立映射(-u)
git push -u origin local_789:remote_789
13、对12的简化:通过push,创建一个和本地分支相同名称的远程分支,并建立映射;
git push -u origin local_456
4、一些常见场景下的操作
1、将本地分支master push到远程分支上,此时会在远程新建一个同名的master分支,并且本地master会和远程master建立映射
git push -u origin master
说明:搞这个映射的意义应该在于后续操作能够简化操作。
2、当我们修改了工作区中的文件时,需要先add到缓存区,再commit到当前分支上,最后才能push到远程分支上
比如,我修改了readme.txt和LICENSE.txt两个文件的内容,
首先,要将修改的文件提交的缓存区
git add readme.txt LICENSE.txt
或者:
git add .
然后,将缓存区的内容提交到本地仓库的分支上,即当前所在的分支上
git commit -m 'I changed 2 file, readme.txt and LICENSE.txt'
最后,将本地分支的内容提交到远程分支上(当我们建立了本地分支和远程分支的映射,就不需要指定“local_branch : remote_branch”了,同名的时候只需要指定前者)
git push origin master
3、当我们在远程github上修改(增删改)了分支中的文件内容或文件
比如:从github上操作,在master分支中添加了一个999文件
此时,我再从本地分支push到远程分支,就会报错:rejected
解决方案1:
直接强推,git push -f origin master,此时999文件就不会存在了,因为相当于本地分支的内容替换了远程分支
解决方案2:
首先,git fetch origin master 取回远程分支master的更新
然后,git merge origin/master 将当前本地分支与取回的修改过的远程master合并(然后会发现自己的本地工作区多了一个999文件)
或者:
git rebase origin/master
最后,git push origin master
4、远程操作时,即在github上给远程仓库创建新的分支后,本地应该进行同步
git remote # 列出所有远程主机
git remote update origin --prune # 更新远程仓库origin的分支
git branch -r # 列出远程分支
补充(2021-10-12):
git push origin master:ess-v1 将本地master分支内容push到远程分支origin/ess-v1上,这里创建了ess-v1分支
git branch -u origin/ess-v1 然后再将当前分支和origin/ess-v1分支关联起来