作用:
1. 协同开发
2. 版本记录
3. 冲突解决
4. 历史追查
5. 代码备份
6. 版本还原
7. 权限管理
8. 分支管理
9. 代码审查
...
安装
1. 命令行工具:git for windows(重点)
https://git-for-windows.github.io/1
tip:
点击安装包,然后傻瓜式的安装就可以成功
2. 可视化工具:TortoiseGit
https://tortoisegit.org
3. github网站(掌握)
http://www.github.com
4. gitee
http://www.gitee.com
命令 | 说明 | 使用方法 |
---|---|---|
touch | 创建一个文件 | touch test.html |
mkdir | 创建一个文件夹 | mkdir test |
ls | 查看文件夹下面的文件 | ls |
clear | 清空屏幕 | clear |
rm | 删除命令-rf (强制递归删除) | rm-rf 路径 |
cat | 打印文件内容 | ` |
cd # 回到家目录
cd . # 回到当前位置
cd .. # 前往父级目录
cd ../ect/dir1 # 前往父级目录下的ect下的dir目录
命令行下的文本编辑器
命令 | 作用 | 使用方法 |
---|---|---|
vim | 用vim打开一个文件 | vim 1.txt |
i | insert | i 或者 insert |
:q! | 非编译下 ,强制退出 | |
:w! | 非编译下,强制保存 | |
:wq! | 非编译下,强制保存并退出 | |
:x! | 非编译下,强制保存并退出 | |
dd | 非编译下,删除一行 | |
u | 非编译下,倒退 |
Git 全局设置:这个是第一次使用的时候配置,记录开发者的邮箱
git是分布式版本控制工具,所以我们需要填写用户名和邮箱作为一个标志。
C:\Users\lixi19861125路径下.gitconfig文件,这个我文件里面可以看到--global属性,所有的git项目都会公用这个属性
git config --global user.name "用户名称"
git config --global user.email "你的注册gitee 或者 github 的邮箱地址"
# 邮箱与github或者gitlab的注册邮箱保持一致
# 我的 gitee没有设置邮箱,所以这里可以用它默认的这个.如果设置邮箱,那就必须与设置的邮箱一致
注意 :
创建 git 库
mkdir fileName # 创建本地仓库
cd fileName # 进入本地仓库
git init
touch README.md # 创建一个描述文件
git add README.md # 添加这个描述文件
git commit -m "first commit"
git remote add "你的 .git 地址"
git push -u origin "master"
如果已经有仓库
cd existing_git_repo
git remote add origin "你的 .git 地址"
git push -u origin "master"
Git版本库的三个区域
修改后提交到gitee中
git.add . # 将所有的add上
git commit -m "这里面的是记录"
git push --all # 将所有的push到云端
查看文件状态
git status
查看文件状态的详细信息
git diff # 不显示新增的文件,文件被修改了是可以显示的
git diff
git diff --cached
git diff HEAD
git diff --stat
将文件/目录添加到临时暂存区
1. git add 文件名/目录名
2. git add . # 这个是将所有修改的内容全部添加
3. git add -A # 与 . 一样的
tip:
以上通过git add命令的文件会提交到暂存区中,但是这里的文件其实没有真正的提交。使用下一个命令才是把他提交到一个统一的版本文件
提交文件
git commit -m "提交信息"
tip:
每当有文件被修改/添加/删除的时候,都需要重新git add,然后再git commit
把暂存区的内容发送云端
git push -u origin "master"
查看日志
git log
git log --online
版本回滚
git reset --hard HEAD^1
tip:
HEAD是一个指针,永远指向最新版本,^1表示让HEAD指针指向上一个版本
--hard 硬:这种回顾不但将版本回顾,还会将指定的数据抹除。不会保留任何你修改的记录
--soft 软:回退版本,也会保留改动的记录。会自动帮你git add。
--mix 折中:回退版本,并会保留所有改动记录。但是不会自动帮你git add
git reset : 修改HEAD的位置
这种方式可以恢复到之前某个提交的版本,但是恢复之后,当前版本之后的版本将不复存在。
git reset --hard HEAD~2 #回退到2个版本之前的版本
版本的穿越
git reflog # 查看历史记录的版本号
e.g.
$ git reflog
# 查看所有的操作记录
e.g.
git reset --hard 7c77ab0
还原文件
git checkout 文件名
e.g.
vi src/b.txt
git add src/b.txt
git commit -m "update 005"
git checkout src/b.txt
删除文件
1. 用Linux命令先删除文件
2. git add
3. git commit
git rm 从工作目录中手工删除文件
1. 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f: git rm <file>
2. 仅是从跟踪清单中删除: git rm --cached <file>
移动或者重命名一个文件/目录/软连接
git mv
查看分支
git branch -v
e.g.
$ git branch -v
* master b94d274 update 006
创建分支
git branch 分支名称
e.g.
$ git branch common
$ git branch -v
common b94d274 update 006
* master b94d274 update 006
注意:
有了新的分支之后,需要把新的分支push到云端 git push --setupstream origin
切换分支
git checkout 分支名
e.g.
git checkout common
每次切换分支之前
合并分支 (将其他分支合并到主分支 : master)
1. 切换到主分支
git checkout master
2. 合并
git merge 分支名
e.g.
git merge common
删除分支
git branch -d name
其他分支上传后 需要 pull
git pull origin master
需要忽略的文件不能够push到云端库中的。
自己手动创建一个文件 .gitignore
,在文件中书写规则 ( .gitignore
需要和 .git
同级目录)
使用 ls -a
# 以下这些需要在文件中写
#忽略.idea目录
.idea
# 忽略所有的png图片
*.png
#把/source/imgs整个文件夹给忽略
/source/imgs
#忽略自己
.gitignore
仓库中已经提交了改文件
对于已经加入云仓库的文件,是不能忽略的
git rm --cached .gitignore
为什么会冲突 :
在分支合并的时候解决冲突
1. 定位冲突的文件 (含有 both的就是冲突文件)
$ git status
2. 手动处理处理 将冲突的代码进行筛选和修补
打开冲突文件
<<<<<<<<<HEAD 到 ======== # 是master代码
======== 到 >>>>>>>>>>> 分支名字 # 是分支代码
3. 想要那一段代码就另一端代码,然后保存
4. 重新 `add` , `commit` 和 `push`
GitFlow 是团队开发的一种最佳实践,将代码划分积分部分
CRLF 是Cariiage-Return-Line-Feed的缩写
这个只是一个警告,并不是错误
原因 : 两个人(A和B)使用同一个分支,"A"先提交了,远程仓库的
状态发生了改变
B的本地仓库和云仓库不同步,提示需要先获取云仓库内容 (这个一般在 git commit
时就已经出错了)
修改: git pull origin master
(这里的 master
是分支名字,你是那个分支可以换成相对应的分支名)
注意:先git pull,让本地仓库同步云仓库,然后再push
云端仓库没有分支
解决: git push --set-upstream origin demo
注意:先定位冲突,修改冲突文件,在提交
当前没有 .git包
可以在 该目录下 git init
安装 :
git credential-manager install
卸载:
git credential-manager uninstall
注意 : 每次需要验证才是安全模式