【版本控制】Git使用手册

待研究,看了一天还是很迷惑,还是要多尝试啊。


一、下载安装

(一)Git

  1. 官网(太慢,不推荐):
  2. 国内镜像(推荐):

image.png

  1. Next…下一步安装即可(若有路径选择,可切至D盘)
  2. 装好后桌面没有图标,右击看到Git Bash Here为成功

image.png

二、常用命令

(一)基础配置

git --version															# 查看Git版本
git config --global user.name 用户名				# 设置全局用户名❀
git config --global user.email 邮箱				# 设置全局邮箱❀
git config --list/git config -l						# 查看配置信息
git config user.name											# 查看参数值,此处为user.name
git config --global color.ui true					# Git显示颜色,false为取消显示(看了半天没看出来哪的颜色变了)

(二)文件管理

git init									# 初始化,创建Git仓库❀
git add 文件名							# 添加指定文件到暂存区,.代表当前目录全部文件❀
git status								# 查看Git状态(add/commit操作后查看)❀
git commit -m "提交信息"		# 提交暂存区文件到本地历史仓库,提交信息即本次修改内容的简单说明❀
git diff 文件名						# 查看不同
git checkout -- 文件名			# 丢弃工作区的修改,回到最近一次commit/add时的状态
git reset HEAD 文件名			# 将暂存区的修改回退到工作区
git rm --cached 文件名			# 从版本库删除文件, commit到本地仓库, push后删除远程仓库里的该文件,--cached表示只从Git的暂存区中删除该文件,而不从工作区中删除该文件
mkdir 文件夹名							# 创建空文件夹
cd 路径										# 切换至指定路径
pwd												# 显示当前目录

(三)版本切换

git log --pretty=oneline		# 查看提交历史(查看以前的版本id前四位),q退出
git reflog									# 查看命令历史(版本回退后,查看以后的版本id前四位)
git reset --hard 版本号			# 切换版本(版本号前四位,或者HEAD替换版本号,HEAD当前版本,HEAD^:表示上个版本,HEAD^^:上上个版本,HEAD~10:往上10个版本
git reflog									# 查看版本号后切换

(四)代码管理

git clone 仓库地址 [自定义仓库名称]				# 克隆远程仓库的代码到本地❀
git push -u 远程名 分支名								# 将本地代码推送到远程仓库,远程名常用origin,-u表示将本地分支和远程分支建立关联
git pull 远程名 分支名										# 项目拉取更新
cd ~/.ssh																# 查看是否生成过ssh公钥
ssh-keygen -t rsa -C "邮箱"							# 生成公钥(id_rsa.pub),私钥(id_rsa)
git remote add 远程名 远程仓库地址				# 建立连接(ssh)

(五)分支管理

git branch																				# 查看分支列表,当前分支前有*
git branch 分支名																	# 创建分支
git checkout 分支名																# 切换分支
git checkout -b 分支名															# 创建并切换分支,-b表示创建并切换
git branch -d 分支名																# 删除分支(-D为强制删除;-d删除前会检查分支状态)
git merge 分支名																		# 将指定分支合并到当前分支
git merge --no-ff -m "merge with no-ff" dev				# 普通模式合并,合并后的历史有分支,能看出来曾经做过合并❀
git switch -c 分支名																# 创建并切换至指定分支
git switch 分支名																	# 切换至指定分支
git log --graph --pretty=oneline --abbrev-commit	# 查看分支合并图

三、应用场景

(一)忽略文件

1. 场景描述

你写了一段代码,但是有些文件不想提交上去:

  1. 系统自动生成的文件,如:缩略图;
  2. 程序编译生成的文件,如:.class文件;
  3. 敏感文件,如:账号密码。

假设1.txt写着你的账号密码,你不想提交上去,但是git status又会报错:
image.png

2. 操作步骤
  1. 在文件的根目录打开Git Bash;
  2. touch .gitignore新建.gitignore文件;
  3. 添加想要忽略的文件名/文件夹/通配符后保存(*.txt表示匹配所有txt文件)
