git安装和使用
目录
git管理
安装
# yum -y install git
配置用户与邮箱
# git config --global user.name testuser
# git config --global user.email testuser@example.com
配置上传方式
# git config --global push.default simple
nothing: 直接push会出错,需要显式的指出推送的远程分支,例如:git push origin master;
current: 推送时只会推送当前所在的分支到远程同名分支,如果远程分支不存在相应的同名分支,则创建该分支;
upstream: 推送当前分支到它的upstream分支上,这个模式只适用于推送到与拉取数据相同的仓库(比如central workflow);
simple: 在中央仓库工作流程模式下,只能推送到与本地分支名一致的upstream分支中,如果推送的远程仓库和拉取数据的远程仓库不一致,那么该模式会像current模式一样进行操作。因为该选项对于新手来说是最安全的,所以在git 2.0中,simple是push.default的默认值配置项(2.0以前的默认配置项是matching);
matching:推送本地和远程都存在的同名分支。
回退:
从workdir目录回退,此时代码还未被提交至暂存区
git checkout #检出变更状态 modified: mysql/tasks/main.yml git checkout -- mysql/tasks/main.yml #回退更改
从暂存区回退,此时代码被提交到了暂存区,但还未被提交至仓库
git reset HEAD file #回退暂存区 git checkout -- mysql/tasks/main.yml #回退更改
从仓库回退,此时代码已经被提交至仓库
找到所有的提交历史
git log --graph --oneline
回退版本:
git reset --hard HEAD^ ^代表上一个版本 ^^代表上上个版本 以此类推。。 HEAD~100代表回退100个版本 git reset --hard <commit> #--hard加id可以指定回退到哪个版本
回到新版本:
查找所有的提交 历史
git reflog
回退
git reset --hard <commit>
查看代码状态
root@XTZJ-2020YULUWD:~/code# git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: mysql/tasks/main.yml no changes added to commit (use "git add" and/or "git commit -a")
分支管理
查看分支
git branch -a
创建分支:
git checkout -b br1 # 创建并切换至br1分支
git branch br1 # 创建br1分支
删除分支:
git branch -d br1
切换分支:
git checkout br1
合并分支:
# 先切换到master主干,在master上合并br1分支:
git checkout master
git merge br1
tag管理
创建tag:
git tag v1.0
git tag v0.9 f52c633
列出tag:
git tag
查看tag详情:
git show v1.0
删除tag:
git tag -d v1.0
推送本地tag
git push origin --tags
# 指定版本发送
git push origin v1.0
删除远程仓库对应标签
git push origin --delete v1.0
远端操作
git clone # 获取远端代码, 从无到有的获取
git pull # 从远端更新代码到本地
git remote # 查看关联的远端库
git remote -v
origin http://192.168.40.161/demo/test.git (fetch)
origin http://192.168.40.161/demo/test.git (push)
- git push origin \
# 推送代码至远端
git push origin master
origin默认代表远端仓库的路径,可以通过git remote -v查看
master代表代码主干,也可以用分支,将代码推送至分支
- git fetch # 从远端获取代码,跟git pull不同的是,git fetch 会更新所有分支的代码到本地,而git pull只更新当前分支的代码