Git学习实践笔记

这一篇是个人在学习实践廖雪峰大神的git教程与实际使用git与github时,做的一些随手记录。涵盖了常见的git命令和需要熟悉的git/github概念。由于是随手记录,所以结构比较松散,语言比较随意,有兴趣的小伙伴可以随便看一下呀((✪ω✪))

安装配置与常见操作方式

git与github
下载git一路点击安装j即可,对git可以设置环境变量
idea内配置
版本管理-git选择安装的git路径
版本管理-github登录对应的账号

命令操作/图形用户界面操作
主要依赖git命令与gui、ide提供的git命令与gitgui环境、github等远程仓库网站、自搭建远程仓库
git命令可以在很多地方输入,包括总git bash,对应目录git bash,系统cmd git,ide内terminal(cmd git)
gitGUI可以一定程度代替git命令,常见的gitGUI包括git自带gui,ide内gitgui,github桌面软件,第三方Gui工具
github网站使用基本靠url与特征名词熟悉使用逻辑
将几个项目集中于一个git仓库,只需将几个项目放在一个文件夹,然后将此文件夹建立为仓库即可
,此时单个项目不能使用集成git,但可以整的项目用git

本地分支与远程分支可以以https或ssh连接传输

公私钥创建命令ssh-keygen -t rsa -C "[email protected]"

一些概念与理解

  
(分布式)版本管理工具,代码托管网站
可以看做一个(本地与远程)版本化代码仓库及其管理程序
可以只有本地或远程分支中的一个,可以广泛使用不一定用在代码
 
分区分分支分库
操作的基本单位是修改,操作的基本集合是分支,全部操作基于git仓库

分工作区,暂存区,分支区(版本库)
版本管理只能管理文本文件与文本数据的修改
从未add就只是在目录而不在库,第一次add并commit后才入库
add的就是添加修改,add后修改放入暂存区,commit后进入版本库有对应版本号与描述
标签是方便记忆的版本号,也打在commit上

每个分支就是一个版本线,head指向当前分支的当前版本
master分支是主分支,用于正式代码提交与合并,本远要时刻与远程同步
dev分支是开发分支,团队所有成员都在上面工作,,本远要时刻与远程同步
bug分支只用于在本地修复bug,本身不必推到远程,在本地合并到master与dev即可
feature分支是功能分支,根据是否合作开发决定是否本远同步
另一种模式是一个master分支多个个人分支,其实差不多
合并策略包括两种   fast forward  --no-ff
分支合并与push/pull时可能发生冲突,所谓冲突即对同一文件的修改不一样
冲突可自动解决和手动解决,自动解决不用再提交,手动解决需要提交conflict fixed

分本地库与远程库
各自的分支是对应的,对应分支建立连接后,只能对应提交
克隆是基本完整的仓库克隆,有库/分支/区/版本库与历史等,下载只是下载此库对应分支的最新版本
Unix的哲学是“没有消息就是好消息”


需要熟悉的名词


repostory仓库   branch分支
status/stash   工作区状态/工作区暂存状态
version/history 版本/历史
add添加修改
comimit/updata    在本地仓库提交/更新修改
checkout(switch)/merge  在本地仓库创建/合并分支
clone 克隆远程仓库并创建本地主分支
checkout/push/pull  相对远程仓库创建/合并分支
fork 克隆开源仓库的全部到自己账号下
pull request(pr)拉请求,主分支合并请求,有多种情况

explore探索  topics话题 trending趋势 collections集合 events事件
marketplace(工具)市场 gist主页 organization组织 notification消息 subscriptions订阅
watch查看 star点赞 description描述 readme自述 code of conduct 准则
overview概述  followers粉丝 following关注的人

code代码 commits提交 branches分支 release(tag)发布版本(版本标签) contributors贡献者 (Open source)licenses (开源)协议
issues提问,记录,讨论
pull request(pr)拉请求,主分支合并请求
action 工作流,自动测试部署管理等
project项目,组织化工程化的项目
wiki介绍(百科页)
security安全  alerts警报 advisories报告 policy政策
insights统计  pulse脉冲(热度)  community社区生态 traffic/commit流量
            frequency频率 dependency graph依赖关系 network 分支关系网
setting设置,管理仓库与项目


常见命令

版本管理相关命令