2.txt
  1. 此时再进行commit时,自动忽略2.txt。
  2. 如果有例外,比如*.txt忽略了全部txt文件,但我想上传2.txt,可以使用!解除忽略
  3. 如果add不上去,觉得忽略规则有问题时,可用git check-ignore -v 文件名检查,此时提示.gitignore文件第7行限制了所有.so文件。

image.png

  1. 此时可使用!文件名添加例外文件
*.so
!App.so

3. 小结
  1. 忽略文件:在.gitignore中添加文件名;
  2. 不忽略单个文件:在.gitignore中添加!文件名
  3. .gitignore也要提交至仓库,方便协作者知道忽略哪些文件。

(二)配置别名

1. 场景描述
  • 使用git commit -m "哈哈哈"太长了,想精简一下
2. 配置别名
  • git config --global alias.别名 '原名'
    • --global表示在此电脑中所有Git仓库均有效;
    • 不加表示仅对当前仓库有效;
git staus																							# 原语句
git config --global alias.st status										# 配置别名
git st																								# 现语句
git config --global alias.unstage 'reset HEAD'				# 多个单词加''

3. 配置文件
  1. 全局配置文件:仓库/.git/config,配置的别名在[alias]下,若想删除别名可直接删除对应行。

image.png

  1. 当前用户配置文件(隐藏文件):C盘用户目录/.gitconfig,别名改错了,删除此文件重新配置

image.png

4. 常用别名
# st 表示 status
git config --global alias.st status

# co 表示 checkout
git config --global alias.co checkout

# ci	表示 commit
$ git config --global alias.ci commit

# br 表示 branch
$ git config --global alias.br branch

# lg 表示 ...
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"

(三)撤回修改

1. 尚未add
  1. 丢弃工作区的修改:git checkout -- 文件名
2. add后,commit前
  1. 回退版本:git reset HEAD 文件名
  2. 丢弃工作区的修改:git checkout -- 文件名
3. commit后,推送前
  1. 版本回退
4. 推送到远程仓库
  1. 推送后无法撤回

(四)删除文件

1. 删除远程 Git 仓库上的文件,本地不删
git rm --cached 文件名
git commit -m "删除XX文件名"
git push origin master

2. 完全删除本地和远程仓库中的文件
git rm 文件名
git commit -m "删除XX文件名"
git push origin master

3. 误删
  • commit过的文件:git checkout -- 文件名
  • 未commit过的文件无法恢复;
4. 删除远程库
  • 在GitHub后台将远程库删除。

(五)GitHub

1. 生成公钥&私钥
  1. ssh-keygen -t rsa -C "邮箱",一路回车;

image.png

  1. 在C盘用户目录生成.SSH文件夹;
  2. id_rsa:私钥,私密信息,不要传播;
  3. id_rsa.pub:公钥,可以随意;
2. GitHub配置
  1. settings->配置SSH keys->复制公钥id_rsa.pub的内容到key

image.png

  1. GitHub中创建代码仓库

image.png

  1. 复制仓库地址

image.png

  1. git remote add origin 仓库地址关联远程仓库❀
3. 测试连接可行
  1. ssh -T git@github.com后输入yes,返回successfully表示成功

image.png

  1. 报错:ssh: Could not resolve hostname github.com: Name or service not known表示网络不好,相当于浏览器页面访问GitHub就进不去,换个好网试试。
4. 删除远程库配置信息

万一配置的地址有问题,想要删除远程库的配置信息:

  1. git remote -v查看远程库信息;
  2. 根据名字删除,如:git remote rm origin
5. 参与开源项目
  1. 进入开源项目,点击Fork克隆仓库至自己账号下;
  2. 从自己账号clone代码到本地修改;
  3. 修改后,可在GitHub上发起一个pull request;

(六)代码管理

