远程仓库
远程信息
多人合作之前,我们需要看看是否处于同一个远程仓库下:
1
2
3
4
5
6
7
8
|
# 查看远程库的信息
git remote
# origin
# 显示更详细的信息
git remote -v
origin git@github.com:MJYEEE/blog.git (fetch)
origin git@github.com:MJYEEE/blog.git (push)
|
推送和拉取远程仓库
当我们拉取一个新远程的仓库时,默认情况下我们只有master一个分支(除非远程仓库里本来就有多个分支),这个时候我们如果我们本地仓库新建了一个分支dev,那它会不会在远程仓库上呢?肯定是不会的,我们可以用git pull
或者 push
来试一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$ 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> dev
$ git push
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin dev
|
当当前分支没有和远程分支建立连接时git pull
和git push
都会先提示我们与远程分支建立关系,现在我们先把当前分支与远程分支建立连接:
- 第一种情况:远程分支上没有我们当前的分支,我们需要用push的方式推送上去
1
2
3
4
5
6
7
8
9
|
$ git push --set-upstream origin dev
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag f54a6ba7
remote: Create a pull request for 'dev' on Gitee by visiting:
remote: https://gitee.com/mjyee/icrcs/pull/new/mjyee:dev...mjyee:master
To gitee.com:mjyee/icrcs.git
* [new branch] dev -> dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
|
- 第二种情况:远程分支已经有了我们当前的分支,我们可以直接连接:
1
2
|
$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'
|
这样我们就能在本地的dev分支推送到远程的dev分支上了。
当我们想取消本地分支与远程分支的连接只需要unset即可:
1
|
git branch --unset-upstream
|
1
|
git pull <remote> <branch>
|
这种情况下,拉取的分支本身便建立有连接。
简单多人合作
多人协作的工作模式通常是这样:
- 首先,可以尝试用
git push origin <branch>
推送自己的修改,如果推送成功则无事
- 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并
- 如果合并有冲突,则解决冲突,并在本地提交
- 没有冲突或者解决掉冲突后,再用
git push origin <branch>
推送就能成功