https://www.runoob.com/git/git-basic-operations.html
workspace:工作区:写代码的地方
staging area:暂存区/缓存区
local repository:版本库或本地仓库 remote
repository:远程仓库
提交代码流程
git add .
git add 文件名
表示将已跟踪的文件中的删除和修改添加到暂存区,不包括新增加的文件
git add -U .
表示将已跟踪的文件中的删除和添加,以及新增的未跟踪的文件都添加到暂存区。
git add -A .
- 查看暂存区的文件
git ls-files
- 暂存区内容添加到本地仓库
git commit -m "备注说明"
查看commit的记录
git log
- 关联远程仓库
git remote add origin 远程仓库链接
此处origin是可以自定义的,是给后面的链接起的别名
- 查看载入的远程仓库
git remote -v
- 将本地仓库上传到远程仓库
- 先将远程仓库
master
中的信息同步到本地仓库master
中 - 将本地版本库推送到远程服务器
origin
是远程主机,master
表示是远程服务器上的master
分支和本地分支重名的简写,分支名是可以更改的
git pull --rebase origin master
git push -u origin master
pull
是拉取和分支合并(master
和origin/master
)操作的综合。如果有冲突,那么需要手动更改。
遇到以下情况:
*** Please tell me who you are.
Run
git config --global user.email “you@example.com” git config --global
user.name “Your Name”to set your account’s default identity. Omit --global to set the
identity only in this repository.fatal: unable to auto-detect email address (got
‘86188@DESKTOP-KS5TMRR.(none)’)
执行:
git config --global user.email "你的email地址"
git config --global user.name "你的用户名"
暂存区
- 查看暂存区修改的文件
git ls-files -m
- 查看暂存区删除过的文件
git ls-files -d
- 查看
工作区
和暂存区
的差别
通常我们使用-s
参数来获得简短的输出结果
git status
下图表示:
README.md已经在暂存区中,但是在工作区更新的部分还没有添加到暂存区中
Untracked files下的文件表示还没有添加到暂存区中,也就是还没有被追踪
将工作区区中更新的README.md再一次更新到暂存区中
此时暂存区中的内容被更新,但还没有commit到本次仓库中
- 删除暂存区指定文件
不删除工作区文件
git rm -cached <文件名>
一并删除工作区文件
git rm -f <文件名>
上面两个命令如果要删除多个文件使用空格分隔文件名称即可
- 清空暂存区
rm .git/index
- 比较文件在暂存区和工作区的差异
git diff <文件名>
不带文件名,则比较多个文件
版本控制
- 查看
commit
记录
git log
使用 --pretty=oneline
简洁显示,每一条记录一行
使用--oneline
显示更简洁(hash值显示一部分),前面的字符是版本号
使用 git reflog
可以显示回退到之前的操作需要的步数
- 版本回退
git reset --hard '版本号'
- 版本前进
git reset --hard '版本号'
工作区删除文件怎么办
- 如果删除了工作区中文件
- 第一步:使用git add <文件名> 提交到暂存区
- 第二步:使用git commit -m <文件名> 提交到本地库
如果想找回已经删除的文件,可以使用版本回退(能恢复的前提是,删除的前的文件已经被提交到了本地库)
分支管理
- 查看已有分支
git branch -v
- 创建分支
git branch <分支名>
- 切换分支
git checkout <分支名>
- 合并分支
将分支1合并到主分支,需要先切换到主分支上面
git merge <分支1>
如果分支合并时有冲突,也就是两个分支都有修改,需要手动修改
红色和绿色是冲突部分