SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)

概念

丢弃:放弃未暂缓区的所有修改(工作区中的修改不会添加到版本控制,就是修改的东西不想提交,就直接丢弃)
移除:直接删除文件
克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓库做修改后一般都得先提交一次,再推送)
检出(checkout):切换不同分支
添加(add):添加文件到缓存区
移除(remove):移除文件至缓存区
暂存(git stash):保存工作现场
重置(reset):回到最近添加(add)/提交(commit)状态
合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
抓取(fetch):从远程仓库获取信息并同步至本地仓库
拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 pull=fetch+merge
推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致
分支(branch):创建/修改/删除分枝
标签(tag):给项目增添标签
工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝
终端(terminal):可以输入git命令行

拉取仓库及提交

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》
可以看到,没有暂存的文件无法提交

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

更新到本地

方法1、先获取再合并 fetch + merge

1、在服务器端修改Commit Test.txt文件,添加内容

服务器端修改文件1

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

2、从服务器获取远程仓库对本地仓库来说是否有更新,本地仓库并不会改变
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

3、合并远程仓库更新到本地
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

4、本地文件内容发生改变

方法2、直接拉取 pull= fetch + merge

1、再服务器端修改Commit Test.txt文件,文件内容

服务器端修改文件1
服务器端修改文件1

2、从远程仓库拉取代码
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

3、本地文件内容发生改变

拉取(pull)和获取(fetch)的区别

1、命令式解释:

pull = fetch + merge。

2、文字解释:

  • 拉取会把你本地仓库没有 而远程仓库有的更新写到你本地中;
  • 获取的用处更多的是用来查看对于你本地仓库的状态来说远程仓库是否有更新,仅此而已,并不会使你的本地仓库发生改变

冲突解决

配置外部比较工具BeyondCompare,安装破解自行搞定(需要自己安装,非SourceTree自带)
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

冲突解决方法1(常用方法)

1、构造冲突
远程仓库:修改Commit Test.txt文件内容为

服务器端修改文件1
服务器端修改文件2

本地仓库:修改Commit Test.txt文件内容为

服务器端修改文件2
服务器端修改文件1

SourceTree先提交到本地仓库
然后获取远程仓库
结果会形成本地需要推送远程,远程的需要拉取到本地
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

先拉取远程仓库内容刚到本地
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

选择本地已暂存的冲突文件,解决冲突,打开外部合并工具
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》
2、解决冲突
(1)在本地副本的已暂存文件 —-> 右键 —-> 解决冲突 —-> 打开外部合并工具。
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

(2)接着关闭Beynod Compare工具,冲突的那个感叹号没有了,并且会有一个 .orig 的文件生成。接着选中那个.orig文件,单击右键 —-> 移除。

接着 commit、push。
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

push完成,冲突解决完毕
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

冲突解决方法2(冲突非常少的情况)

1、构造冲突
远程仓库:修改Commit Test.txt文件内容为

服务器端修改文件2
服务器端修改文件2

本地仓库:修改Commit Test.txt文件内容为

服务器端修改文件1
服务器端修改文件1

SourceTree先提交到本地仓库
然后获取远程仓库,然后拉取远程仓库,解决冲突
《SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)》

暂存行:表示保留该内容
丢弃行:表示删除该内容
备注:区分于第一种方式,使用第一种方法解决时,不要点击”已暂存文件”,否则可能无法打开冲突文件

分支操作

使用sourcetree创建和使用分支是很方便的,不像之前使用的TortoiseGit只能在当前代码处创建分支,使用sourcetree的方便之处:
1、可以选择特定的某版本创建分支
2、代码检出时可以按照分支进行检出

分支的添加很简单

1、可以在当前的版本下创建分支
2、选择指定的提交创建分支
3、点击“创建分支”

分支提交到服务器:

在sourcetree右侧内容中的分支列表中,选中创建的分支,右键提交

分支合并:

1、分支合并功能和分支添加功能类似,这里不再详述,需要注意的是首先要切换到被合并的分支上,再进行合并操作。
2、分支合并时,可以选择具体的某提交进行合并,同时主分支可以合并到子分支;子分支可以合并到主分支;子分支之间也可以进行合并。

参考

SourceTree克隆、提交、推送、拉取等

SourceTree使用方法

采用可视化SourceTree插件beyondCompare解决冲突

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注