1. 概念
1.1 git是什么
版本控制工具
1.2 版本控制类型
集中式版本控制工具:svn、cvs
分布式版本控制工具:git
1.3 git与svn的区别
区别 | git | svn |
---|---|---|
断网离线工作 | 本地进行版本控制 | 必须连接服务器提交、对比、还原 |
服务器压力 | 小 | 大,数据容量大,每个版本都保存一遍 |
分布式开发 | 适合 | 不适合 |
团队开发灵活 | 良好的分支机制,主干代码干净 | 笨重,臃肿 |
1.4 git工作机制
工作区(写代码) —> git add —> 暂存区(临时存储) —> git commit —> 本地库(历史版本) —> push —> 代码托管中心(远程库)
1.5 代码托管中心
局域网:GitLab
互联网:GitHub、Gitee
1.6 安装git
略
2. Git命令
2.1 基础常用命令
命令 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m "日志信息" 文件名 | 提交到本地库 |
git reflog | 查看提交的历史记录 |
git log | 查看提交的历史记录的完整信息 |
git reset --hard 版本号 | 版本穿梭 |
2.2 分支是什么
分支可以简单理解为副本,一个分支就是一个单独的副本。分支底层其实也是指针的引用。
好处:为了同时推进多个任务,每个任务可以创建单独的分支,并且开发过程中不影响主干分支的内容。
2.3 分支操作命令
命令 | 作用 |
---|---|
git branch -v | 查看分支列表 |
git branch 分支名称 | 创建新分支 |
git checkout 分支名称 | 切换到某分支上,切换分支的本质就是移动 HEAD 指针 |
git merge 分支名称 | 把指定分支合并到当前分支上 |
2.4 产生冲突
原因:合并分支时,两个分支在同一个文件的同一个位置有不同的修改。Git无法决定使用哪一个,必须人为决定新代码的内容。
冲突产生的表现:命令行后缀状态为 (master|MERGING)
11230@ZCY MINGW64 /d/04MyDevelopment (master) $ git merge test Auto-merging a.txt CONFLICT (content): Merge conflict in a.txt Automatic merge failed; fix conflicts and then commit the result. 11230@ZCY MINGW64 /d/04MyDevelopment (master|MERGING) $ ll total 1 -rw-r--r-- 1 11230 197609 64 Jun 16 14:11 a.txt 11230@ZCY MINGW64 /d/04MyDevelopment (master|MERGING) $ git status On branch master You have unmerged paths. (fix conflicts and run "git commit") (use "git merge --abort" to abort the merge) Unmerged paths: (use "git add <file>..." to mark resolution) both modified: a.txt 11230@ZCY MINGW64 /d/04MyDevelopment (master|MERGING) $ cat a.txt <<<<<<< HEAD 你好,zcy ======= 你好,oooooo >>>>>>> test
2.5 解决冲突
编辑有冲突的文件,删除特殊符号,人为决定要使用新的内容。
冲突内容说明:
<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> test
修改前:
<<<<<<< HEAD 你好,zcy ======= 你好,oooooo >>>>>>> test
修改后:
你好,zcy 你好,oooooo
修改完后添加到暂存区,执行提交。(注意:此时使用 git commit 命令不能带文件名)
11230@ZCY MINGW64 /d/04MyDevelopment (master|MERGING) $ git add a.txt 11230@ZCY MINGW64 /d/04MyDevelopment (master|MERGING) $ git commit -m "test master v1" a.txt fatal: cannot do a partial commit during a merge. # 此时使用 git commit 命令不能带文件名 11230@ZCY MINGW64 /d/04MyDevelopment (master|MERGING) $ git commit -m "test master v1" [master a06b419] test master v1 # 发现后面 MERGING 消失,变为正常 11230@ZCY MINGW64 /d/04MyDevelopment (master) $ ll total 1 -rw-r--r-- 1 11230 197609 20 Jun 16 14:16 a.txt
3. GitHub
3.1 团队合作
略
3.2 创建账号
略
3.3 创建远程仓库
略
3.4 远程仓库操作命令
命令 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程仓库地址 | 在本地给远程仓库地址起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库,推送的最小单元是分支 |
git pull 远程库仓库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
3.5 邀请加入团队
略
3.6 跨团队协作
略
4. IDEA集成Git
略
5. GitLab
略