Git_learn


git命令

一、创建远程git仓库

1、服务器设置

  • 安装git:
yum install git
  • 创建专用用户:
sudo adduser git
sudo passwd git
  • 初始化裸仓库:
# 切换到 git 用户
sudo -u git -s
cd ~

# 创建裸仓库目录(一般以.git结尾)
mkdir -p repos/my-project.git
cd repos/my-project.git

# 初始化裸仓库
git init --bare
  • 设置权限
# 确保 git 用户拥有所有权
sudo chown -R git:git /home/git/repos

2、 SSH 密钥认证

  • 生成本地 SSH 密钥
# 非服务器执行
ssh-keygen -t rsa
  • 将公钥上传到服务器
# 在服务器上创建授权文件
su git
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys

# 将本地 ~/.ssh/id_rsa.pub 内容添加到 authorized_keys
  • 设置权限
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys

3、本地连接远程仓库

  • 克隆空仓库到本地
git clone git@server-ip:~/repos/my-project.git
cd my-project
  • 添加文件并推送
echo "HELLO WORD" > test.txt
git add .
git commit -m "it's my test"
git push origin master
  • 注意:

    • 如果远程仓库无法推送,建议使用 git status检查是否干净,如果不干净,用以下方式解决
    # 在服务器上执行
    cd /path/to/repo
    git config --bool core.bare true
    # 裸仓库无工作目录,专用于代码协作
    

二、git开发命令

1、仓库管理

# 初始化仓库
git init [项目名]        # 新建本地仓库
git clone         # 克隆远程仓库
git clone -b <分支名> --single-branch <仓库URL>    # 指定clone的分支

# 配置信息
git config --global user.name "name"    # 设置全局用户名
git config --global user.email "email"    # 设置全局邮箱

2、文件操作

# 提交工作区变更
git add 文件名        # 添加指定文件到暂存区
git add .          # 添加所有修改文件
git commit -m "describe"    # 提交本地仓库

# 撤销操作
git reset 文件名    # 取消暂存文件
git checkout 文件名    # 撤销工作区更改
git reset --hard    # 重置到最后提交状态

3、 分支管理

# 分支操作
git branch        # 查看本地分支
git branch 分支名    # 创建新分支
git checkout 分支名    # 切换分支

## 删除前必须切换分支,不能删除当前分支
git branch -d     # 删除已合并分支
git branch -D     # 强制删除未合并分支
git branch -d branch1 branch2    # 同时删除多个本地分支

git push  --delete     # 标准删除命令

# 合并代码
git merge 分支名        # 合并指定分支到当前分支
git rebase 分支名        # 变基合并
git cherry-pick 提交hash    # 选择性合并提交

# 回滚到目标hash
git reset --hard 
git reset --soft  # 修改保留在暂存区(仅重置提交记录)
git revert <提交哈希>  # 撤销单个提交
git revert OLD_HASH..NEW_HASH  # 撤销连续多个提交

4、 远程协作

# 远程仓库操作
git remote add origin 地址    # 关联远程仓库
git push -u origin 分支名       # 首次推送分支
git pull                     # 拉去远程更新


# 列出所有远程仓库
git remote -v
git remote show origin # 替换 origin 为实际远程仓库名
# 通过 .git/config 文件能够查看URL配置

# 仅获取远程仓库URL
git config --get remote.origin.url

#验证是否已关联远程仓库
git remote    # 无输出表示未关联任何远程仓库

5、 其他功能

# 日志查询
git log            # 查看提交历史
git diff        # 查看未暂存变更
git status        # 显示当前状态

### 删除已存在的索引记录 ###
git rm -r --cached 目录
# 添加子模块
git submodule add <仓库URL> <路径>
# 实例: 添加 docs 子模块到 docs 目录
git submodule add https://github.com/your/docs-repo.git docs
# 初始化子模块
git submodule update --init
# 提交变更
git add .gitmodules
# 查看子模块状态
git submodule status    # 显示子模块哈希和路径


### clone 包含子模块的项目 ###
# 克隆主项目(子模块目录为空)
git clone https://github.com/your/main-project.git
# 初始化并更新子模块(两步法)
git submodule init
git submodule update
# 一步克隆所有内容
git clone --recurse-submodules https://github.com/your/main-project.git


### 更新子模块 ###
# 进入子模块目录执行更新
cd submodule-dir
git pull origin main
# 返回主项目提交更新
cd ..
git add submodule-dir
git commit -m "更新子模块至最新版本"
# 更新所有子模块到远程最新提交
git submodule update --remote

### tar ###
tar -cvf 目标文件名.tar 源文件或目录
tar -xvf 文件名.tar -C /path/

文章作者: cfrost
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 cfrost !
  目录