接上一篇文章...
Git基本操作
填写好你的仓库名称与地址
仓库创建好之后,可以查看仓库的信息
点击克隆/下载中的复制可以获取该仓库的地址
前面已经在码云上创建了自己的远程仓库,目前仓库成员只有自己一个人(身份为管理员)。在企业实际开发中,一个项目往往是由多个人共同开发完成的,为了使多个参与者都有权限操作远程仓库,就需要邀请其他项目参与者成为当前仓库的成员
2.1 进入仓库管理中心,点击仓库成员管理
2.2 直接添加成员,输入成员在gitee的邮箱地址
2.3 输入邮箱后,自动提示码云用户信息,确定后点击添加
2.4 确定成员信息,点击提交
2.5 被邀请人员,自己登录gitee.com,点击右上角通知,然后进入私信列表,然后点击确认加入
3.1 Git环境配置
3.1.1 下载与安装
下载地址: Git - Downloads
双击下载的安装文件来安装Git。安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。
3.1.2 基本配置
当我们将修改的代码提交到本地仓库的时候Git要求必须要提交用户的名称和邮箱
git config --global user.name “你的name”
git config --global user.email "你的邮箱"
git config --global credential.helper store # git push的时候记住用户名和密码
以上配置信息默认存储在用户目录下,如果设置错误,可以删除以下如图文件,重新操作以上命令即可。
查看配置信息
git config --list
git config user.name
通过上面的命令设置的信息会保存在~/.gitconfig文件中
要使用Git对我们的代码进行版本控制,首先需要获得构建本地仓库
通常有两种方式:
在本地初始化一个Git仓库
从远程仓库克隆一个仓库
在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
进入这个目录中,点击右键打开Git bash窗口
执行命令git init如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
创建一个空的文件夹,右击打开Git Bash
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令为: git clone 远程Git仓库地址
远程Git仓库地址有两种形式,一种是HTTPS协议(HTTP安全协议),另一种是SSH协议(安全外壳协议)。
注意:HTTPS协议如果登录私有库必须提供用户名及密码。
clone 私有库(HTTPS协议)
clone 公开库(HTTPS协议)
无需提供用户名及密码
查看,cd到克隆的文件夹,可以看到,master主线,在clone的时候同时帮我们checkout检出
3.3.1 创建一个需要提交的文件
在该仓库下创建a.txt
3.3.2 查看当前状态
命令形式:git status [-s]
命令形式:git add 单个文件名|通配符 ( . 代表全部文件)
添加一个或多个文件到暂存区
再添加一个b.txt,然后打开a.txt进行内容修改,最后再命令窗口输入git status
提交所有git add .
取消已跟踪文件(只能将暂存区的撤销回到工作区)
命令形式:git reset 单个文件名或通配符 ( . 代表全部文件)
撤销当前文件或全部内容到修改之前的状态
命令形式:git commit -m '注释内容' 提交暂存区内容到本地仓库的当前分支,"A"代表“Apend:添加”
注意:如果前面步骤中没有配置用户名和邮箱,这里会commit会让你重新配
命令形式:git log
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:
一定在工程初始化时,提前准备好需要忽略的文件列表(例如.idea文件夹、taget文件夹)
例如:模仿项目生成的target文件夹,仓库在目录下创建target文件夹,tartget文件夹下创建A.class文件
Git Bush窗口中输入命令git status -s
在.gitignore文件中添加忽略target/,再次输入git status -s,效果立竿见影
本地初始化的Git仓库和远程克隆的的GIt仓库的区别在于,本地仓库没有和远程仓库做关联(所以不推荐使用本地初始化Git仓库)
3.4.1 添加远程数据库
此操作是先初始化本地库(创建一个空的文件夹),然后与已创建的远程库进行对接(不推荐,一般都是现在远程仓库创建项目,再克隆到本地)。
命令形式: git remote add <远端名称> <仓库路径>
远端名称,默认是origin,取决于远端服务器设置
仓库路径,从远端服务器获取此URL
3.4.2、查看GIt仓库关联的远程仓库
命令形式:git remote
如果是远程仓库克隆生成的Git仓库,会显示关联的远程仓库,
命令形式:git push 【remote name】【branch name】
【remote name】:远程仓库名:通过git remote查看的结果
【branch name】 :分支,master
推送前建议把工作区的内容都提交到本地仓库
当你想分享你的代码时,可以将其推送到远程仓库。
用户推送之前,需要先pull远端仓库,如果发现提交版本不一致,出现如下错误:
错误模拟:
1.重新从远程克隆我们刚已经提交的仓库到第二个Git仓库,取名随意,例如other-git
2.在other-git中打开Git Bush通过命令克隆远程仓库study-git
修改第一个仓库中的a.txt,例如添加"哈哈",然后添加到暂存-本地-推送到远程仓库
修改第二个仓库other-git中的a.txt,添加"嘿嘿",然后添加到暂存-本地-推送到远程仓库
原因:Git规定如果远程仓库的内容改变了,本地仓库Push前要先Pull(不仅fetch抓取并且merge合并了),进行内容合并,而且如果合并冲突,不能在远程仓库解决,必须Pull拉取后在本地解决合并冲突
修订错误,在other-git的Git Bush中先通过命令git pull
查看other-git中的a.txt,发现了合并的冲突
HEAD:代表你的代码
======下是别人的代码
d7dec9f84...:代表你提交的编码
错误解决合并冲突示范
将别人的代码去掉,保留我自己的,然后重新add->commit->push,此时如果其他组员需要push,他在push前正常先pull,然后发现pull后自己的"哈哈"被“嘿嘿”替代了!这样组员的矛盾就产生了
此操作是先创建远程库,本地Clone,然后在基于clone的本地库进行操作,建议按此方式
此章节内容,3.2.2已操作过。
抓取 命令形式:git fetch【remote name】【branch name】 (不推荐)
git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge
合并远程分支内容到当前,命令形式: git merge【remote name】【branch name】
拉取 命令形式:git pull【remote name】【branch name】 (推荐)
操作命令之前,务必把工作区的内容添加到暂存区在拉取代码。
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户提交,故需要先拉取远程仓库代码,经过合并后才能推送代码。在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。(4.4.3已经演示)
A用户修改代码推送到远程仓库
B用户修改代码提交到本地仓库
B用户修改代码准备推送到远程仓库
git默认把冲突的代码合并在一起,并做特殊标记,如图所示
解决冲突是由开发人员根据实际情况,把上面的冲突部分,进行修订。比如:
完成修订后,把代码保存到暂存区,然后提交到本地仓库,冲突解决完毕。