Git的一些基本操作【持续更新】

经常用git,但好多命令总是记不住,每次都百度。现在整理下做个笔记吧。

Branch 分支操作

查看分支

1
2
git branch  #只显示本地分支
git branch -a #显示本地分支和远程分支

创建分支

1
2
git checkout -b branch_name
#如果有一个远程分支remotes/origin/branch_name,那么执行这个命令将会创建新的名为`branch_name`本地分支并且跟踪同名的远程分支remotes/origin/branch_name

推送远程分支

1
git push origin branch_name

删除分支

1
2
3
git branch -d branch_name
# 删除本地分支后并删除远程分支
git push --delete origin branch_name

Tag 标签操作

查看tag列表

1
git tag

新增tag

1
git tag tag_name # 比如v1.0

推送本地指定tag到远程

1
git push origin tag_name

推送全部本地tag到远程

1
git push --tags

删除tag

1
2
3
git tag -d 
# 删除tag后并删除远程tag
git push --delete origin tag_name

submodule子模块操作

子模块的添加

1
git submodule add <url> <path>

其中,url为子模块的路径,path为该子模块存储的目录路径。

执行成功后,git status会看到项目中修改了.gitmodules,并增加了一个新文件(为刚刚添加的路径)

git diff --cached查看修改内容可以看到增加了子模块,并且新文件下为子模块的提交hash摘要

git commit提交即完成子模块的添加

子模块的clone

克隆项目后,默认子模块目录下无任何内容,需要在项目目录中执行以下命令clone子模块

1
2
3
4
git submodule init
git submodule update
# 或者
git submodule update --init --recursive

子模块的更新

如果项目中提交了子模块的最新更新:

1
git submodule update

如果项目中未提交子模块的最新更新:

1
git submodule update --remote

删除子模块

  1. rm -rf 子模块目录 删除子模块目录及源码
  2. vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目
  3. vi .git/config 删除配置项中子模块相关信息
  4. rm .git/module/子模块目录 删除模块下的子模块目录,每个子模块对应一个目录

执行完成后,再执行添加子模块命令即可,如果仍然报错,执行如下:

1
git rm --cached 子模块名称

完成删除后,提交到仓库即可。

其他

github中fork的项目与原作者同步

假如一个项目Evil-S0ul/write-doc地址: https://github.com/Evil-S0ul/write-doc

我fork之后的项目是heropoo/write-doc地址: https://github.com/heropoo/write-doc

接下来开始操作:

  1. 切换到我fork的项目目录里,然后增加源仓库地址到你项目的远程分支中
    1
    2
    cd write-doc
    git remote add Evil-S0ul https://github.com/Evil-S0ul/write-doc
  2. fetch刚添加的源分支到本地
    1
    git fetch Evil-S0ul
  3. 合并两个版本的代码
    1
    git merge Evil-S0ul/master
  4. 最后把合并后的代码push到你的Github项目上去就ok啦
    1
    git push origin master

检出远程的某个分支或者tag

1
2
3
4
git fetch
git checkout branch_name
#或者
git checkout tag_name

同步且merge其他远程分支到当前本地分支

1
git pull origin other_branch_name

Git无法pull仓库refusing to merge unrelated histories

有时候我们的本地仓库添加了一个远程仓库地址,pull代码时会报refusing to merge unrelated histories的错。解决方法是加一个参数--allow-unrelated-histories

假如我们的分支是master

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

最后更新: 2020-05-22 17:05:50

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信