没有用过git命令的请先看本地操作, 解决问题直接找目录
目录
在实际工作中,我们会遇到很多无法预料的问题:
问题一:频繁改需求。例:
项目开发好以后,形成版本v1.0
需求改变:
在v1.0的基础上添加功能A,形成版本v1.1 - 在上个版本的基础上添加功能A
在v1.0的基础上添加功能B,形成版本v1.2 - 在上个版本的基础上删除功能A,添加功能B
在v1.1的基础上添加功能C,形成版本v1.3 - 在上个版本的基础上删除功能B,添加功能A,再添加功能C
在v1.2的基础上添加功能D,形成版本v1.4 - 上个版本的基础上删除功能A,删除功能C,添加功能B,添加功能Dgit可以完美解决这个删除添加的过程。因为git可以将每个版本保存下来,可以很轻松的将当前版本切换到之前的某个版本。
问题二:一不小心将文件删除了,还需要重新写。
使用git的话,如果将某个文件删除,形成新的版本,也可以很轻松的切换到之前的版本,将删除的文件找回来。
问题三:在当前电脑开发好的内容,换了一台电脑,发现代码还需要重新写
使用git的话,将每次写好的代码,上传到github网站,只要有网就能下载,相当于备份
问题四:工作中每个人写好的文件最后需要合并到一个大文件中,需要很繁琐的复制粘贴
使用git可以很轻松的进行文件合并
git 逻辑分解
Git的工作流程基于工作区、暂存区和版本库
代码的修改全部在工作区, 暂存区存放准备提交的文件,版本库则存储了所有的版本信息
工作区(Working Directory):
想象你正在自己的书房里写一本小说(这就是你的工作区)。你有一个文件夹,里面放着你正在编辑的章节文件。你可以自由地在这个文件夹里添加、删除或修改文件,就像你在书房里随意翻动书页、写下新想法或划掉旧句子一样。在Git中,工作区就是你当前正在编辑和修改文件的地方。暂存区(Staging Area):
现在,你决定要把今天写好的章节提交给你的出版商(这相当于Git中的提交操作)。但在提交之前,你想先整理一下,把确定要提交的章节放在一起。于是,你在书房里找了一个篮子(这就是暂存区),把今天写好的、确定要提交的章节文件放进去。在Git中,暂存区就是一个临时存放你准备提交的文件修改的地方。使用“git add”命令,你可以将工作区中的文件修改添加到暂存区。版本库(Repository):
最后,当你把篮子里的章节文件整理好后,你把它们打包成一个包裹(这相当于Git中的一个提交或commit),然后寄给出版商(这相当于推送到远程仓库)。出版商收到你的包裹后,会把它存放在他们的仓库里(这就是版本库)。在Git中,版本库是一个存储所有版本信息、提交记录和文件修改历史的地方。每次你提交到版本库,都会生成一个新的版本,你可以随时查看、回滚或合并这些版本。
git常用命令
git init // 初始化仓库
git add 文件 // 文件放入暂存区
git add --all / git add . // 存放所有文件
git commit -m "提交信息" // 将暂存区的代码提交到仓库
git remote add origin 远程仓库地址 // 添加远程仓库
git push -u origin master // 推送本地仓库到远程仓库
git pull origin master // 拉取远程仓库到本地仓库
git clone 仓库地址 // 克隆远程仓库到本地
git reset HEAD -- . // 将暂存区的代码拖出工作区
git reset HEAD -- 文件 // 拖出单个文件
git checkout -- 文件 // 丢弃工作区的修改分支
git branch 分支名 // 创建分支
git checkout 分支名 // 切换分支
git merge 分支名 // 合并分支
git branch -d 分支名 // 删除分支
git branch -D 分支名 // 强制删除分支
git branch -m 旧分支名 新分支名 // 重命名分支
查看
git status // 查看当前仓库状态
git log // 查看提交历史
git branch -a // 查看所有分支
git diff 文件 // 查看文件修改内容
git blame 文件 // 查看文件历史记录
git show 版本号 // 查看版本号详细信息
git reflog // 查看所有命令历史记录
设置
git config --global user.name "用户名" // 设置用户名
git config --global user.email "邮箱" // 设置邮箱
本地使用git
git 步骤:
1. 在一个空文件夹里右键选择: Git Bash Here 出现命令框
2. 输入初始化命令:
git init

