1.下载moduleA项目代码
命令:
git clone https://github.com/wangyanan52121/moduleA.git
因网络问题,可能会下载失败,多试几次。
2.查看当前项目
查看tag命令(字符串排序):
git -C moduleA tag
查看tag,根据日期排序:
git -C moduleA tag --sort=taggerdate
查看项目log:
git -C moduleA log
查看该项目内容:
ls moduleA
cat moduleA/moduleA.txt
3.更新代码与提交代码
更新代码命令(本地没有未提交的修改):
git -C moduleA pull origin
更新代码命令(本地存在未提交的修改)
按理来说,拉取最新代码时,应该报错的,但是没有报错提示
继续测试,修改moduleA.txt文件,修改前几行
可以看到虽然git pull命令执行成功了,但是本地的文件仍是之前修改的代码,不是服务器的最新代码
继续测试,可以看到git fetch --all命令也是没有成功拉取服务器最新代码到本地
继续测试,可以看到命令git reset --hard origin/< branch > 执行成功,拉取服务器最新代码到本地了。
该命令会重置本地仓库,并使用远程仓库中指定分支的代码替换本地仓库中对应分支的代码。注意,该命令会删除本地未提交的所有改动和文件,慎重使用
当然了,如果命令 git reset --hard origin/< branch > 还是无法将本地代码替换为服务器最新代码,可以搭配 git pull origin 使用。
基本上是ok的。
继续测试,将本地未提交修改,提交到本地仓库(执行git add .命令和git commit -m “XXX”)
执行更新代码命令(git pull origin),发现本地文件内容仍不是服务器上文件内容,因为本地有一个更新的提交。
4.打tag与提交tag
打tag命令:git -C moduleA tag -a v0.1.1 -m v0.1.1
提交tag到服务器:git -C moduleA push origin v0.1.1
5.切tag
命令:git -C moduleA checkout v0.0.2
此时,项目处于游离状态
游离状态下,执行pull或push,会报错。
因此,需要先切换回原来的分支,才能拉取提交代码。