git

git是一款分布式代码版本控制工具

初始化使用:
当我们在gitlab、github初始化一个项目路径后,
需要将本地仓库的代码提交到新建好的远端仓库

1
2
3
4
5
git init
git remote add origin <remoteurl> // 链接远端仓库 <remoteurl>为远端仓库地址
git add .
git commit -m "commit info"
git push

设置全局用户信息

1
2
git config --global user.name "userName"
git config --global user.email "useremail"

git fetch 拉取代码
git merge 合并代码
git pull 拉取并合并代码
git push 将本地仓库的commit提交到远端仓库

git checkout 切换分支
git checkout -b 新建分支并切换

git branch -d 删除分支 不能删除有未提交commit的分支
git branch -D 强制删除分支

git push -u origin 将本地分支推送到远端,如果远端没有此分支则会创建

git reset –hard 代码回滚到某个commit commitId可以通过git log查看

git log 可以查看每一个的commit,显示的信息有 commit date,commit person,commitId,commit info

git merge A 将A分支合并到当前分支

git rebase A 将A分支合并并且将A分支节点置于当前分支之后

git mv 修改文件名,因为git默认忽略文件大小写,
如修改文件名 File.js 到 file.js此时是无法检测到更改,需要使用命令:
git mv File.js file.js

update

在github中已修改默认分支为main 而不再是master

此时针对命令为
git init
git remote add origin // 链接远端仓库 为远端仓库地址
git branch -M main
git push -u origin main

git checkout

checkout 有多个使用场景。

  • 切换分支

    • git checkout -b branchName 新建分支并切换到该分支
    • git checkout branchName 切换到分支
  • 舍弃代码 (未提交到暂存区)

    • git checkout filePath 舍弃指定文件的修改
    • git checkout . 舍弃所有的修改

git cherry-pick (合并单次commit)

当我们需要从其他的分支获取某次提交,但又不想直接合并该分支的全部代码
此时可以使用 git cherry-pick commitid 来获取其他分支的某次提交

git reset –hard (还原到历史版本)

当需要还原仓库代码时,可以使用 git reset –hard commitid 来回滚本地代码
但是因为此时本地仓库落后于远端仓库,此时是无法 push 的。

需要在远端仓库删除该分支,然后执行 git push localBranchName:remoteBranchName

  • localBranchName 本地仓库的该分支名
  • remoteBranchName 远端仓库的分支名

git rebase

异常解决

有时git

-refusing to merge unrelated histories

当执行git push时提示先执行git pull
而执行git pull时报错如标题,
此时需执行:

1
git pull origin master --allow-unrelated-histories