关于Git指令的一个问题

本地仓库与远程仓库关联

使用Git命令将本地仓库和远程仓库连接有两种方法。

第一种:

远程(Github)先建立一个空的仓库,然后执行以下指令:

1
2
3
4
5
6
7
8
git remote add origin git@github.com:michaelliao/learngit.git
# 需要改成自己的库 否则推不上去;别人的库则fork成自己的库

# 把本地库的内容推送上去
git push -u origin master

# 第一次以后的提交可以使用命令
git push origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。[1]

第二种:

不用关联Git仓库,使用ssh密钥的方式直接从Git克隆源码到本地,与本地关联。

1
2
3
4
5
6
7
8
# 从GitHub上克隆项目到本地
git clone git@github.com:michaelliao/learngit.git # 需要改成自己的库 否则推不上去;别人的库则fork成自己的库
# 添加文件
git add ./* # 将目录中所有文件添加
# 提交缓存
git commit -m '提交' # ''里的算注释,在仓库可以看到
# 提交到远程GitHub仓库
git push -u origin master

删除远程库

1
2
3
4
5
6
7
# 查看远程库的信息
git remote -v

result:
origin git@github.com:michaelliao/learn-git.git (fetch)
origin git@github.com:michaelliao/learn-git.git (push)
# 根据名字删除

此时,删除仅仅是删除本地与远程的绑定关系。远程库并没有被删除。需要删除还需要登入GitHub手动删除。

分享一个错误

在某次提交时,我得到了一个这样的报错。

Screen Shot 2023-02-19 at 15.11.20

这是由于远程库与本地库不一致。我一开始使用的方法是手动上传,同步一次库。

(Note: starting Oct. 2020, any new repository is created with the default branch main, not master. And you can rename existing repository default branch from master to main.
The rest of this 2014 answer has been updated to use “main“)

Stackoverflow查阅本问题以后,VonC给出的解决方法是:

1
2
3
4
5
6
7
# 老的方法
git pull --rebase
git push

# 下面是完整的语法
git pull --rebase origin main
git push origin main

With Git 2.6+ (Sept. 2015)以后,可以使用

1
2
git config --global pull.rebase true
git config --global rebase.autoStash true

最后直接git push即可(第一次可以使用git push -u origin main

reference

[1]https://www.liaoxuefeng.com/wiki/896043488029600/898732864121440

[2]https://blog.csdn.net/dietime1943/article/details/85682688

[3]https://stackoverflow.com/questions/24114676/git-error-failed-to-push-some-refs-to-remote