什么是git?
- git是一款开源的分布式版本控制工具
- 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
git的起源
- 作者是Linux之父:Linus Benedict Torvalds
- 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
git的现状
- 在国外已经非常普及,国内并未普及(在慢慢普及)
- 越来越多的开源项目已经转移到git
命令行使用git
初始化文件夹 作为服务器 会生成一个隐藏的git文件夹
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MDcwMDUxNC03MDM1MDE4MjgucG5n.png?w=700&webp=1)
当如果有新文件是 输入git status查看状态 会显示此文件未纳入管理
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MDI0MzUzMC0xNDkwOTA5Mzc5LnBuZw%3D%3D.png?w=700&webp=1)
将文件纳入管理
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MDgyMDUzMC0xOTQwNjU5OTY4LnBuZw%3D%3D.png?w=700&webp=1)
将文件commit提交( 或者git commit -a -m "修改")
如果文件被修改过再查看状态会显示已经被修改过
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MDkxMjk2Ny0xMjU3NTk1NjM5LnBuZw%3D%3D.png?w=700&webp=1)
注册邮箱账号
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MDk0ODc4MC04MDEyMjQwNTQucG5n.png?w=700&webp=1)
查看历史提交信息
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MTAyOTQ5OS0xMjgwOTc0MTA2LnBuZw%3D%3D.png?w=700&webp=1)
// 初始化服务器文件夹
git init —bare
// 克隆远程服务器的文件夹
git clone 地址
// 克隆远程服务器的文件夹
git clone 地址
// 提交文件到服务器
Git push
// 从服务器拉数据
git pull
SourceTree的使用
一, SourceTree配置
1 >在sourceTree中点击偏好设置,把默认用户信息填写进去
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MTMyNDY4Ni0yMzkwNDQ4OC5wbmc%3D.png?w=700&webp=1)
2 >界面简介
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MTQwNTA0Ni05OTY5OTk0NzYucG5n.png?w=700&webp=1)
二,修改代码
1 > 新建一个View并添加代码
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MTQ0NTQ1Mi04NDA1MjM5OC5wbmc%3D.png?w=700&webp=1)
2 > SourceTree中的变化
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MTU1MDQ4My02MDQ2MTk1NjMucG5n.png?w=700&webp=1)
3 >拉取并提交项目
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MTYyMjY4Ni0xODQ0NjIxNzQwLnBuZw%3D%3D.png?w=700&webp=1)
4 >提交到本地仓储后的变化
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MTgwNjg1OC02OTkwNDU5NzcucG5n.png?w=700&webp=1)
5 > 推送本地代码至远程服务器
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MjcwMjc5Ni0xNzMyMDg4NzgwLnBuZw%3D%3D.png?w=700&webp=1)
6 > 提交之后sourceTree主界面的变化
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MjczMTIxNy0xNDM4NDg4MjYzLnBuZw%3D%3D.png?w=700&webp=1)
三,加入团队开发
•操作步骤:
•第一种(强力推荐)
•先拉取服务器的版本,不要打钩(不打立即合并的勾)
•再向本地提交,这时可能会出现冲突等问题
•本地编译运行一下,没问题之后,最后推送到服务器上去
•第二种:(不推荐)
•先向本地提交
•再拉取服务器的并合并,这时可能会出现冲突等问题
•本地编译运行一下,没问题之后,最后推送到服务器上去
•第一种的好处是在本地合并好了之后只有一个版本提交到服务器上去的,
•第二种是有两个版本到服务器上去的,一个是程序员自己的版本,还有一个是服务器自动合并的版本
四, 常见问题及解决方法
1 , 未拉取就直接向远程服务器推送
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1Mjk0NjU0Ni0yMDExMzIzNTMucG5n.png?w=700&webp=1)
造成此类错误的解决方法为先拉取服务器上的代码, 然后再提交.
2 , 本地未提交的情况下直接拉取服务器代码
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzAzNTkwNS05MzgzNzc3OTcucG5n.png?w=700&webp=1)
碰到此类问题先提交本地, 然后再拉取服务器代码
3 , 在同一方法内(-(void)click 方法), 两个开发人员同时修改, 此时会造成代码冲突
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzEzNTUzMC04MjI3MTM2NDUuanBn.jpg?w=700&webp=1)
此时,如果你拉取并服务器代码时, 会有下面的提示出现
3.1 碰到代码冲突
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzIxMzkyMS00ODgxMTczMjYuanBn.jpg?w=700&webp=1)
3.2 代码冲突的具体显示内容
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzQzOTAxNC0xMTgwMTgzNzMyLmpwZw%3D%3D.jpg?w=700&webp=1)
3.3 解决冲突按钮
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzU0NjU3Ny05MTYwMDk0MDkuanBn.jpg?w=700&webp=1)
3.4, 外部合并工具界面
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzYxNTIxNy04MDkwNDA5NTMuanBn.jpg?w=700&webp=1)
3.5 解决完代码冲突后的界面
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzY0ODg1OC0xMjQ3ODU1NDUxLmpwZw%3D%3D.jpg?w=700&webp=1)
4, 创建文件或操作同一个stroyBoard时会造成代码冲突(创建文件夹时必须是真实文件夹)
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzczODU5Mi0xOTk5MDEwNzc5LmpwZw%3D%3D.jpg?w=700&webp=1)
五, 如果已经将一个错误的版本推送至服务器, 应当创建一个分支进行合并解决
正常情况下如果服务器上的代码也错误了, 就需要找之前的一个正确的版本进行提交回滚操作, 但在sourceTree上提交回滚之后只是有一个HEAD标签, 并没有真正改正过来, 所以此时创建一个分支, 将代码先提交到分支上, 然后修改正确后再合并至主分支上.
1, 首先选择一个正确的节点, 提交回滚
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzgyNTEwOC0xNDM1ODY4NzgzLmpwZw%3D%3D.jpg?w=700&webp=1)
2, 创建分支
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1Mzg1NzEzOS0xOTYwNDMzNzEyLmpwZw%3D%3D.jpg?w=700&webp=1)
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1MzkzMTI5Ni0xOTEzNDgyMDAyLmpwZw%3D%3D.jpg?w=700&webp=1)
3, 将分支正确的代码提交至远程服务器
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1NDAwMDIzMy00NTQ2MTEyNTEuanBn.jpg?w=700&webp=1)
4, 先双击master主分支上 ,然后点击dev_maoge分支进行合并
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1NDA0MDg0Mi0xMzA4MzA0Mzk4LmpwZw%3D%3D.jpg?w=700&webp=1)
5, 合并之后提交即可, 如果有冲突就以我的版本为主
![GIT 代码管理工具 SourceTree GIT 代码管理工具 SourceTree](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy85MjcyOTEvMjAxNjA3LzkyNzI5MS0yMDE2MDcwOTE1NDExMTU2MS0xMDQzMzU5MTc2LmpwZw%3D%3D.jpg?w=700&webp=1)
最后将合并之后推向服务器即可, 这样就实现了如何修改服务器上的错误代码了.