为常用的命令配置别名:
-
打开用户目录,创建 .bashrc 文件
部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc -
在.bashrc 输入以下内容
#用于输出git提交日志 alias git-log='git log --pretty=oneline --all --graph --abbrev-commit' #用于输出当前目录所有文件及基本信息 alias ll='ls -al'
-
打开gitBash,执行 source ~/.bashrc
基础操作命令:
初始化一个仓库
git init
把文件从工作去放到暂存区
git add
查看修改的状态
作用:查看的修改的状态(暂存区、工作区)
git status
添加工作区到暂存区
作用:添加工作区一个或多个文件的修改到暂存区
命令形式:git add 单个文件名|通配符
将所有修改加入暂存区:git add .
提交暂存区到本地仓库
作用:提交暂存区内容到本地仓库的当前分支
git commit -m "注释内容"
查看提交日志
git log [option]
option:
- all 显示所有分支
- pretty=oneline 将提交信息显示为一行
- abbrev-commit 使得输出的commitId更简短
- graph 以图的形式显示
版本回退
作用:版本切换
git reset --hard commitID
分支操作命令:
查看本地分支
命令:git branch
创建本地分支
命令:git branch 分支名
切换分支
命令:git checkout 分支名
我们还可以直接切换到一个不存在的分支(创建并切换)
命令:git checkout -b 分支名
合并分支
一个分支上的提交可以合并到另一个分支
命令:git merge 分支名称
解决冲突
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解
决冲突,解决冲突步骤如下:
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解
决冲突,解决冲突步骤如下:
-
处理文件中冲突的地方
-
将解决完冲突的文件加入暂存区(add)
-
提交到仓库(commit)
删除分支
不能删除当前分支,只能删除其他分支
git branch -d b1 删除分支时,需要做各种检查
git branch -D b1 不做任何检查,强制删除
开发中分支的使用原则
远程仓库的使用
配置SSH公钥
生成SSH公钥
ssh-keygen -t rsa
不断回车
如果公钥已经存在,则自动覆盖
Gitee设置账户共公钥
获取公钥
cat ~/.ssh/id_rsa.pub
验证是否配置成功
ssh -T git@gitee.com
出现这个界面代表公钥配置成功
配置好公钥如果还有要求你输入密码,那可能pull项目的时候链接使用了https协议的链接,改成ssh链接的即可
添加远程仓库
命令: git remote add <远端名称> <仓库路径>
远端名称,默认是origin,取决于远端服务器设置
仓库路径,从远端服务器获取此URL
此操作是先初始化本地库,然后与已创建的远程库进行对接
例如:
git remote add origin git@gitee.com:czbk_zhang_meng/git_test.git
查看远程仓库
git remote
推送到远程仓库
命令:git push [-f] [–set-upstream] [远端名称 [本地分支名][:远端分支名] ]
如果远程分支名和本地分支名称相同,则可以只写本地分支
git push origin master
-f 表示强制覆盖
–set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
git push --set-upstream origin master
如果当前分支已经和远端分支关联,则可以省略分支名和远端名。
查看关联关系
git push 将master分支推送到已关联的远端分支。
本地分支与远程分支的关联关系
查看关联关系我们可以使用 git branch -vv 命令
从远程仓库克隆
如果已经有一个远端仓库,我们可以直接clone到本地。
命令: git clone <仓库路径> [本地目录]
本地目录可以省略,会自动生成一个目录
从远程仓库中抓取和拉取
远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本
地,再进行操作。
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并 如果不指定远端名称和分支名,则抓取所有分支 :
git fetch [remote name] [branch name]
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支。
git pull [remote name] [branch name]
解决合并冲突
和解决本地冲突是一样的