knowledge/git/常用git命令.md

99 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 常用git命令
> git官方中文文档 <https://www.git-scm.com/book/zh/v2> 中包含更多的信息
---
## 从远程克隆一个仓库
```bash
# 通过SSH连接克隆一个仓库可能需要事先配置SSH公钥
# 执行成功后会在当前路径创建一个名为fsdoc的目录进入目录后即可以用git命令操作仓库了
git clone git@gitee.com:wandoubaba517/fsdoc.git
# 通过HTTP连接克隆一个仓库有时可能会需要用户名和密码
# 执行成功后会在当前路径创建一个名为callapp_mrcp的目录
git clone https://gitee.com/polaris-arvin_admin/callapp_mrcp.git
```
> 除了`git clone`命令外其他git命令都需要在仓库目录下进行操作
## 分支操作
> 别忘了在仓库目录下操作
```bash
# 查看所有分支(本地和远程)
git branch -a
# 切换分支
git checkout develop
# 创建一个名为iss053的分支同时切换到这个新分支
git checkout -b iss053
# 在iss053分支提交修改
git commit -a -m "添加一些git分支操作"
# 将iss053分支的变更合并到master分支
git checkout master
git merge iss053
# 合并后可以删iss053分支
git branch -d iss053
# 如果合并时发现冲突,需要手动处理一下
# 刷新远端分支列表
git remote update origin -p
# 在没有使用git add之前放弃当前全部操作
git checkout .
# 在使用了git add后但还没有git commit之前放弃当前全部操作
git reset HEAD .
git checkout .
# 在使用了git commit后回滚操作
git reset --hard HEAD^ # 回滚到上一次commit状态
git reset --hard <commitid> # 回滚到指定的任意一次提交
# 查看commitid
git log # 退出请按q键
```
## 代码推拉
> 别忘了在仓库目录下操作
```bash
# 从远程分支拉取代码到本地
git pull # 会提取默认关联的远程分支
# 添加本次要跟踪的代码(全部)
git add .
# 提交变更(在本地)
git commit -m "本次提交说明内容"
# 把变更推送到远程服务器
git push # 推送到默认关联的远程分支
git push origin # 有些时候当关联有问题时可能需要手写origin
git push origin bob # 可以指定目标远程分支
```
## 给本地的一个文件夹添加git管理并关联远程仓库
```bash
# 在这个文件夹内执行
git init
# 给本地的一个git文件夹关联一个远程服务器
git remote add origin git@gitee.com:wandoubaba517/ps.git
# 对目录内所有文件建立跟踪
git add .
# 提交本次跟踪
git commit -m "这次提交的说明"
# 推送当前分支并建立与远程上游的跟踪
git push --set-upstream origin master
# 把本地当前分支与远端指定分支关联关联后在本地这个分支下直接git pull和git push就行了不需要再加origin
git branch --set-upstream-to=origin/<branch>
```
## 在一个本地目录上添加多个远程仓库
```bash
# 关联另一个远程仓库
git remote set-url --add origin git@gitee.com:wandoubaba517/personal.git
# 推送当前分支并建立与远程上游的跟踪
git push --set-upstream origin master
# 以后再推送时直接push就行了
git push
```