1. 代码推送
  1. 首次推送本地分支全部内容git push -u origin main
  2. 后续此目录下推送使用git push即可
  3. 若有版本冲突,需先pull拉取代码,手动解决冲突内容后,重新提交推送。
2. 代码克隆
  1. git clone 仓库地址克隆远程仓库代码至本地
  2. cd 仓库目录切换路径至仓库下的文件夹目录下;
  3. ls查看目录下的文件,确认克隆成功;
  4. 默认只有一个master分支;
  5. 使用git checkout -b dev origin/dev创建与远程库的dev分支关联的dev分支(本地分支与远程分支名称最好相同)。
3. 代码拉取
  1. git branch --set-upstream-to=origin/dev dev配置本地dev分支与远程仓库的dev分支,即origin/dev关联;
  2. git pull拉取dev分支的代码;

(七)分支管理

1. 版本冲突
  • 先在test分支提交代码,完成后合并至main分支,然后删除test分支。
  • 分支合并时,若存在冲突,需手动修改冲突文件(报错后文件中会有标注),才能合并。
    • 【用户甲】在【dev分支】提交了代码【版本A】;
    • 【用户乙】在【main分支】提交了代码【版本B】;
    • 【dev分支】合并至【main分支】时,需手动调整冲突内容。
2. 管理策略
  1. 研发在各自的分支编写完成小模块后,合并至dev分支;
  2. 版本功能完成后,dev合并至main分支进行版本发布;
  3. 删除无用的个人分支;


3. 修改Bug-YW2023

正在开发,接到Bug需要修改,但是代码写到一半还不能提交

  1. git stash暂存当前修改;
  2. 如在dev分支修改,在dev下创建新分支;
  3. git checkout -b YW2023,YW2023指Bug编号;
  4. 修复后提交,切换至dev分支并合并;
  5. git stash list查看暂存历史;
  6. 恢复至暂存前的状态
    1. git stash pop恢复至暂存前的状态(删除stash历史记录);
    2. git stash apply不删除stash历史记录,要使用git stash drop删除stash历史记录;

暂存并修改Bug后,也可以在分支合并时,选择仅同步修改的内容,即修复YW2023问题的代码。

  • git cherry-pick 修复的版本号YW2023分支中问题修复的代码同步至dev分支;
4. 新功能
  1. 使用新建的单独分支Function
  2. 若研发至一半,还没合并至dev分支,取消了此模块功能,可用git branch -D 分支名强行删除此分支。
5. 提交历史优化
  • git rebase:将本地未push的分叉提交历史优化为直线。

(八)标签管理

1. 标签介绍
  • 相当于commit的版本号,但是一串乱序字母不好记,可以打标签为v1.10方便查找对应版本。
2. 标签操作
git tag v1.10											# 打上标签v1.10
git tag 													# 查看所有标签
git tag v1.9 版本号								# 给指定的commit版本号打标签
git show v1.10										# 查看指定的标签信息
git tag -a v1.10 -m "msg"	版本号		# 创建带有说明信息的标签,-a表示指定标签名,-m表示指定说明信息
git tag -d v1.10									# 删除指定本地标签
git push origin v1.10							# 推送本地标签至远程仓库
git push origin --tags						# 推送全部尚未推送的本地标签至远程仓库
git push origin :refs/tags/v1.10	# 删除指定远程标签(先删除本地标签)

(九)Pycharm

1. 配置Git
  1. File -> Settings -> Version Control-> Git中配置本地Git路径,Test后有版本号为正常。

image.png

  1. 下方GitHub,使用Token

image.png

  1. 点击Generate去GitHub生成Token

image.png

  1. 勾选全部权限后,点击下方Generate token
  2. 复制生成的Token到输入框后点击Add Account,账号登录成功。
2. 克隆代码
  1. 点击VCS -> Get from Version Control -> Repository URL

image.png

  1. 查看GitHub仓库地址

image.png

  1. 粘贴后点击clone即可。

四、总结

  1. 远程仓库的修改大多在GitHub中进行。
  2. 待研究。。。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏虞北念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值