初始化后,会生成一个隐藏的文件夹(需要在文件夹设置查看隐藏文件) .git 文件夹,
此时代表当前这个文件夹及其以下内容都被git管理了

3.查看当前仓库状态:
git status

隐藏文件夹同级目录下建立新的文件,工作区代码红色
文件名标红表示文件在工作区

4.添加工作区文件到暂存区:
git add 1.txt
// 存放单个文件:
git add 文件名称 // git add 1.txt
git add 文件夹名称 // git add test
// 存放所有文件:
git add --all
git add .
文件名标绿表示文件在工作区

暂存区的代码放到工作区:
// 将暂存区的代码拖出工作区:
git reset HEAD -- .
// 拖出单个文件:
git reset HEAD -- 文件名 // git reset HEAD -- 1.txt
// 拖出单个文件夹:
git reset HEAD -- 文件夹名 // git reset HEAD -- test
// 拖出所有文件:
git reset HEAD -- .

5.将暂存区的代码放到历史区:
git commit -m "新建的1" // 提交代码
git commit -m "版本描述"
工作区空,放入历史区成功,不显示

添加所有文件到暂存区

6.版本信息相关:
查看版本信息
git log
有的git在提交的时候需要输入自己的邮箱和名字 - 需要执行两行命令
git config --global user.name '名字'
git config --global user.email '邮箱'
commit 后是版本号

// 回到上一个版本:
git reset --hard HEAD^
// 有几个上档键就回退几个版本:
git reset --hard HEAD^
// 查看有哪些版本:
git log
// 回到指定版本:
git reset --hard 版本号
回到上一个版本
![]()
.git隐藏文件夹里面的 logs/HEAD 文件中找版本号
git不能管理空文件夹,git提供了一个文件,专门用来占位,需要在编辑器里新建文件:.gitkeep
git在管理仓库中文件的时候,会忽略在.git文件夹所在目录创建一个文件:.gitignore 文件里直接写路径
远程仓库
码云 gitee 操作
登录码云 新建一个仓库
新建仓库

仓库配置

是否需要初始化:
没有东西,建一个仓库放东西,请初始化仓库
自己写了很多文件及文件夹,可选不初始化仓库
初始过化的仓库
1. 复制仓库地址:
复制地址

在新文件夹里,鼠标右击选择 Git Bash Here
将初始化过的远程仓库克隆下来: git clone 复制的地址
可直接重命名: git clone 复制的地址 新的名字
2. 进入从线上克隆下来的文件夹:` cd ants`

此时远程仓库与本地仓库已经联立
使用上传文件:
git push

3. 对本地仓库里东西进行修改之后:
查看状态:
git status

将所有改变的文件放入暂存区:
git add .
文件放入历史区,形成版本:
git commit -m "测试"
提交文件:
git push
完成!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
没有初始过化的仓库
1.在文件夹里,鼠标右击选择 Git Bash Here
Git 全局设置:
git config --global user.name "用户名"
git config --global user.email "邮箱"
2.创建 git 仓库: 已有文件直接在文件中进行文件夹初始化
创建文件夹作为仓库(chicken为我自定义的名字): mkdir chicken
进入文件夹: cd chicken
文件夹初始化(变为本地仓库): git init
创建文件(作为例子,可省略): touch README.md
文件放入暂存区: git add README.md
提交文件: git commit -m "first commit"
请求远程地址: git remote add origin 仓库地址
推送内容到远程仓库的master分支: git push -u origin master
会弹出

输入账号密码
账号可从 gitee 中头像 ====> 设置 ====> 多邮箱管理 ====> 主邮箱
密码为邮箱密码
此时账号密码可能出错,如果没有用过 gitee 的不会出现此问题
解决方法:
找到控制面板 ====> 用户账户====> 凭
据管理器 ====> Windows凭据 ====> 删除gitee存的账号密码
完成!!!!!!!!!!!!!!!!!!!!
新的电脑或新文件夹需要拉取仓库文件
1.在新文件夹里,鼠标右击选择 Git Bash Here
将远程仓库克隆下来: git clone 远程地址
2. 对仓库里东西进行修改之后:
进入文件夹 : cd chicken
进入仓库代码最后会有 (master) 的标志
查看仓库状态: git status