git init  建库
git add readme.txt  添加xxx文件修改
git commit -m "wrote a readme file"  提交修改(全部add的)
git status        查看工作区状态 4种 非库文件 库文件修改未add add未commit 无修改
git stash   暂存工作区状态但不add不提交,会被识别为无修改
git stash list  查看工作区暂存状态
git stash pop   恢复工作区到暂存状态
git stash apply stash@{0}   恢复到指定的工作区暂存状态
/git stash apply  git stash drop
git diff readme.txt  查看工作区xxx文件变动
git diff HEAD -- readme.txt 查看工作区xxx文件相对xxx版本的变化
git log        查看版本(详细)
git log --pretty=oneline  查看版本(粗略)
git log --graph 查看分支与版本(详细)
git log --graph --pretty=oneline --abbrev-commit  查看分支与版本(粗略)
git log --pretty=oneline --abbrev-commit 查看版本与标签(粗略)
git reflog  查看全部操作记录包括被删除的(粗略)
git reset --hard HEAD^    (l1w0)  
git reset --hard HEAD^^   (l2w1)
git reset --hard HEAD~100        相对当前版本回退版本
git reset --hard 5ee155a13d7    回退到对应version号版本(version号可只取前7~10个字符)      
git rm test.txt    添加文件删除修改
git reset HEAD file     撤回暂存区add
git checkout -- readme.txt 丢弃自上次add以来工作区的修改
git checkout -- test.txt   丢弃自上次add以来对工作区文件的删除
git tag v1.0           给当前version加标签
git tag v0.9 1f4485a   给version xxx加标签
git tag -a v0.1 -m "version 0.1 released" ac46bcb 给version xxx加标签与标签描述
git tag        查看全部标签
git show v0.9  查看xxx标签
git log --pretty=oneline --abbrev-commit 查看版本与标签(粗略)
git tag -d v0.1  删除xxx标签
git push origin :refs/tags/v0.9  删除远程xxx标签
git push origin v1.0    push xxx标签
git push origin --tags  push全部标签

分支相关命令

git checkout -b dev   创建xxx分支并转到
/git branch dev  + git checkout dev
git branch  查看分支
git checkout master 转到xxx分支
git merge dev  合并xxx分支  以fast forward策略
git merge --no-ff -m "merge with no-ff" dev   以no-ff策略合并xxx分支并写提交描述创建提交
git branch -d dev   删除xxx分支
git branch -D feature-vulcan  强行删除xxx分支(未合并)
git merge feature1  
git status
git add readme.txt 
git commit -m "conflict fixed"  合并分支时手动解决冲突标准流程
git cherry-pick  0a76022  复制这个提交到当前分支

远程仓库相关命令

git remote add origin [email protected]:Username/learngit.git 添加远程库连接,将远程库代号为origin
git remote    查看连接的远程库(粗略)
git remote -v        查看连接的远程库(详细)
git remote rm origin   删除xxx远程库连接
git clone [email protected]:Username/gitskills.git 克隆远程库到本地并创建本地master分支
git checkout -b dev origin/dev  ###checkout dev从origin/dev,使用远程仓库xxx分支创建本地xxx分支
git branch --set-upstream-to=origin/dev dev  建立本地xxx分支与远程xxx分支的连接
git push -u origin master  (第一次)合并本地xxx分支到远程库的xxx分支
git push origin master   ###push master到origin master,合并本地xxx分支到远程xxx库的xxx分支
git pull origin master     ###pull origin master到master,合并远程xxx库的xxx分支到本地xxx分支
git push origin master –-force   强制push分支
git pull origin master --allow-unrelated-histories   强制pull分支
git pull 默认pull
git push github master
git push gitee master
git push github dev
git push gitee dev    常用远程库与分支push
git pull github master
git pull gitee master
git pull github dev
git pull gitee dev    常用远程库与分支pull


常见gui操作


先启用git并登录github
建库 项目创建后vcs-导入到版本控制中-创建git仓库-选择项目目录为本地仓库
创建远程仓库,必须的只有仓库名   之后第一次push时填写https/ssh即可
clone  VCS——版本控制中拿取——git——填写项目链接
add/commit/update/push/pull/rollback/history/branch,直接使用对应gui,注意区分
应加入而未加入为红色,加入了并有修改为绿色或蓝色,忽略或无未提交修改为正常色
左边行号 annotate 查看没行代码的作者即详细提交时间等
文件颜色
红色 未加入版本控制  灰色 忽略未加入版本控制
绿色 加入从未有过提交 蓝色 加入提交后有修改 黑色 加入提交后无修改


一些git设置


所有设置均在.gitconfig,在电脑用户文件夹/库的.git文件夹
本地git注册
git config --global user.name "username"
git config --global user.email "usereemail"
颜色设置 git config --global color.ui true
配置命令别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
特殊设置文件,均有对应编写规则
.gitignore    将某些文件(在目录而)忽略加入仓库
.gitattributes 将某些类型的文件统计为某类型

猜你喜欢

转载自blog.csdn.net/NULLmk404/article/details/106363969