git与github
Git的三个区域概念#
Git有工作区、暂存区和版本库的概念#
工作区 - 就是电脑能看到的目录;
暂存区 - 英文叫stage或index。一般存放在.git
目录下的index文件中,所以我们把暂存区有时也叫作索引(index)。
版本库 - 工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
对github进行本地认证#
完成这一操作之后,如果以ssh链接从自己帐户的repository中clone到本地,那么从本地push到github上就不需要输入帐户密码了。
生成SSH Key#
输入命令ssh-keygen -t rsa
,会生成密钥文件,id_rsa.pub是公钥,密钥文件默认存在home/user/.ssh文件中(Windows默认存在C:/Users/user/.ssh)
添加gitHub的SSH密钥#
-
登录GitHub账户
-
打开Setting
-
找到SSH and GPG
-
选择SSH Keys
-
选择 New SSH Key
-
将id_ras.pub的内容粘贴到Key栏
检查是否配置成功#
添加SSH Key后,在本地终端输入命令ssh -T git@github.com
查看是否认证成功。
Git的命令和操作#
可视化学习教程#
简单的操作#
查看当前工作区的状态git status
。
将修改后的文件添加至暂存区 git add <file>
。
提交修改 git commit -m "commit reason"
查看git日志 git log
查看某次commit
的详情 git show commit_id
修改提交人的基本信息 git config --global user.email "xxxxx@xxx.com"
git config --global user.name "name"
回滚状态 git reset commit_id
分支branch#
创建分支 git branch branchname
切换分支 git checkout branchname
创建并切换分支 git checkout -b branchname
查看本地分支 git branch
,带*
号的是当前分支
查看远端分支 git branch -r
查看所有分支 git branch -a
查看本地分支与远端分支的关联情况 git branch -vv
删除本地分支 git branch -d <branch-name>
远端分支被删除后,清理本地的远端记录 git remote prune <remote-name>
修改当前分支的分支名 git branch -m new_name
,如果new_name被占用,则需要-M
参数来强制执行。
git的默认分支是master,原先github的默认分支也是master。但是2020年10月开始,github的默认分支变成了main。因此将本地分支与github默认远程分支关联前,需要将本地分支重命名为main。
版本tag#
再当前代码状态新建版本标签tag
git tag v1.0
查看历史tag
记录 git tag
切换到某个tag
git checkout v1.1
push and pull#
如果是本地已经有了一个git项目,则需要设置remote。其中<remote-name>可以任意设置。
git remote add <remote-name> <remote-url>
如果是从远端clone
下来的,会有一个默认的remote。
在执行git fetch
git push
git pull
等命令之前,需要为所在分支关联远端分支。
分两种情况进行关联:
- 与一个现有的远端分支关联
执行git fetch
,这个命令会获取远端的所有分支。在本地创建同名分支(如果还没有),将远端分支merge
到本地分支。然后执行git push -u。
如果merge时报错:fatal: refusing to merge unrelated histories,则增加--allow-unrelated-histories选项。 - 不与现有的远端分支关联
执行git push -u <remote-name> <local-branch>
会在远端创建一个分支,与本地分支关联,并push本地内容( -u
是--set-upstream
/--set-upstream-to
的缩写)。如果该远端分支已存在,则不会创建新的分支。
完成关联后,以后就可以直接执行git fetch
git push
git pull
等操作了。
分支合并#
一般项目开发中不会直接在主分支上做修改,而是创建一个分支,在分支上修改,测试通过后再merge
到主分支上。将本地代码push
到远端之前,需要先进行fetch
并merge
(等价于直接pull
)。
- 先切换到
master
分支。 git pull
与远端进行同步。git merge branch1
命令将branch1
合并到master
。git push
将修改推到远端。
杂乱的问题#
git clone时选择了https链接,导致每次git push时都需要登录验证。
解决办法:
- 创建一个remote,这个
可以取任意名字,一般取origin或upstream。
git remote add <remote-name> <remote-url>
- 查看所有remote
git remote -v
- 删除原有的https remote。
git remote rm <old-remote>
作者:yuxiayizhengwan
出处:https://www.cnblogs.com/yuxiayizhengwan/p/15070428.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库