免费 网站,装饰设计网站建设,公司logo注册商标流程 费用,移动网络建设一、从仓库中clone到本地文件:
1. 先在Github中创建一个存储库,如下图所示,点击右上角的New,
之后就会进入到这个界面 1.没有添加README.md文件的情况: 因为我在创建的时候没有添加README.md文件,所以它展示的是默认页面,因为我的仓库什么都没有.它就会给我展示一些简单的指…一、从仓库中clone到本地文件:
1. 先在Github中创建一个存储库,如下图所示,点击右上角的New,
之后就会进入到这个界面 1.没有添加README.md文件的情况: 因为我在创建的时候没有添加README.md文件,所以它展示的是默认页面,因为我的仓库什么都没有.它就会给我展示一些简单的指令(如下面的界面) // 这里大家可能会疑惑,这个仓库地址是干嘛用的?别着急,在后面会讲到. 这个存储库你就把它当成文件夹就行了,里面存放的是你自己需要放的任何东西.因为之后可能我们还会有更多的存储库,考虑到管理是否方便这个问题 , 所以我们可以在资源管理器中去创建一个文件夹(我命名为GitProject),方便后续管理我们的存储库 : 之后打开Bash(就不讲解这个的下载了,某站上随便找找就有): 点击后进入下面这个页面: 再进入资源管理器中,进行下面的操作 再回到Bash中,输入一下命令(先输入cd 再把位置粘贴到上面去) 红色部分就是粘贴,只要你复制了内容,它就会显示黑色 而不是灰色(如上面图片中这个状态,这个状态是点不了的) 这里如果你没有成功进入到这个目录下,你把命令: cd E: \GitProjects换成cd E:/GitProjects(因为你可以观察到在Bash中,它这个用的不是\而是/ ,所以有时候你输入\ 它就会不成功) 可以看到,我们进入到了GitProjects这个目录了 ,接下来执行下面图片中的命令: git clone 后面的地址就是我们存储库的地址,也就是刚刚 上面的SSH后面的地址 直接粘贴到git clone 的后面即可(记得空格 别把每个单词都连在一起了) 接下来 ! 回车!! 如果是第一次使用SSH,需要配置SSH(配置一次就可以了),配置方法我放在最底部了,大家也可以自己去问gpt其他什么的AI也可以 就会出现上面的页面.
我们可以去文件夹中看看,是否有Test这个文件出现在GitProjects这个目录下面: 进入到Test文件夹中,会发现一个名为.git的文件: 这个文件夹就是本地 Git 仓库(是本地Git仓库,不是Github存储库.二者是不一样的东西,在常见命令的解释中的 第2. 和3. 有解释)的“核心”用来保存版本控制相关的所有信息比如提交记录、分支、配置、仓库的地址等。因为Test是我们直接从Github仓库中clone下来的,所以它自动的生成了.git文件 git文件会自动生成的情况: 1. 输入指令git init 命令 2. 将Git存储库clone到本地文件中. 你可以尝试在Bash中去输入: 因为我们此时位于GitProjects这个目录,Test是在该目录下,所以我可以直接cd Test 进入该目录 在执行 git remote -v命令,该命令是 查看仓库的地址的一个命令. 这里有两个相同的地址,第一个是指从这个地址中拉取东西到本地文件中(Test中). 第二个地址是指,我以后在本地文件(Test)上传的内容到这个地址(仓库)中去. // 为什么要先 cd Test . 假如你不进入到这个Test文件夹中,那么它识别的是在目录GitProjects下的内容,GitProjects下的内容是三个文件夹 它不能进一步的进入到这些文件夹中,它只能识别自己目录下的内容,而在这个目录下并没有.git文件,所以Git命令识别不了这个文件是不是仓库,就无法正确执行命令. 只有进入到Test(有.git文件)中,才能正确的执行git的命令. 我们的命令前面都有git这个前缀,这就是git命令的标志. 之后在资源管理器中或者在VS中进入到Test文件中,新建文件夹还是新建文件都可以,看自己需要什么,资源管理器中只能新建文件夹,在VS中可以新建文件夹和文件. (如果你是想在VS中去新建,你得先打开GitProject这个文件) 这两个创建方式本质上没有区别,新建的文件都会被Git识别,只要在仓库(我们这里是Test)目录下即可. // Git只要看到有新文件,无论你怎么新建都一样,后续git add . 就能追踪( git add . ) 我这里就在Test中建立一个.md文件,在左侧 README.md 的右侧有一个U的标志,这是因为我们还没有上传到Github的仓库,U的意思的是未跟踪的状态. 编辑完后记得 ctrl s 保存.
之后打开Bash ,分别执行下面三条命令: git add . git commit -m...更新的内容... git push origin main 关于 git push origin main 这段代码,需要大家简单了解一下什么意思: 0. git push origin main这个命令的作用就是: 将我以后每次推送的内容 ,这个内容送到的地方 ,把这个地方设置成origin的地址,分支设为名叫mian的这个分支 . 简而言之就是: 显式推送到名为origin的远程仓库的指定分支(main分支) 1.git push :这个没什么好解释的...上面的这张 白图黑字 也有解释. 2.origin : origin 是 Git 给远程仓库起的一个默认别名(origin就是你在github上建的存储库的小名,所以你在Bash中的Test目录下,对origin的操作就是对Test这个仓库的操作,当然假如你在Github上有其他的存储库,假设叫A,同样的,你在Bash中进入A的目录下,对origin的操作也是对A的操作,这里可能有的人会有疑问?那它们的小名都叫origin,怎么分清它们呢?这就看你在Bash中进入的位置了,你进的是A的目录下,对origin的操作就是对A的操作,同理你进入Test的目录下,对origin进行的操作就是对Test的操作),一般你用 git clone 或 git remote add 的时候Git 自动帮你把你的仓库地址叫做 origin。除非你自己在Bash中手动的更改了远程仓库的别名(执行了 git remote rename origin github // 这里的命令就是将origin这个别名更改为github). 3.关于什么是分支,为什么需要分支?我把解析放在底部了(其实大家暂时可以不需要去了解,不影响你上传到仓库). 执行完上面的三条命令之后,你可以去Github的Test存储库查看,是否上传成功: 很明显,我们成功了!!! 这是我们第一次在Bash中的Test这个目录中上传内容,由于我们在第一次上传的时候执行了 git push origin main 这个代码,它已经帮我们设置好了默认的情况 ,之后只要是在Test这个你已经上传过一次内容的目录下,去上传其他的更改的内容的时候, 执行以下的命令就可以了:
git add .
git commit -m......
git push
第三行的代码 : git push(隐式调用) 就相当于 git push origin main(显示调用),这两者是等价的. 如果你手动的更改了仓库的别名,那么很遗憾的告诉你: 改了别名以后每次上传都要用新的别名比如 git push myrepo main。 可以对比第一次的那三行代码看看 , 仅仅是最后一行代码稍作变化 其他的两行代码都一样 .
2.最开始在Github中创建存储库的时候选择了添加RAEDME.md 那么你看到的页面将会是下面这种页面: 多了一个README.md文件,但是少了最开始的部分的代码的介绍. 不过这些不重要 ,重要的是我们得找到SSH连接方式的仓库地址.因为我们是打算用这个方式来联系本地文件和Github存储库的.
添不添加README.md文件,仅仅就这点区别而已. 只是需要我们点击Code 去找一下(SSH)仓库地址而已,其余的操作都一样,不要忘记 如果从来没有配置过SSH密匙的话 ,要记得配置一下(方法我发在底部了)
二、本地文件已经存在,想要把文件里的内容上传到Github的存储库上去:
1. 想要在Github上新建一个存储库,再把本地文件里的东西传上去 1.1.在Github网站上新建仓库repository 登录Github点击右上角“New repository” 填写仓库名等信息点击“Create repository” 1.2 将本地文件夹与远程仓库关联 cd 本地项目文件夹(就是有内容的那个文件夹) git init git add . git commit -m 首次提交 git remote add origin https://github.com/你的用户名/仓库名.git git push -u origin main ( 或 master 不太建议master)视你的默认分支 2. 把本地文件上的内容传到Github上的一个存储库中(已经存在的存储库) (1) 目标仓库是空的,没有任何内容: 操作流程 假设你已经在Github上有了目标仓库只需将本地项目与这个仓库关联并上传。 在Bash中 cd 进入你的本地项目文件夹 # 1. 若未将本地文件初始化过(都没初始化过,更不用说配置远程仓库的地址了)git init //这一步是将本地文件初始化 git add . git commit -m 首次提交 git remote add origin https://github.com/你的用户名/仓库名.git //添加远程仓库的地址 git push -u origin main #2. 若已经将本地文件初始化过了,曾经用这个本地仓库已经关联过Github上的其他仓库之后,想要换不同的目标仓库,将本地仓库中的内容传到另一个目标仓库当中: 你可以 cd 先进入到 本地文件的目录当中: // 查看当前关联的远程仓库的信息,确认是不是与这个仓库取消关联 输入命令: git remote -v 你会看到类似 origin https://github.com/xxx/原仓库名.git // 更改远程仓库地址为新目标仓库 输入命令: git remote set-url origin https://github.com/你的用户名/新仓库名.git //同步到远程仓库 git push -u origin main #3. 若将本地文件初始化过了,已经把它作为了仓库来准备了,但是并没有为它配置过仓库的地址: git add . git commit -m 首次提交 git remote add origin https://github.com/你的用户名/仓库名.git //添加远程仓库的地址 git push -u origin main //这与第一点没啥区别,就是少了一步初始化过程 (2) 目标仓库有内容: 解决步骤 1. 首先尝试 push git push -u origin master # 或 main 如果成功了说明没冲突万事大吉 2. 如果失败提示非快进 push 被拒绝怎么办 A. 先拉取远程分支 假设你的分支叫 main如果叫 master就相应替换 git pull --rebase origin main 这一步会把远程的新提交比如README.md拉下来和你本地合并用rebase历史更直观。 B. 解决可能的冲突 如果本地和远程有同名文件比如你本地也有README.mdGit会提示你解决冲突。 打开冲突的文件根据注释保留或合并内容。 冲突解决后执行 git add . git rebase --continue 或者 git commit C. 再次 push git push -u origin main B. 的解决冲突详细解释:(如何解决冲突) 这里的“解决冲突”意思是本地和远程有同名文件但内容不同Git 不知道该保留哪一份于是让你自己做决定。 B1. 冲突发生时会发生什么 1.1 Git 会暂停合并把冲突的文件比如 README.md用特殊格式标记出来。 1.2 你用文本编辑器打开冲突文件就会看到像下面这样的内容 HEAD 这是你本地当前文件的内容 这是远程仓库pull下来的内容 origin/master B2. 你要怎么做 2.1你需要手动编辑这个文件删掉这些 Git 的标记, , 然后把你想要保留的内容整理出来。 2.2比如你决定全部保留可以这样 这是你本地当前文件的内容 这是远程仓库pull下来的内容 2.3或者你只保留一份内容按你的需要来。 B3. 解决流程举例 3.1 打开冲突文件如 README.md 3.2找到冲突区域像这样 HEAD 本地内容 远程内容 origin/master 3.3删除冲突标记只留下你想要的内容 3.4保存文件(保存更改的内容) //同样的针对于git push -u origin mian 这个命令,只有首次将内容推到远程仓库中的时候是这样子的指令,之后,这一个指令完全可以直接改为 git push (这种隐式的去执行),二者是等价的 小结 远程仓库空的直接 push 没问题。 远程仓库有内容git pull --rebase origin master合并好冲突再 push。 一句话记住 新仓库如果不是空的先pull再push冲突就解决了 三、一些常见的命令的解释:
1. git add . 这行代码什么意思 git add . 这条命令的作用是把当前目录下的所有文件和文件夹添加到Git的暂存区stage/index。 意思是: “告诉Git我准备好把这些改动提交了。” 其中 .点代表“当前目录下的所有文件和子目录”。 举例 假如你新建了几个文件、修改了某些内容运行 git add .这些变动都会被Git记录下来准备提交。 2. git commit -m git commit -m 首次提交 这行代码什么意思 git commit -m 首次提交 作用把已经 add暂存区里的所有文件保存成一个“快照”commit。 -m 后面跟的是提交说明比如“首次提交”。 简单理解 这一步是正式把你的更改保存到本地Git仓库的历史里。 // 本地Git仓库 和 Github上的存储库不是同一个东西 举例 刚才你用 git add . 选好了所有要保存的内容这一步就是“拍板”写个说明Git正式保存快照。 3.git push git push 的作用是 把你本地Git仓库中的提交commit上传到远程仓库比如Github。 详细点说 本地操作add、commit 你的更改只在本地(本地的Git仓库中)远程仓库Github啥也不知道。 git push 这一步相当于“把本地保存好的所有提交送到远程仓库”让远程仓库和你本地仓库同步。 你和其他人就可以在Github网页上看到你最新的提交和更改了。 一句话总结 git push “把本地仓库(也可以叫做本地Git仓库)里的最新内容提交到远程仓库Github等”。 4.git log 用法详解 4.1 git log 显示所有的提交记录commit history。 包括每次提交的作者、时间、提交说明、commit ID等。 常用变体 显示简要历史 4.2 git log --oneline 每个提交只显示一行简洁明了。 只看最近3条历史 4.3 git log -3 可视化分支结构树形 git log --graph --oneline --all 例子 $ git log --oneline e4c63b7 首次提交 3b28a42 添加了readme文件 de4b7e2 修复bug 4.4 补充说明 这些记录只代表你本地的Git仓库历史。 只有 push 到远程后Github上才会看到这些提交。 如果你想看某个文件的历史也可以用 git log 文件名 5. git init 初始化本地文件让Git开始管理这个目录 1 执行完后,本地文件的目录中就会出现一个.git 文件,在这之后,Git就知道这个文件是一个仓库了,在Bash中就可以在这个文件的目录中执行命令了. 6.git remote add origin https://...... 远程仓库的地址(就是SSH后面那串东西) 举例: git remote add origin gitgithub.com:zhong-shengyou/Test.git 这串命令就是 设置仓库的地址 一般情况下都是搭配 git init 一起使用. 使本地文件与Github远程仓库关联上的操作. 你别把 origin 给改成其他名称了 这里的origin 就是我在第一点中提到的别名. 没事改这玩意干啥!!!!!!!!!!!!!!!!!!!!!!!!!! 一定要先执行 git init 再执行 git remote origin 仓库地址 如果 你先执行 git remote origin 仓库地址 会不成功,因为你的本地文件目录中并没有.git 文件,Git 不知道你这个本地文件是不是仓库,所以在Bash中的你的这个本地文件的目录下,执行相关的git命令是不成功的. 必须先执行 git init 把本地文件初始化成一个仓库(使本地文件中生成 .git文件) , 但是要知道,你只是把本地文件初始化成了一个仓库,还并没有与Git远程仓库(存储库)建立联系,所以还需要执行 git remote add origin 仓库地址 这一步执行完后,就正式的将本地仓库(也可叫做本地Git仓库)和Github上的远程仓库(存储库)关联上了(我的个人建议是,如果你没有对本地文件进行初始化,那么就叫它本地文件,进行初始化后,就叫它本地Git仓库 或者 本地仓库). 7.关于 git init 和 git remote add origin 仓库地址的顺序上的一些问题 3. 命令顺序问题可以先 git init马上 git remote add 吗 完全可以 在你执行了git init之后马上就可以执行git remote add origin 仓库地址不需要等到add和commit后再加远程仓库。 这样做也是完全合理的不会有任何坏处。 什么时候需要先加远程什么时候可以后加 先加远程如果你一开始就知道要推送到远程仓库可以先加远程再慢慢add和commit。 后加远程如果你只是想本地管理一段时间等到需要同步到远程再加也可以。 常见顺序比较 一般常见两种写法 A.先提交后添加 remote git init git add . git commit -m 首次提交 git remote add origin 仓库地址 git push -u origin master B. 先加 remote 后 commit git init git remote add origin 仓库地址 git add . git commit -m 首次提交 git push -u origin master **这两种都没问题**Git并不强制顺序只要你在push之前把remote加好就行。 建议 **习惯用法还是先把本地仓库内容整理好add和commit再加远程。**这样逻辑比较清晰和很多官方文档的习惯一致。 但是如果你觉得自己记得住不怕麻烦提前加remote完全没问题有时甚至更方便尤其是后续直接clone或pull的时候。 四、底部:
底部一: SSH配置方法:
一、生成 SSH 密钥对
1. 打开终端命令行 Windows可以用 Git Bash 或者 PowerShell macOS / Linux打开终端
2. 运行生成命令
ssh-keygen -t ed25519 -C your_emailexample.com 如果你的系统不支持 ed25519可以用 rsa
ssh-keygen -t rsa -b 4096 -C your_emailexample.com
这里的 your_emailexample.com 替换成你注册 GitHub 的邮箱。
3. 按提示操作 它会提示你保存密钥的位置默认就是 ~/.ssh/id_ed25519直接回车即可。 你可以设置一个密码短语passphrase也可以直接回车不设。 二、添加 SSH 公钥到 GitHub
1. 复制公钥内容
运行以下命令把公钥复制出来
cat ~/.ssh/id_ed25519.pub
如果你用的是rsa就改成id_rsa.pub
复制终端显示的全部内容。
2. 登录 GitHub进入
Settings SSH and GPG keys 点击 New SSH key 填写 Title随便起个名字 粘贴刚才复制的公钥内容 点击 Add SSH key 三、测试连接
运行命令测试
ssh -T gitgithub.com
如果是第一次连接会提示是否确认输入 yes 。
然后会显示类似
Hi username! Youve successfully authenticated, but GitHub does not provide shell access.
说明配置成功。 四、配置 Git 使用 SSH
如果之前你是用 HTTPS 方式克隆的仓库可以切换成 SSH
git remote set-url origin gitgithub.com:username/repository.git 底部二:为什么存在分支,分支是什么? 1. 多人协作为什么用分支 主分支如 main通常是“稳定版”或者“发布版”主要负责人你在这上面做主要修改和维护。 其他开发者B、C通常在自己的“功能分支”上工作避免直接修改 main减少冲突。 2. 你说的场景举例 你是A主要负责人在 main 分支工作做了6次修改 你可以通过命令查看每次提交历史和具体内容 git log 这能列出所有提交记录每次修改对应一个提交commit里面有时间、作者、提交说明 如果想看某次修改的代码可以用 git checkout commit-id 或者在图形化工具里查看版本差异 3. B和C的分支管理 B、C不直接操作 main 分支分别新建自己的分支如 git checkout -b feature-B git checkout -b feature-C 他们在各自分支自由开发提交历史也独立 这样不会和你main冲突也不会和对方冲突方便定位是谁做了哪些改动 4. 合并代码Merge B、C开发完成后发起合并请求Pull Request请求把自己的分支合并到 main 你作为负责人审查代码后合并保证代码质量和功能正确 这样整个流程清晰责任明确冲突可控 5. 其实大家都在一个分支上的情况 是可以的但容易出现以下问题 频繁冲突多个人同时改同一文件容易冲突难解决 历史混乱提交历史交错难以追踪是谁做了什么改动 版本不清晰难区分哪个版本是稳定版哪个是开发版 6. 版本管理的好处 每次提交都是版本快照可以随时回退 通过分支区分不同功能、不同人员工作清晰明了 方便协作避免相互影响