Git多人协作指南
本教程的目的是为了快速了解Git/Github的使用方法,并且能够指导读者快速上手多人项目。至于Git的安装不再本教程内,请读者自行搜索。
创建本地代码仓库并同步到远端Github
【1】. 创建本地仓库:
- 首先你得找到你的项目文件夹。然后调出Git Bash界面。
- 然后输入 【git init】来将项目文件夹创建成本地仓库。等待命令行执行完。
- 接着输入【git add README.md】,向本地仓库添加readme。等待命令行执行完。
-
接着输入 【git add .】 ,像本地仓库添加修改文件。等待命令行执行完。
再接着输入【git commit -m "XX这里填修改提示XX"】,向本地仓库提交修改。等待命令行执行完。
右击鼠标点击Git Bash Here
GitBash
【2】.创建远端Github仓库
登陆github注册账号后创建GitHub仓库。然后把项目名打上,【注意,先不要点击创建README】
填写
【3】.将本地仓库与远端相连接
打开 Git Bash , 继续输入【 git remote add origin XXXX 】XXX替换为: 你创建好的github地址
【4】.将本地仓库同步到远端
打开 Git Bash输入 【git push -u origin master】 。等待命令行执行完成。
到此位置,你已经能够将自己本地的项目文件上传到Github了。现在,反过来,怎么从github上获取项目到本地。
获取 Git 仓库
如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源项目贡献自己的一份力,这时就要用到 git clone 命令。
在你希望存放的更目录打开 Git Bash ,输入命令【git clone XXX】XXX替换为想要拷贝的远端仓库的网址。
命令执行完了之后,你就能看见一个一摸一样的项目文件夹。
到这里,仓库的双端同步已经完成。项目小组已经有相同项目文件的拷
贝。
接下来,要讲小组工作中的重点:提交更新、合并、拉取等等操作
更新
在将这部分时,首先要了解的是:工作目录下的每一个文件都不外乎已跟踪或未跟踪这两种状态。
已跟踪的文件是已经被纳入过版本控制的文件,工作一段时间后,它可以是修改/未修改的。未跟踪的就是工作中新增的文件还没纳入版本控制的文件。初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
现在你修改了文件,执行【git add .】将修改纳入暂存,【 git status】可以让你让看项目状态,在Changes to be committed:下能看到暂存的文件名。
简化输出status无需纳入git管理的东西,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。 执行【git .gitignore】,生成文件,打开文件输入要忽略的文件或目录结构,一个一行。
提交更新
完成将所有修改过或者新增的文件用 【git add .】添加到暂存区。然后使用【git commit -u 'XXX'】。【git commit -a -m 'xxx'】可以直接跳过添加暂存区的过程将跟踪的文件直接提交。
移除文件
【git rm xxxx】在暂存区中删除。
移动文件
【git mv file_from file_to】
查看提交历史
【git log -p -2】显示最近2次提交的内容差异, -p/-2 是可选参数
最新历史显示在最上面。
撤消操作
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:
【git commit --amend】这个将会将你重新修改的文件提交到暂存区。
撤消对文件的修改
两种情况:
一种是filename自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是filename已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令【git checkout -- file】。
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令【git reset HEAD file】,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,版本回退,不过前提是没有推送到远程库。
注意:这条命令是覆盖性的,他会由原来的文件覆盖你修改过的文件。
拉取
添加远程仓库
【git remote add <shortname> <url>】
现在你可以在命令行中使用对应的缩写来代替整个 URL。
例如,如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb:
现在 Paul 的 master 分支可以在本地通过 pb/master 访问到 - 你可以将它合并到自己的某个分支中,或者如果你想要查看它的话,可以检出一个指向该点的本地分支。
从远程仓库中抓取与拉取
【git fetch <remote-name>】
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
分支
使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
创建分支
【git branch <name>】
切换分支
【git checkout <branch-name>】
在分支中提交的修改在其他分支中是看不见的,需要合并分支,才行。
注:在你切换分支之前,保持好一个干净的状态。
合并分支
【git merge <branch name>】
删除分支
在分支利用完之后,应该及时删除。【git branch -d <branch name>】
遇到冲突时的分支合并
有时候合并操作不会如此顺利。 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。
这个时候,你需要【git status】来查看因冲突而未合并提交的文件。并且打开这些包含冲突的文件然后手动解决冲突。
这里推荐一个Diff/Merge工具,可以更方便的查看Diff/Merge信息。
SourceGear MergeDiff
到此,多人协作流程常识讲解完毕。查看更多请翻阅官方文档