首先安装Git
首先在Ubuntu上安装使用
- sudo apt-get install git # Ubuntu执行这个
- sudo yum install git # CentOS执行这个
复制代码 在windows上安装直接从Git官网下载Githttps://git-scm.com/安装好后
在命令行使用
- git version
- git --version # linux执行这个
复制代码 假如有版本号即安装成功
如何使用Git
先要理解git的三个区域,版本库就是我们git log --graph --all显示的每个节点
图片来自【Git】Git的三个区域_git三个区-CSDN博客
git会帮我们存储git提交过的版本,也可以临时生存我们已修改过的文件,我们能够直接看到的文件除./git下的文件外都是工作区,通过git add添加但没有提交commit的都在暂存区,已提交的都在版本库中,看不懂可以继续看,后面转头再来看。
使用git创建本地库
在需要添加到git项目的位置进入命令行
- git init
- # 已有云项目可以使用git clone [url]
复制代码 此时会为当前目录创建一个./git文件管理项目,此文件是隐藏显示的
可以为当前目录及全部下级目录的全部文件举行管理
不需要管理的文件 可以写一个.gitignore文件,将全部不需要git管理的文件(一样平常是开发测试需要,与项目运行无关)或路径 写入 如下图 .gitignore
添加整个项目(当前目录文件及全部下级目录文件)到暂存区
假如想添加具体文件可以指定
然后举行提交
- git commit -m "可以在这里填写版本注释"
复制代码 这样,我们就创建好了本地的git库,可以运行git branch --all 会瞥见 * master
使用git多人协作,上传到github或gitee仓库
上传到仓库首先需要验证用户,有两种方式
用户登录
命令行设置git身份
- git config --global user.name "用户名"
- git config --global user.email "邮箱地址"
复制代码 设置好后可使用git config --global --list验证是否有误
用户登录后续上传代码到仓库时,还会要输入平台账号密码才能上传到仓库
使用令牌
生成令牌
- ssh-keygen -t rsa
- # 连按三次回车同意
复制代码 实行后,会显示生成地点,检察其中id_rsa.pub文件,这个是公钥(不带.pub的是私钥)
复制id_rsa.pub文件内容,在github或gitee平台中的个人设置中添加个人公钥,直接将文
件内容全部粘贴到公钥内容中即可。
将本地仓库上传到平台仓库
获取云仓库
首先要链接云仓库(平台仓库),在本地仓库创建云仓库
- git remote add origin 仓库ssh链接
复制代码 这时候使用git branch --all会瞥见红色的 remote/origin/master 这是你云仓库的本地副本
假如云仓库有文件 可以实行(本地没有文件的话可以直接git pull origin相称于后面两行命令)
这样你的origin/master就是最新的了(推荐使用fetch,这样可以在实行下条命令前,通过切换分支本钱地云仓库分支,修改本地的云仓库,再切回本地分支再完成合并。这样就可以同时举行本地修改和云仓库修改解决冲突部门,然后合并就没有冲突了;若使用git pull origin就只能修改本地来顺应云仓库修改的冲突地方)
假如你想把最新的版本合并到工作区(本地同步云仓库的修改)可以再实行
将本地仓库上传到云仓库
- git push -u origin master
- # -u 作用是设置默认推送目标,以后只需使用git push即可
复制代码 这样就可以将当前分支工作文件上传到云仓库
这个操纵同时也会更新remotes/origin/master本地的云仓库副本
常用操纵
提交
在 Git中,提交(commit)是将暂存区的更改生存到本地仓库(版本库)的操纵。
git commit -m "提交信息" # 将暂存区的更改生存为一个新的提交,并附上提交信息
git commit -a -m "更新了设置文件" # 相称于实行了git add . 然后再实行提交commit -m ""
git commit --amend -m "修正了拼写错误"
# 修改上一次提交的内容或提交信息。
# 假如暂存区有新的更改,则会将它们合并到上一次提交中。
创建删除分支
- git branch [分支名] # 创建
- git branch -d [分支名] # 删除
切换分支
- git checkout [分支名] # 要留意切换分支时工作区假如修改了,但没有git add的话,切换分支会丢失
每个分支都共享同一个暂存区,暂存区有内容最好提交后再切换分支,否则会出现切换后分支的暂存区拿到了自己不应有的文件,且原分支的没有add的修改丢失了且假如不切回commit的话,暂存区的内容会带到切换分支造成影响。
- git checkout <commit-hash> # 临时检察版本内容,此时HEAD指针并不改变,任何修改都不生效,再次使用checkout切换分支完成退出
检察全部分支
- git branch --all # 检察全部分支
分支合并
- git merge [分支名] # 将当前分支和[分支名]分支合并
检察版本差别
- git diff [分支名/版本名] # 将当前分支和[分支名/版本名]对比检察那里不同
- git diff [分支名/版本名] [分支名/版本名] # 对比两个分支或版本的差别
- 尚未缓存的改动:git diff
- 检察已缓存的改动: git diff --cached
- 检察已缓存的与未缓存的全部改动:git diff HEAD
检察历史版本
- git log # 检察当前分支的版本历史
- git log --all # 检察全部分支的版本历史
- git log --graph --all # 用图形的方式检察全部分支版本的厘革
检察云仓库分支
- git remote # 检察远程仓库
- git remote update # 更新远程仓库分支信息
- git branch -r # 检察远程仓库全部分支
获取仓库更新
- git fetch <remote> # 从指定的远程仓库获取全部分支的最新提交和文件
- git fetch <remote> <branch> # 获取特定分支的更新
将fetch换成pull的话会直接将远程仓库获取最新并合并到当前工作分支。
版本回退
- git reset --soft <commit-hash> # 软重置(生存工作区和暂存区)
- git reset --mixed <commit-hash> # 将 HEAD 指向指定的提交,并重置暂存区,但生存工作区的更改(默认运动)
- git reset --hard <commit-hash> # 硬重置(扬弃全部更改)
不删除历史提交记录回退
- git revert <commit-hash> # 将当前内容减去指定版本提交的内容
清除暂存内容
- git reset HEAD # 清空缓存区(暂存区)
- git reser HEAD [文件名] # 清除指定文件的缓存
补充在windows上使用git add或提交时可能会报错
- warning: LF will be replaced by CRLF
- fatal: CRLF would be replaced by LF
复制代码 不用在意,这是由于Liunx和Windows换行方式不一样,git为了跨平台主动举行了修改,windows默认时/r/n,而Linux是/n,这个不影响使用以及提交,最好不要修改
最后说说我对git的版本控制的理解吧!
git的版本分支控制是一个单链表的状态,新版本会有一个指针指向老版本,只能从新版本找到老版本,但不能退回到老版本再找新版本,而分支相称于开启一个空间,指向指定版本方便HEAD跳转。HEAD为我们工作的指针,可以在不同分支间跳转。
本地的远程仓库也只是一个分支。
希望能够对你有所帮助,看到这里了点个赞加收藏呗!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |