【Git】初始配置以及常用操作命令
目录
前言
- git安装好后,需要配置个人用户信息,其次配置ssh公钥,便于使用ssh连接克隆项目
一、git初始化配置
1、 初始化提交时的用户信息
- 设置你的用户名称与邮件地址 ,git每一次操作都会使用这些信息作为标识,并且它会写入到你的每一次提交中,不可更改
- 全局信息设置(所有的项目都会使用这个信息进行代码提交)
- git config --global user.name "自己的github或gitte的用户名"
- git config --global user.email "自己的github或gitte的绑定的主要邮箱"
- 单个项目设置(会在项目里的.git/config文件中追加user配置,此时这个项目在提交代码时,不会使用全局的user信息)
- git config user.name ""
- git config user.email ""
- 可以使用命令查看全局配置信息
- git config --global -e 打开全局配置文件
- git config --list 展示全局的配置,按上下键滚动查看
- git config user.name 查看当前项目配置的name或email
2、 生成公钥并获取到github/gitte的授权 (Gitee帮助中心-生成/添加SSH公钥)
-
生成ssh key
- ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
- 注意:这里的
xxxxx@xxxxx.com
只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱 - 现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
-
按照提示完成三次回车,即可生成 ssh key。通过查看
~/.ssh/id_rsa.pub
文件内容,获取到你的 public key- cat ~/.ssh/id_rsa.pub(也可以直接使用
clip
命令将文件内容复制到剪贴板中:clip < ~/.ssh/id_rsa.pub)
- cat ~/.ssh/id_rsa.pub(也可以直接使用
-
复制生成后的 ssh key,通过仓库主页 「Settings」->「SSH and GPG keys」->「SSH keys」->「New SSH key」 ,添加生成的 public key 添加到仓库中。
-
首次使用需要确认并添加主机到本机SSH可信列表。键入下方命令,提示
Are you sure you want to continue connecting (yes/no/[fingerprint])?
,键入yes完成认证- ssh -T git@github.com (如果是绑定gitee,则输入:ssh -T git@gitee.com)
- 若返回
Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.
,则证明添加成功
3、克隆远程仓库
- 去远程仓库复制仓库ssh/https等任意链接
git clone 仓库地址
- 如果想拉取指定分支,则使用 -b 命令
git clone -b 分支名称 仓库地址
git clone -b 分支名称 --single-branch 仓库地址
- 使用--single-branch ,将只获取与下载的分支有关的更新。如果您在不关心的其他分支上有很多文件,这会更快,但是只会显示这一个分支,其他远程分支并不会展示。
- 此时会在当前目录下创建新的目录并将远程仓库拉取到文件中,称之为本地仓库
二、 日常开发时git操作流程
1. 合并分支操作
- 首先切换到主分支,更新到最新
- git checkout master
- git pull
- 切换到分支,解决冲突
- git checkout local
- git rebase -i HEAD~2 //合并提交 --- 2表示合并两个
- git rebase master---->解决冲突--->git rebase --continue
- 分支合并,推送
- git checkout master
- git merge local
- git push
2. 修改远程分支名称
- 修改本地分支名称
- git branch -m <old branch> <new branch>
- 删除远程分支
- git push --delete <origin> <olr branch>
- 推送本地仓库的新分支到远程仓库
- git push <origin> <new branch>
- 将本地新分支与远程新分支建立联系
- git branch --set-upstream-to <origin>/<new branch>
三、 git常用命令汇总
1. 基本命令
- 初始化当前目录作为git仓库,并当前路径创建
.git
目录- git init
- 添加文件到版本控制
- git add .
- git add README.md
- 提交代码到本地仓库
- git commit -m "初始化项目提交"
- 注意:在 Linux 系统中,commit 信息使用单引号,Windows 系统,commit 信息使用双引号
- 克隆仓库到本地或指定目录下
- git clone
- git clone
- git clone
2. 分支操作 branch
-
新建分支dev
- git branch feature-test
-
查看分支
-
git branch -r 查看本地所有分支
-
git branch -a 查看本地和远程的所有分支
-
-
删除分支
- 删除本地分支dev
- git branch -d dev
- git branch -D dev 强制删除分支
- 方式1:删除远程分支origin:dev
- git branch -d -r dev 先删除本地dev
- git push origin:dev 然后推送远程dev分支删除
- 方式2:删除远程分支origin:dev
- git push --delete origin dev
- 删除本地分支dev
-
重命名本地分支
- git branch -m old new
-
查看各个分支的最后一次提交
- git branch -v
-
查看那些分支合并入当前分支
- git branch –merged
-
查看哪些分支未合并入当前分支
- git branch –no-merged
3. 分支切换:checkout
- 切换分支dev
- git checkout dev
- 创建并切换分支dev
- git checkout -b dev
- 拉取远程dev分支并分化一个新分支feature-dev
- git checkout -b feature-dev origin/dev
4. 远程管理:remote
- 查看本地仓库绑定的的远程仓库地址
- git remote -v
- 为本地仓库添加远程仓库地址
- git remote add origin <remote-url>
- 重命名远程名称
- git remote rename <origin> <old branch>
- 修改远程推送的地址
- git remote set-url <origin> <remote-url>
- 删除远程名称和地址
- git remote rm <origin>
5. pull、fetch
- 拉取远程仓库到本地仓库
- git fetch origin 【合并前先询问】
- git pull origin 【直接合并到本地】
6. push
- 推送本地仓库到远程仓库
- git push <origin>
- 推送当前分支到远程仓库的分支
- git push <origin> <branch>
7. stash
- 暂存(可以指定暂存的描述名称文本)
- git stash save ""
- 查看所有暂存的记录
- git stash list
- 查看暂存和当前分支的差异
- git stash show stash@
- 加上
-p
可以看详细差异
- 指定使用最新缓存创建分支
- git stash branch <branch-name>
- 恢复暂存的工作
- pop命令恢复,恢复后,暂存区域会删除当前的记录
- git stash pop stash@
- apply命令恢复,恢复后,暂存区域会保留当前的记录
- git stash apply stash@
- pop命令恢复,恢复后,暂存区域会删除当前的记录
- 删除暂存
- 删除某个暂存,暂存记录保存在list内,需要通过list索引index取出恢复
- git stash drop stash@
- 删除全部暂存
- git stash clear
- 删除某个暂存,暂存记录保存在list内,需要通过list索引index取出恢复
8. 其他命令
- git clone --depth=1 克隆的深度为1,只克隆最新的一条commit记录的文件数据,避免克隆时下载到以往commit记录里的超大内容提交
- git status 工作区的状态
- git diff [--cached] 查看提交后的代码和add的区别
- git log [--online] [--graph] 显示提交过的版本信息
- git reflog 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
- git reset HEAD^ 撤销暂存区所有的添加内容(idea选择mixed)