使用 git 命令添加代码,提交等管理代码操作
https://git-scm.com/book/zh/v2
![图片[1]-Git 用法说明-李佳程的个人主页](http://www.lijiach.com/wp-content/uploads/2022/12/image-88.png)
git 命令常见用法
git help <子命令> #不加<子命令>是查看git命令的帮助
git <子命令> --help #不加<子命令>是查看git命令的帮助
git version #查看版本
git init #本地仓库初始化
git init --bare #创建无工作区的祼仓库,适用于充当远程仓库,一般对应的目录以.git为后缀
git clone http://url #克隆url指定的项目的所有文件,并在本地创建此项目的git仓库
git clone -b develop http://url #克隆url指定的项目中develop分支
git clone -b tag http://url #克隆url指定的项目中tag
git config --global user.name "wangxiaochun" #设置当前用户的git全局用户名,和下面两项都存放在~/.gitconfig文件中
git config --global user.email "29308620@qq.com" #设置全局邮箱
git config --global color.ui true #让Git显示颜色,会让命令输出看起来更醒目
git config --global core.editor vim #git默认的编辑器为nano,不常用,需要修改为vim
git config --global --list|-l #列出用户全局设置,默认保存在~/.gitconfig文件中
git config --global -e #交互编辑配置
git add index.html / . #添加指定文件、目录或当前目录下所有数据到暂存区
git rm --cached file #只删除暂存区的文件,不删除工作区文件,相当于git add 反操作
git rm file #从删除工作目录和暂存区删除文件
git checkout file #从暂存区复制文件到工作目录
git restore file #新版EXPERIMENTAL命令,可以恢复修改的工作区文件
git ls-files #查看暂存区文件,选项-s显示mode bits, object name and stage
number,-o显示untracked文件
git cat-file -p <blogid> #查看仓库对象的内容,仓库对象存放在.git/objects目录下
git diff [file] #对比工作区和暂存区的区别
git diff --cached file #对比暂存区和本地仓库的区别
git diff <commit> -- <path> #对比工作区和指定提交的区别
git diff <commit> <commit> -- <path> #提交和提交之间的区别
git commit -m “comment“ #提交文件到工作区
git commit -am "comment" #添加所有修改(不包括新文件)到暂存区并提交,相当于git add + git commit
git commit --amend --no-edit #重新覆盖上次的提交
git commit --amend -m "comment" #重新提交,覆盖上次的提交
git status #查看工作区的状态
git log -p #查看每次提交的变化
git log --pretty=oneline
git log --oneline -1 #查看最近一条commit日志
git log origin/main #查看远程仓库的日志
git reflog #查看分支或其它引用在本地仓库的完整历史记录
git reset --hard HEAD^^ #git版本回滚, HEAD为当前版本,加一个^为上一个,^^为上上一个版本
git reset --hard HEAD~n #回滚前n个版本
git reset --hard 5ae4b06 #回退到指定id的版本,使用 git reflog 获取每次提交的ID
git reset --hard v1.0
git branch #查看分支及当前所处的分支
git branch -av #查看所有本地和远程分支
git branch <分支名> #创建分支<分支名>
git branch <分支名> <commit_id> #基于指定提交创建新分支
git branch -d <分支名> #删除分支
git branch -m dev develop #修改分支名dev为develop
git branch -M main #修改当前分支名称为main
git checkout <分支名> #切换到已有的分支
git checkout v1.0 #切换至指定标签v1.0
git checkout -b <分支名> #创建并切换到一个新分支
git checkout -b <分支名> origin/<分支名> #利用服务器远程仓库的分支,同步在本地创建分支
git checkout [<commit>]-- <file> ... #找回在工作区删除的已存入暂存区或提交的文件
git merge master -m "mastertodev" #将master分支合并至当前分支,无选项-m, 则为交互式
git tag v1.0 #当前状态创建标签
git tag -a v1.0 b720aaf -m "v1.0" #将指定commit创建标签
git tag -d v1.0 #删除标签
git reset --hard v1.0 #回滚到指定标签
git tag #查看标签
git show v1.0 #查看标签
git remote -v #查看远程仓库
git remote show origin #查看远程仓库详细信息
git remote add origin git@gitlab.example.com:testgroup/testproject.git #建立远程仓库和本地origin关联
git remote rename origin old-origin #修改名称
git remote remove origin #删除关联
git push #将本地仓库提交代码到远程服务器
git push origin master #将当前分支推送到远程的 master 分支
git push origin dev #将当前分支推送到远程的dev分支,如果远程没有dev会自动创建
git push -u origin master #将本地 master 分支推送到远程仓库 master,并且参数-u表示以后即可直接用git push 代替此命令
git push origin main:dev #将本地main分支推送至远程dev分支
git push origin :dev #将空分支推送到远程dev,即删除远程dev分支
git push origin v1.0 #将本地仓库v1.0的tag推送到远程
git push -u origin --all #推送所有分支
git push origin --tags #将本地仓库所有的tag都推送到远程
git push origin --tag v1.0 #只推送指定的tag到远程
git pull #从远程服务器获取代码到本地仓库,并合并到本地仓库
git pull origin dev #从远程服务器分支dev拉取代码到本地仓库
git fetch #从远程仓库获取最新版本,不合并至本地仓库
vim .gitignore #定义忽略文件,即不放在仓库的文件
git log 显示日志格式
git log --graph --pretty=format:'参数'
参数说明
![图片[2]-Git 用法说明-李佳程的个人主页](http://www.lijiach.com/wp-content/uploads/2022/12/image-89.png)
![图片[3]-Git 用法说明-李佳程的个人主页](http://www.lijiach.com/wp-content/uploads/2022/12/image-90.png)
创建项目并初始化配置
[root@git01 testproject]# git init
[root@git01 testproject]# tree .git
.git
├── branches #分支
├── config #git config命令设置的配置信息
├── description #被git web(Github的原型)用来显示对仓库的描述
├── HEAD #当前分支的标识符号,一般指向refs/heads目录下的分支文件
├── hooks #触发器规则的文件,俗称"钩子文件"
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── fsmonitor-watchman.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-merge-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── pre-receive.sample
│ ├── push-to-checkout.sample
│ └── update.sample
├── info #一些特殊文件设置目录,比如忽略文件设置,.gitignore是互补的
│ └── exclude
├── objects #存放git对象,git 核心的文件目录
│ ├── info
│ └── pack
└── refs #各个提交对象的标识(SHA-1)文件
├── heads #分支相关信息的目录
└── tags #标签相关信息的目录
9 directories, 17 files
# 设置git
# 选项--system 表示针对所有用户的配置,保存在/etc/gitconfig文件中
# 选项--global 表示当前用户环境,保存在~/.gitconfig文件中,推荐使用
# 选项--local 表示只针对当前目录(项目)的配置,保存在当前目录的.git/config文件中,此为默认值,可省略
# 优先级:local > global > system
[root@git01 ~]# git config --global user.name lijiacheng
[root@git01 ~]# git config --global user.email 18961236318@189.cn
[root@git01 ~]# git config --global color.ui true
[root@git01 ~]# git config --global core.editor vim
[root@git01 ~]# git config --system user.name lijiach
# 查看system,global和local的配置
[root@git01 ~]# git config -l
user.name=lijiach
user.name=lijiacheng
user.email=18961236318@189.cn
color.ui=true
core.editor=vim
[root@git01 ~]# cat .gitconfig
[user]
name = lijiacheng
email = 18961236318@189.cn
[color]
ui = true
[core]
editor = vim
# 只查看global配置
[root@git01 ~]# git config -l --global
user.name=lijiacheng
user.email=18961236318@189.cn
color.ui=true
core.editor=vim
# 交互编辑配置
[root@git01 ~]# git config --global -e
# 删除配置
[root@git01 ~]# git config --unset --system user.name
[root@git01 ~]# git config -l
user.name=lijiacheng
user.email=18961236318@189.cn
color.ui=true
core.editor=vim
添加暂存区并提交数据
[root@git01 testproject]# touch a.txt
[root@git01 testproject]# git add a.txt
[root@git01 testproject]# git commit -m 'add a.txt'
[master (root-commit) 3aabf12] add a.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a.txt
- 如果工作区和暂存区数据不一致,会显示红色的提示
- 如果暂存区和本地仓库数据不一致,会显示绿色的提示
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END