当你从远程仓库克隆时,实际上Git自动把本地的master
分支和远程的master
分支对应起来了,并且,远程仓库的默认名称是origin
。
要查看远程库的信息,用git remote
:
$ git remote
origin
或者,用git remote -v
显示更详细的信息:
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
上面显示了可以抓取和推送的origin
的地址。如果没有推送权限,就看不到push的地址。
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
如果要推送其他分支,比如dev
,就改成:
$ git push origin dev
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
-
master
分支是主分支,因此要时刻与远程同步; -
dev
分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步; -
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
-
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!
<video controls="controls" height="434" width="648"></video>抓取分支
多人协作时,大家都会往master
和dev
分支上推送各自的修改。
现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆:
$ git clone git@github.com:michaelliao/learngit.git
Cloning into 'learngit'...
remote: Counting objects: 46, done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 46 (delta 16), reused 45 (delta 15)
Receiving objects: 100% (46/46), 15.69 KiB | 6 KiB/s, done.
Resolving deltas: 100% (16/16), done.
当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master
分支。不信可以用git branch
命令看看:
$ git branch
* master
现在,你的小伙伴要在dev
分支上开发,就必须创建远程origin
的dev
分支到本地,于是他用这个命令创建本地dev
分支:
$ git checkout -b dev origin/dev
现在,他就可以在dev
上继续修改,然后,时不时地把dev
分支push
到远程:
$ git commit -m "add /usr/bin/env"
[dev 291bea8] add /usr/bin/env
1 file changed, 1 insertion(+)
$ git push origin dev
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 349 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
fc38031..291bea8 dev -> dev
你的小伙伴已经向origin/dev
分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:
$ git add hello.py
$ git commit -m "add coding: utf-8"
[dev bd6ae48] add coding: utf-8
1 file changed, 1 insertion(+)
$ git push origin dev
To git@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. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull
把最新的提交从origin/dev
抓下来,然后,在本地合并,解决冲突,再推送:
$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:michaelliao/learngit
fc38031..291bea8 dev -> origin/dev
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 dev origin/<branch>
git pull
也失败了,原因是没有指定本地dev
分支与远程origin/dev
分支的链接,根据提示,设置dev
和origin/dev
的链接:
$ git branch --set-upstream dev origin/dev
Branch dev set up to track remote branch dev from origin.
再pull:
$ git pull
Auto-merging hello.py
CONFLICT (content): Merge conflict in hello.py
Automatic merge failed; fix conflicts and then commit the result.
这回git pull
成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push:
$ git commit -m "merge & fix hello.py"
[dev adca45d] merge & fix hello.py
$ git push origin dev
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 747 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
291bea8..adca45d dev -> dev
因此,多人协作的工作模式通常是这样:
-
首先,可以试图用
git push origin branch-name
推送自己的修改; -
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; -
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用
git push origin branch-name
推送就能成功!
如果git pull
提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
-
查看远程库信息,使用
git remote -v
; -
本地新建的分支如果不推送到远程,对其他人就是不可见的;
-
从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; -
在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致; -
建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name
; -
从远程抓取分支,使用
git pull
,如果有冲突,要先处理冲突。
感觉本站内容不错,读后有收获?
还可以分享给朋友
相关推荐
3. **Git服务器和远程仓库**:理解如何配置Git远程仓库至关重要,因为这使得团队协作成为可能。我们将讨论`git remote`命令的用法,添加、删除和管理远程仓库,以及推送 (`git push`) 和拉取 (`git pull`) 更新。 4...
在多人协作中,通常情况下,每个开发者都有自己的本地 Git 仓库,他们可以在本地仓库中进行修改,并将修改推送到远程仓库中。在这种情况下,如何 garantiee 协作的顺畅? 答案是使用 Git 的分支机制。每个开发者...
在多人合作开发中,首先需要初始化一个 Git 仓库。可以使用 `git init` 命令创建一个新的 Git 仓库,也可以使用 `git clone` 命令克隆一个已经存在的仓库。初始化仓库后,需要将仓库与远程服务器连接,以便与其他...
本文将详细介绍使用 GitHub 进行多人协作开发的过程,包括登录 Git 账号、建立本机电脑和 GitHub 远程仓库的连接、fork 别人仓库、clone 到本地、通过 Git 修改编辑、更新内容、将本地仓库更新至远程仓库、发送 pull...
### Git基本命令、Android Studio集成Git及多人协作指南 ...通过以上步骤,我们可以有效地利用Git和Android Studio进行项目版本控制和多人协作开发。这种模式不仅提高了开发效率,还确保了代码的安全性和一致性。
" Git 远程分支合并开发 Python 项目" 本文档旨在为已经了解 Git 基本操作的开发者提供使用 Git 远程分支管理 Python 项目的方法。...通过使用 Git 远程分支,可以实现多人合作开发项目,提高开发效率和协作性。
git 服务端安装是在服务器端安装 Git 服务器,以便多人协作开发和版本控制。安装 Git 服务端需要 root 权限,可以使用 yum install git 命令安装。在安装完成后,需要创建 Git 用户和仓库,设置仓库的权限和路径。 ...
可以通过创建一个小项目,在本地使用Git进行版本控制,然后将其推送到GitHub这样的远程仓库中。通过这种方式,不仅可以熟练掌握Git的基本命令,还可以学会如何与他人协作。 总之,Git作为一种强大的分布式版本控制...
常用的远程仓库操作命令包括git push来推送本地的变更到远程仓库,git pull来拉取远程的更新到本地仓库,以及git clone来克隆一个远程仓库到本地进行工作。 总的来说,Git为软件开发提供了一套完整的版本控制解决...
在多人协作的项目中,通常会有一个分支策略,例如,一旦一个特性分支的开发完成并合并,就应该及时删除,以避免不必要的混乱。 在实际开发中,为了方便管理和跟踪,还可以使用一些辅助工具,比如`git-flow`,它提供...
Git使用教程,学会使用git以及github远程仓库操作 本资源提供了一个详细的Git使用教程,涵盖了Git的基本概念、安装、配置、创建本地仓库、关联远程分支、删除远程分支关联、删除分支、git stash、git reset、git ...
Git 是一个分布式版本控制系统,广泛应用于软件开发中的多人协作。在Git中,多人协作的核心在于如何有效地管理和同步各自的工作进度,避免冲突并确保代码的稳定。以下是对标题和描述中涉及的知识点的详细解释: 1. ...
它能够帮助开发者们管理代码变更历史,实现多人协作开发,同时支持分支管理和合并等功能。通过Git进行版本控制,可以有效地提高开发效率和代码质量。 #### 二、Git新建仓库步骤 根据提供的内容,我们可以总结出...
Git是分布式版本控制系统,它允许...以上是Git的基本操作和协作开发流程,通过熟练掌握这些命令,可以有效地进行团队合作,确保代码版本控制的高效和准确。在GitHub或GitLab等平台,这些技能是进行开源项目协作的基础。
1. **Git远程仓库的创建与连接** - **GitHub**:最流行的Git托管平台,用户可以免费创建公共仓库或付费创建私有仓库。 - **GitLab**:另一个广受欢迎的Git托管平台,功能类似GitHub,提供更多的企业级服务。 - **...
- **团队开发**:在Git中,可以通过创建和切换分支进行多人协作。每个团队成员可以在自己的分支上独立工作,然后将更改合并到主分支,实现代码同步。 - **权限管理**:通过邀请成员并设置权限,可以控制团队成员对...
Git 通过记录每次修改,使得开发者可以在任何时候回溯到项目的某个特定版本,同时支持多人协作开发,避免了不同开发者之间的代码冲突。 在使用 Git 时,首先要了解基本操作。例如,`git init` 命令用于在本地创建一...
### 本地项目如何上传到码云远程仓库 ...通过上述步骤,本地项目就可以成功地上传到码云远程仓库,并实现多人协作开发。这种方式不仅提高了开发效率,还能有效避免代码冲突,确保项目的顺利进行。
Git仓库可以初始化、克隆现有仓库或拉取远程仓库的数据。日常的版本控制活动包括记录更新、查看状态、跟踪新文件、暂存文件、忽略文件、提交更新以及撤销操作等。 分支管理是Git的一个核心功能,它允许开发者创建...
git的安装 使用 每一步的详细步骤 git是一个分布式的版本控制系统 倡导多人协作开发代码 使用git可以很好的来把握代码的质量 git也可以去回退版本 若这次的提交不是很满意的话可以直接回退到上次的版本 git是分布式...