将所有改变的文件放入暂存区: git add .
文件放入历史区,形成版本: git commit -m "测试"
提交文件: git push
会弹出

输入账号密码
账号可从 gitee 中头像 ====> 设置 ====> 多邮箱管理 ====> 主邮箱
密码为邮箱密码
此时账号密码可能出错,如果没有用过 gitee 的不会出现此问题
解决方法:
找到控制面板 ====> 用户账户====> 凭据管理器 ====> Windows凭据 ====> 删除gitee存的账号密码

完成!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
##创建仓库的电脑拉取操作仓库文件
此时创建仓库的电脑(下面称为小A电脑)有两个版本,且提交了两个版本
新电脑(克隆内容的电脑或文件夹,下面称为小B电脑)有一个版本,且提交了一个版本
远程仓库为三个版本
小A电脑的仓库与远程仓库不同步,需要同步
在小A电脑仓库里(即 拥有 .git 的文件夹里)
鼠标右击选择 Git Bash Here
拉取仓库内容: git pull
修改仓库内容后
将所有改变的文件放入暂存区: git add .
文件放入历史区,形成版本: git commit -m "版本号"
提交文件: git push
GitHub 操作
登录GitHub 新建一个仓库


初始过化的仓库
1. 复制仓库地址:

在新文件夹里,鼠标右击选择 Git Bash Here
将初始化过的远程仓库克隆下来: git clone 复制的地址
可直接重命名: git clone 复制的地址 新的名字
2. 进入从线上克隆下来的文件夹:` cd butterfly`
进入仓库标志最后面有(main)

此时远程仓库与本地仓库已经联立
使用上传文件: git push
会弹出

输入账号密码
账号可从 GitHub 中头像 ====> Setting ====> emails ====> Primary email address ====> save
密码为邮箱密码
此时账号密码可能出错,如果没有用过 gitee 的不会出现此问题
解决方法:
找到控制面板 ====> 用户账户====> 凭据管理器 ====> Windows凭据 ====> 删除gitee存的账号密码

结果
完成!!!!!!!!!!!!!!!!!!!!
3. 对本地仓库里东西进行修改之后:
查看状态: git status

将所有改变的文件放入暂存区: git add .
文件放入历史区,形成版本: git commit -m "测试"
提交文件: git push
完成!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
没有初始过化的仓库
1.在新文件夹里,鼠标右击选择 Git Bash Here
2.创建 git 仓库:已有文件直接在文件中进行文件夹初始化
创建文件夹作为仓库(chicken为我自定义的名字): mkdir chicken
进入文件夹: cd chicken
文件夹初始化(变为本地仓库): git init
创建文件(例子,可省略): touch README.md
文件放入暂存区: git add README.md
提交文件: git commit -m "first commit"
推送至 main 分支: git branch -M main
请求远程地址: git remote add origin 仓库地址
推送内容到远程仓库的master分支: git push -u origin main
会弹出

输入账号密码
账号可从 gitee 中头像 ====> 设置 ====> 多邮箱管理 ====> 主邮箱
密码为邮箱密码
此时账号密码可能出错,如果没有用过 gitee 的不会出现此问题
解决方法:
找到控制面板 ====> 用户账户====> 凭据管理器 ====> Windows凭据 ====> 删除gitee存的账号密码

完成!!!!!!!!!!!!!!!!!!!!
新的电脑或新文件夹需要拉取仓库文件
1.在新文件夹里,鼠标右击选择 Git Bash Here
将远程仓库克隆下来: git clone 远程地址
2. 对仓库里东西进行修改之后:
进入文件夹 : cd chicken
进入仓库代码最后会有 (master) 的标志
查看仓库状态: git status

将所有改变的文件放入暂存区: git add .
文件放入历史区,形成版本: git commit -m "测试"
提交文件: git push
完成!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
创建仓库的电脑拉取操作仓库文件
此时创建仓库的电脑(下面称为小A电脑)有两个版本,且提交了两个版本
新电脑(克隆内容的电脑或文件夹,下面称为小B电脑)有一个版本,且提交了一个版本
远程仓库为三个版本
小A电脑的仓库与远程仓库不同步,需要同步
在小A电脑仓库里(即 拥有 .git 的文件夹里)
鼠标右击选择 Git Bash Here
拉取仓库内容: git pull
修改仓库内容后
将所有改变的文件放入暂存区: git add .
文件放入历史区,形成版本: git commit -m "版本号"
提交文件: git push
操作分支
1.查看有所有分支: git branch
2.创建分支: git branch 分支名
3.切换分支: git checkout 分支名

