git_代码管理工具
git 的使用
是一种代码协同管理工具
- 防止代码丢失,做代码备份
- 做代码的版本管理,创建多个版本或者节点,在多版本间切换
- 可以将代码在多人之间简单的传输共享
- 可以方便多人协调开发,开辟各自分支和分支管理
什么是git?
git是一个开源的分布式版本控制系统,可以用于高效的管理大小项目。
分布式:
每个节点关系平等,都保存完整代码,节点之间相互推送或者下载代码,工作方式多样。
集中中:
有明确的中央服务器统一管理代码,每个节点将代码上传中央服务器,或者从中央服务器下载。逻辑简单。
git的特点:
- git可以管理各种文件,特别是代码项目,'躲’在*nix系统中使用
- 是开源的系统,是唯一可以操作github的管理工具
- git是分布式管理,不同于集中式,这也是和svn最大的差别
- git可以脱拖操作,传输速度更快
- git的安全性很强,有全球唯一的commit版本号
- git的分支管理很强大,可以方便多人协同工作。
git 基本配置
git config
配置级别:
1.系统中所有的用户均使用的配置
命令:git config --system
配置文件的地址:/etc/gitconfig
例:配置git用户
sudo git config --system user.name Tedu
2.当前用户的所有项目均使用的配置
命令:git config --global
配置文件地址:~/.gitconfig
例:配置用户邮箱
git config --global user.email tarena@tedu.cn
3.只在当前项目中使用的配置
命令:git config (此命令要在git项目文件夹中执行)
配置文件地址:project/.git/config
例:配置编译器
git config core.editor vscode
4.查看当前配置
命令:git config --list
git 基本概念
工作区:通过自己的主机操作的git目录。
暂存区:用来记录你工作区的行为,作为暂时保存。
本地仓库:本地用来备份同步工作区内容的区域。
远程仓库:其他主机的git仓库。
git的基本操作命令
初始化仓库:
命令:git init
说明:初始化仓库后产生,git目录为git的管理目录,初始化仓库的目录内容即可使用git进行管理。
查看工作分支状态
命令:git status
说明:默认工作分支为master,可以通过创建新的分支切换。
文件提交到暂存区
命令:git add [file]
说明:可以一次提交多个内容;
提交的内容可以是文件,也可以是目录;
如果想将当前目录下所有的内容都提交也可以使用*表示。
删除暂存区的某文件(文件夹目录)提交记录
命令:git rm --cached [file] [-r,若是文件夹目录,要加-r]
将暂存区记录的修改内容同步到本地仓库
命令:git commit --m “some message(自定义附加信息)”
说明:-m 为添加的附加信息;
当工作区和本地仓库内容一致时,使用git status,会提示工作区干净。
查看提交日志
命令:git log
或:git log --pretty=oneline (一行简洁显示)
工作区的操作:
查看工作区文件和本地仓库的差异
命令:git diff [file(文件名)]
放弃工作区的修改
命令:git checkout – [file(文件名)]
恢复本地仓库文件到工作区
命令:git checkout [file(文件名)]
eg.:
tarena@tedu:~/project$ rm Readme #删除Readme
tarena@tedu:~/project$ ls
111.png exercise.py re_1.md re_1.txt
tarena@tedu:~/project$ git checkout Readme #恢复Readme
tarena@tedu:~/project$ ls
111.png exercise.py re_1.md re_1.txt Readme
文件的 移动 和 删除
删除工作区文件,并提交到暂存区记录
命令:gir rm [file]
移动工作区文件,并提交到暂存区记录
命令:git mv [file文件] [dir目录]
版本控制命令
回到上一个版本
命令:git reset --hard HEAD^
说明:HEAD后面写几个^,就表示回滚到之前的几个版本
eg.:
tarena@tedu:~/project$ git log --pretty=oneline
c194c613bac44e4006ab38b08ef8fe2f4c6a398d 移动了一个文件到test嘿嘿
9bcfbabbfdd5fe16b3da56d254bbac0c023bd79e 真删了
524f3566466736b76ef1a5c836fd133c4d9a72da add files
tarena@tedu:~/project$ git reset --hard HEAD^
HEAD 现在位于 9bcfbab 真删了
tarena@tedu:~/project$ git log --pretty=oneline
9bcfbabbfdd5fe16b3da56d254bbac0c023bd79e 真删了
524f3566466736b76ef1a5c836fd133c4d9a72da add files
通过commit_id回到指定的版本
命令:git reset --hard commit_id
查看操作记录日志
命令:git reflog
说明:获取到操作记录后可以根据commit_id去往较新的版本
eg.:
tarena@tedu:~/project$ git reflog
524f356 HEAD@{0}: reset: moving to 524f356
9bcfbab HEAD@{1}: reset: moving to HEAD^
c194c61 HEAD@{2}: commit: 移动了一个文件到test嘿嘿
9bcfbab HEAD@{3}: commit: 真删了
524f356 HEAD@{4}: commit (initial): add files
标签管理:
什么是标签?
即在当前工作位置添加快照,保存项目的版本信息,一般用于项目版本的迭代。
如何创建标签?
命令:git tag v1.0
说明:默认会在最新的commit_id处打标签
查看标签:
命令:git tag (查看所有标签)
git show v2.0 (查看某个标签的具体信息)
在某个指定的commit_id处打标签
命令:git tag v0.8 [commit_id]
回到某个标签的版本
命令:git reset --hard v0.8
删除某个标签
命令:git tag -d v2.0
保存临时工作区
创建临时工作区
命令:git stash
说明:将工作区修改内容暂时封存,恢复到最近一个“干净”状态(即与本地仓库一致)。
查看保存的工作区
命令:git stash list
应用某个工作区
命令:git stash apply stash@{1}
说明:最新的工作区总是为stash{0},老的工作区会向下排列
应用上一个工作区,并删除之
命令:git stash pop
删除工作区
命令:git stash drop stash@{2} #删除某个工作区
git stash clear #删除所有工作区
分支管理
什么是分支?
分支即每个人在获取原有分支(master)代码的基础上,作为自己的工作环境,单独开发,不会影响其他分支操作。
开发完成后再统一合并到主线分支。
好处:安全,不影响其他人的工作,自己控制进度。
问题:冲突。
查看当前分支
命令:git branch
说明:前面带*的表示当前正在工作所在的分支
创建分支
命令:git branch [branch]
说明:创建分支之前尽量保存
切换工作分支
命令:git checkout [branch]
创建并切换到新的分支
命令:git checkout -b [branch_name]
合并分支
命令:git merge [branch]
删除分支
命令:git branch -d [branch]
强制删除没有合并的分支
命令:git branch -D [branch]
远程仓库:
是指在远程主机上的仓库。
git是分布式的,实际上每一台主机上的git结构基本相同,只是把其他主机上的git仓库叫做远程仓库而已。
创建共享仓库:
1.创建目录
命令:mkdir gitrepo
2.设置仓库文件夹的属主
命令:chown tarena:tarena gitrepo
3.创建共享仓库
命令:cd gitrepo
git init --bare aid08.git(以.git结尾的)
4.设置git项目文件夹的属主
命令:chown -R tarena:tarena aid08.git
添加远程仓库
命令:git remote add origin tarena@127.0.0.1:/home/tarena/gitrepo/aid08.git
说明:tarena后面的为远程仓库的地址
删除远程主机
命令:git remote rm origin
将本地分支推送到远程
命令:git push -u origin master
说明:在第一次向远程仓库推送时需要加 -u 选项,以后就不需要了。
从远程主机获取项目
命令:git clone tarena@127.0.0.1:/home/tarena/gitrepo/aid08.git
将代码同步到远程主机
命令:git push
说明:会自动推送给远程仓库的对应分支
将远程仓库内容拉取到本地
命令:git pull
或 git fetch (如果有新的分支拉取到本地不会和本地分支合并 )
github网站
github是一个开源项目社区网站。拥有全球最多的开源项目。开发者可以注册这个网站建立自己的github仓库。
然后就可以在本地通过git像操作远程仓库一样操作github仓库。
git是github唯一指定的代码管理工具。
[github网址]: (https://github.com/) 。
创建新的github仓库
右上角 + 下拉菜单 --》 new repository --》 填写参考名和基本描述 ,根据情况选择是否添加readme等内容,选择共有还是私有 --》 点击创建
操作github仓库
1.git remote 连接远程github仓库,如果需要输入密码输入github密码即可
2.使用git push等操作远程仓库的方法操作即可