Git学习笔记
1.初始化仓库
Command line instructions
Git global setup
git config --global user.name "panjinquan" git config --global user.email "panjinquan@dm-ai.cn"
Create a new repository
git clone http://192.168.3.29:8082/panjinquan/DMFaceRecognition.git cd DMFaceRecognition touch README.md git add README.md git commit -m "add README" git push -u origin master
Existing folder
cd existing_folder git init git remote add origin http://192.168.3.29:8082/panjinquan/DMFaceRecognition.git git add . git commit -m "Initial commit" git push -u origin master
Existing Git repository
cd existing_repo git remote rename origin old-origin git remote add origin http://192.168.3.29:8082/panjinquan/DMFaceRecognition.git git push -u origin --all git push -u origin --tags
2.分支操作
# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支 $ git merge [branch] # 选择一个commit,合并进当前分支 $ git cherry-pick [commit] # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]
3. 退回到指定tag版本
可能用到的命令:
查看当前分支:git branch
切换分支:git checkout master(分支名)
查看tag:git tag
查看当前git状态:git status
显示所有提交过的版本信息: git log
查看所有分支的所有操作记录: git reflog
1. 查看某个tag的详情:git show v1.3.5
返回:commit backid(回退命令就用这个id)
2. 通过commit的id回退:git reset --hard backid
如果这个时候你立马投入与bug的战斗,修改后发版本,那么你就犯了严重的错误,因为你修改后的代码是无法与正在开发的版本合并哒,也就是说你的修改并不能加入现有的代码。所以: 特别注意:通过标签回退版本后,要马上拉一个分支,然后当前主干分支要立即回到原来的位置,否则正在开发的代码可能白干了,接着在刚拉的分支上修改bug,修改完毕合并到主干上 (验证过,是对的)
3. 回退版本后,立即拉取分支,这里取名bugfix分支:git checkout -b bugfix
4. 请先回到主干分支上:git checkout master
5. 切换到bugfix分支,修改bug。就可以按照原先的开发流程继续工作
操作过程中容易出现直接checkout指定的tag,这种是有问题的,
git checkout tag_name 这时候 git 可能会提示你当前处于一个“detached HEAD" 状态。(detached 分离的,这时候head指向了tag,但是idea的version control内能看到一个叹号!)
因为 tag 相当于是一个快照,是不能更改它的代码的。出现这种问题,可以直接pull一次代码,这时候head就会转到操作之前的HEAD
参考文章:
- gitlab回滚到指定tag版本 【Gitlab】GIT回滚master分支到指定tag版本 并提交远程仓库_wqh的技术博客_51CTO博客
- git使用tag恢复到以前的版本 https://blog.csdn.net/fzk2008/article/details/59575834