流程图
本地仓库:是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库) 远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或 者自己该公司的服务器) 工作区: 我们自己写代码(文档)的地方 暂存区: 在本地仓库中的一个特殊的文件(index) 叫做暂存区,临时存储我们即将要提交的文件----Clone:克隆,就是将远程仓库复制到本地仓库 Push:推送,就是将本地仓库代码上传到远程仓库 Pull:拉取,就是将远程仓库代码下载到本地仓库,并将代码 克隆到本地工作区
文件状态讲解
Git工作目录下的文件存在两种状态: untracked 未跟踪(未被纳入版本控制):比如新建的文件(此时文件夹上没有图标或者有一 个"问号") tracked 已跟踪(被纳入版本控制) Staged 已暂存状态 : 添加 但未提交状态(此时文件夹上有一个"加号") Unmodified 未修改状态 : 已提交(此时文件夹上有一个"对号") Modified 已修改状态 : 修改了,但是还没有提交 (此时文件夹上有一个"红色感叹号")
git使用过程
码云账号注册
创建远程仓库
ssh 密钥的生成
#生成公钥私钥 ssh-keygen -t rsa 一直回车即可 会默认用户目录 .ssh 目录生成一个默认的id_rsa文件 和id_rsa.pub
ssh 密钥配置
Star: 点赞, 注意这里的并不像朋友圈那样容易获得点赞,圈内人还是很克制的 Watch: 如果你watch 了某个开源项目,那么这个项目后续所有的改动你将收到通知 Fork : 将别人的代码克隆到你自己的仓库 作用一: 如果担心某个优秀的项目别人突然有一天不开源了,你可以fork到自己的仓库 作用二: 修改别人的代码
项目操作
1)我们可以删除修改我们自己仓库的基本信息
2) 我们可以邀请其他人成为项目的开发人员或者管理人员
git环境配置
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息
#设置用户信息
git config --global user.name “itcast”
git config --global user.email “itcast@itcast.cn”
#查看配置信息
git config --list
git config user.name#通过上面的命令设置的信息会保存在~/.gitconfig文件中
初始化本地仓库 init
# 初始化仓库带工作区 git init # 初始化仓库不带工作区 git init --bare
查看状态 status
# 查看状态 git status #查看状态 使输出信息更加简洁 git status –s
添加add
# 将未跟踪的文件加入暂存区 git add <文件名> # 将暂存区的文件取消暂存 (取消 add ) git reset <文件名>
提交commit
# git commit 将暂存区的文件修改提交到本地仓库 git commit -m "日志信息" <文件名> 删除 rm # 从本地工作区 删除文件 git rm <文件名> # 如果本工作区库误删, 想要回退 git checkout head <文件名> # 查看远程 列出指定的每一个远程服务器的简写 查看远程 git remote
删除 rm
# 从本地工作区 删除文件 git rm <文件名> # 如果本工作区库误删, 想要回退 git checkout head <文件名>
查看远程 remote
# 查看远程 列出指定的每一个远程服务器的简写
git remote
# 查看远程 , 列出 简称和地址
git remote -v
# 查看远程仓库详细地址
git remote show <仓库简称>
添加/移除远测仓库
# 添加远程仓库
git remote add <shortname> <url>
# 移除远程仓库和本地仓库的关系(只是从本地移除远程仓库的关联关系,并不会真正影响到远程仓库)
git remote rm <shortname>
从远程仓库获取代码
# 从远程仓库克隆 git clone <url> # 从远程仓库拉取 (拉取到.git 目录,不会合并到工作区,工作区发生变化) git fetch <shortname> <分支名称> # 手动合并 把某个版本的某个分支合并到当前工作区 git merge <shortname>/<分支名称> # 从远程仓库拉取 (拉取到.git 目录,合并到工作区,工作区不发生变化) = fetch+merge git pull <shortname> <分支名称> git pull <shortname> <分支名称> --allow-unrelated-histories # 强制拉取合并 # 将本地仓库推送至远程仓库的某个分支 git push [remote-name] [branch-name]
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories (如上 命令)
分支操作
# 默认 分支名称为 master # 列出所有本地分支 git branch # 列出所有远程分支 git branch -r # 列出所有本地分支和远程分支 git branch -a # 创建分支 git branch <分支名> # 切换分支 git checkout <分支名> # 删除分支(如果分支已经修改过,则不允许删除) git branch -d <分支名> # 强制删除分支 git branch -D <分支名> # 提交分支至远程仓库 git push <仓库简称> <分支名称> # 合并分支 将其他分支合并至当前工作区 git merge <分支名称> # 删除远程仓库分支 git push origin –d branchName
tag
# 列出所有tag git tag # 查看tag详细信息 git show [tagName] # 新建一个tag git tag [tagName] # 提交指定tag $ git push [仓库简称] [tagName] # 新建一个分支,指向某个tag
忽略文件提交
# 所有以.a 结尾的文件讲被忽略(递归) *.a # 不管其他规则怎样,强制不忽略 lib.a !lib.a # 只忽略 文件 TODO (注意这里是文件) /TODO # 忽略 build文件夹下所有内容(递归) 这里是文件夹 build/ # 忽略 doc 目录下以 *.txt 结尾的文件 (不递归) doc/*.txt # 忽略 doc 目录下以 *.pdf 结尾的文件 (递归) doc/**/*.pdf $ git checkout -b [branch] [tag] # 删除本地tag $ git tag -d [tag] # 删除远程tag (注意 空格) $ git push origin :refs/tags/[tag]