目录
(3)若提示:Merge made by the 'ort' strategy.
一、安装git
- 官网下载并安装git。
- 安装好后,在电脑任意处右键,会出现如下图的选项(表示已经安装成功),选择git bash here,即可进入到终端界面。
二、git 克隆下载项目 clone
1. 找一个项目的存放位置
在电脑任意处,创建一个空文件夹。
2. 进入终端
在该空文件夹处右键,选择git bash here,进入终端。
3. 执行克隆命令
(1)clone master
git clone [项目链接]
(2)clone 自定义分支
git clone -b [分支名] [项目链接]
三、分支管理 checkout
以下操作均在vscode终端中使用。
1. 切换分支
首次打开项目时,一定要查看是否为自己的分支。若是其他分支,请先切换成自己分支。
(1)切换已有分支
git checkout [分支名称]
(2)建立并切换新分支
git checkout -b [分支名称]
注意:要分清-b是创建,-d是删除,不要搞错了。
2. 本地更新远程分支信息
针对:远程分支更新了,本地没有即时更新分支信息。
# 首先,查看本地所有分支
git branch -a
# 更新远端的分支到本地
git fetch origin
# 最后,切换成自己想要的分支
git checkout [分支名称]
# 再次确认查看分支
git branch
四、提交项目 push
1. 操作
(1)git branch 查看是否为自己的分支
(2)add 暂存
(3)commit 提交
(4)pull 拉代码
(5)push 推到线上
# 首先,添加到暂存区
git add .
# 然后,提交并写解释
git commit -m "fix: 这是我提交的代码标题"
# 再拉一下master(并解决merge冲突)
git pull origin master
# 知识点:git pull命令就是git fetch 和 git merge两个命令的组合
# 确认是否为自己的分支
git branch
# 最后,push上传
git push
2. 相关问题
若 pull 之后,既没有更新代码,也没有显示already update的提示,而是出现如下问题。
(1)若提示:fatal: The current branch [branch名] has no upstream branch.To push the current branch and set the remote as upstream, use git push --set-upstream origin [branch名]
原因:新建分支的第一次push,会出现这个情况。
解决:终端输入下方命令,即可push成功。
git push --set-upstream origin [branch名]
第一次执行完后,下次提交项目时,就只需输入git push即可。
(2)若提示:fast-forward
原因:自己提交的版本,已被master合并。然后自己又拉了一下master,这时,自己本地端和远端master是一致的。
解决:只需要再执行一次git push。保持自己本地端、与自己远端保持一致。
(3)若提示:Merge made by the 'ort' strategy.
原因:当执行git pull origin master后,同个分支的本地代码和远端代码不一致。
解决:本地拉一下自己远端分支,或者本地代码推到远端分支。
五、回退项目 reset
1. 针对已经 commit ,但没有 push 的:
# 首先,查看记录
git log --oneline -3
注意:最好加上限制条件(如 - 3 ,表示只查最近的三次 commit编号记录)
# 然后,执行回退
git reset [要回滚到的 commit编号]
# 或者
git reset --hard [要回滚到的 commit编号]
其中,
--hard 不会把程式改动再放回 working directory。
git reset --hard [要回滚到的 commit编号] 回退到上次提交并清除本地提交的代码。
git reset --soft [要回滚到的 commit编号] 回退到上次提交不清除本地提交的代码。
git reset HEAD~ 撤销所有本地提交命令。
HEAD~ 表示祖先。
HEAD^ 表示父母 (涉及分支合并)。
2. 针对已经 push 到远端的:
此时不要用 "git reset",而是用 "git revert"!
因为 "git reset" 会抹掉历史,而 "git revert" 用于回滚某次提交的内容,并生成新的提交,不会抹掉历史。
若执行回退时,遇到问题:commit is a merge but no -m option was given
原因:回退的这个ID,属于已经正常合并的代码,是已经解决了冲突,不给回退的机会。(只有当没有解决完冲突而被误提交了,才可以回退)