(master) 变为(ants_1)切换成功
4.创建并切换分支: git checkout -b 分支名
5.合并分支:把写的分支内容复制到主分支,主分支增加,原来分支不变: git merge 分支名
6.删除分支:一般不删master分支,在分支下不能删自己,即在有(ants_1)的文件中不能删ants_1分支,可以在(master)下删ants_1分支
删除本地已合并的分支: git branch -d [branchname]
某些情况下可以用 git branch -D [branchName] (使用时应注意是否已合并), 提示删除了一个名为list的本地分支
删除远程分支: git push origin --delete [branchname]
提示删除了一个名为 201804019-test-files 的分支,
注意: 在删除远程分支时,同名的本地分支并不会被删除,所以还需要单独删除本地同名分支
7.上传文件到分支: git push --set-upstream origin source
版本操作
1.查看版本:git log
2.查看文件: ls

3.本地文件同步: git pull 地址 分支名
弹出一个编辑文件页面,不用编辑 使用`:wq`保存并退出
本地文件夹就同步了
4. 对仓库里东西进行修改之后:


将所有改变的文件放入暂存区: git add .
创建其他分支提交文件(只用第一次提交): git push --set-upstream origin 分支名

5.删除无用文件夹: rm -rf project/


查看仓库内所有文件夹及文件:`ls`

冲突
两个人同时操作同一个分支,提交的时候会有先后顺序,先提交的人正常提交了,后一个人提交的时候会产生冲突。因为git规定,每次提交必须是在原来的版本基础上,但是第二个人在提交的时候,在远程已经有了第二个版本,所以第二个人相当于从第一个版本向第三个版本提交。
冲突解决:
1. 使用命令让本地和远程同步:
git pull
然后手动解决文件冲突
2. 开辟新的分支,然后进行分支合并
git fetch origin master:tmp # 使用 fetch 获取远程最新信息并开辟一个临时分支
git diff tmp # 将当前分支和远程分支进行对比
git merge tmp # 将临时分支合并到当前分支

添加本地已有文件到仓库
远程不管有什么,我现在就想把我的一个文件夹里的东西放到远程的分支,该咋办呢???
首先本地已有的文件不可以合并到任何一个分支, 哪怕代码是一模一样的,
只能把本地分支作为新分支传到仓库里
1.建立本地仓库
查看当前项目根目录中有没有 .git文件(隐藏文件),如果没有,右键 => Git bash here ,然后输入命令git init建立本地仓库,如果有的话,删掉,一切从头开始,没得商量
git init
2.将代码提交到本地仓库
git add .git commit -m "new branch commit"
3.在本地仓库中建立一个与远程仓库的别名,以便之后提交代码而不是每次都要输入远程仓库地址。指令结尾是git的仓库地址
git remote add origin git@XX.XX.XX.12:gyjia/hotcodeserver.git
4.注意: 这里要把本地的代码提交的远程仓库上了,步骤如下首先要建立本地的分支,并切换到该分支上(本地建立完分支,默认是在master分支上)
git branch new_branchgit checkout new_branch
push到远程仓库上面
git push origin new_branch
到你的远程仓库看一哈子,这是不是你想要的样子 _!@!@!_
master分支与new_branch分支合并
如果本地当前是在new_branch分支上面,此时想把远程仓库的master与我的new_branch分支合并(merge),可以使用如下命令:
git pull origin new_branch:master
如果线上分支已经提交多版, 本地分支未与线上分支同步
用上述合并代码出现无新代码或者报错使用以下代码 允许之前的历史记录合并到新分支
git pull origin master --allow-unrelated-histories
会自动克隆该分支在本地,克隆后本地只有这一个分支。
// 克隆下来的仓库名默认为远程仓库名
git clone -b <指定分支名> <远程仓库地址>
git clone -b antd组件库 https://gitee.com/wozuisuai.git
// 可以直接以组件库名字命名克隆下来的仓库
git clone -b <指定分支名> <远程仓库地址> <指定分支名>
git clone -b antd组件库 https://gitee.com/wozuisuai.git antd组件库
496

被折叠的 条评论
为什么被折叠?



