git 命令 语法
本地库
- 安装Git后,在资源管理器的空白处,单击鼠标右键打开窗口,点击
Git Bash Here
,打开Git命令
行窗口, 在窗口中可直接使用Linux命令操作
初始化Git本地库
git init
设置签名信息
- 项目级别/仓库级别:仅在当前目录的本地Git仓库范围内有效
git config user.name wangbr_pro
git config user.email wangbr888@163.com
# 签名信息保存位置: ./.git/config 文件中
- 系统用户级别:登录当前操作系统的用户范围
git config --global user.name wangbr_glo
git config --global user.email wangbr666@163.com
# 签名信息保存位置: ~/.gitconfig
查看状态
$ git status
On branch master # 默认在master(主干)分支上
No commits yet # 当前没有任何的提交
nothing to commit (create/copy files and use "git add" to track)
# 没有什么需要提交的(创建/复制文件,使用“git add”命令可追踪,也就是用git去管理文件)
暂存区
- 将工作区的“新建/修改”添加到暂存区
git add <file name>
- 恢复,不放到暂存区
git rm --cached <file name>
本地库
- 将暂存区的内容提交到本地库
git commit [-m "提交说明信息"] <file name>
查看版本历史记录
git log
# commit [根据最新文件生成的hashcord]
# Author : 作者
# Date : 时间
- 以漂亮的格式显示:即每条日志只显示一行
git log --pretty=oneline
- 简约的格式显示:
git log --oneline
- 显示回滚版本步数[推荐 ]
git reflog
前进后退版本
- 基于索引值操作[推荐方式]
git reset --hard <局部索引值>
# 通过HEAD指针来移动回滚版本
# git reflog 查看 局部索引值
git reset --hard 64d3d2a
- 使用 ^ (异或)符号:只能后退
git reset --hard HEAD^
# 注:一个 ^ 表示后退一步,n 个表示后退 n 步
- 使用 ~ 符号:只能后退
git reset --hard HEAD~n
# 注:n指定步数,表示后退 n 步
删除文件并恢复
-
前提:删除文件前,此文件需要已经提交过本地库,才可恢复
-
删除:rm 文件名.txt
git reset --hard <历史记录索引值>
# 删除操作已经提交到本地库:指针位置指向历史记录
# 删除操作尚未提交到本地库:无法恢复
对比文件差异
- 将工作区中的文件和暂存区进行比较
git diff <文件名>
- 将工作区中的文件和本地库历史记录比较
git diff <本地库中历史版本> <文件名>
# 不带文件名比较多个文件
Git分支
- 查看分支:
git branch -v
- 创建分支:
git branch <新分支名>
- 删除分支(删除的分支不是当前正在打开的分支):
git branch -d <分支名>
- 切换分支:
git chckout <分支名>
- 合并分支:
# 第1步:切换到接受修改的分支上
git checkout <需要接受的分支名>
# 第2步:执行 merge 命令
git merge <有新内容的分支名>
- 解决冲突:
# 第1步:编辑文件,删除特殊符号
# 第2步:把文件修改到满意为止,保存退出
# 第3步:
git add 文件名
# 第4步:
git commit -m "日志信息"
# 注意:此时 commit 后面一定不要有文件名
创建本地仓库 演示
mkdir wangbr
cd wangbr
git init # 初始化仓库
vim demo1.txt #新增文件, 按 i 开始编辑,ctrl+c退出编辑,:wq保存并退出,:q!不保存退出
git add demo1.txt # 添加到暂存区
git commit -m "fisrt commit" demo1.txt # 提交到本地仓库
远程库
创建远程库地址别名
- 查看当前所在本地仓库下的所有远程地址别名
git remote -v
- 创建远程库地址别名
git remote add 别名 远程地址
# 例
git remote add origin https://gitee.com/stu/wangbr.git
# 地址复制网站上的
push 推送本地库到远程库
git push [远程库别名] [分支名]
windows云平台密码
- 按 Ctrl + R 打开运行窗口,输入 control
- 查看方式大图标
- 找到 凭据管理器
- 找
gitee.com
克隆远程库
git clone 远程地址
# 例
git clone https://gitee.com/wbr6666/wangbr.git
pull 拉取操作
-
pull 拉取操作其实是两步:
pull = fetch + merge
fetch 操作
- 只把远程库中的内容下载到本地,但是没有改本地工作区的文件。
git fetch <远程库地址别名> <远程分支名>
- 演示
git fetch 远程库地址别名 远程分支名
git fetch origin master
cat demo1.txt # 查看并没有更改本地工作区的文件
git checkout origin/master # 切换远程分支对比下内容
cat demo1.txt # 远程分支 内容是不一样的
git checkout master #切换回本地master分支
merge 操作
- 把远程代码合并到本地代码中
git merge 远程库地址别名/远程分支名
- 演示
git merge origin/master
pull 操作
- 针对没有冲突的情况 ,不分为上面两个步骤,可以直接使用 pull 提取操作,
git pull 远程库地址别名 远程分支名
- 演示
$ pwd
/d/gitStudy/wangbr_jl/wangbr
$ vim demo1.txt
$ git commit -m "jl cmmmit" demo1.txt
$ git push origin master
$ cd ../../wangbr
Administrator@PC201802211917 MINGW64 /d/gitStudy/wangbr (master)
$ git pull origin master # 直接拉取,不分两步 fetch,merge
$ cat demo1.txt
hello, 我是总监
hi, 我是经理,我加入项目组来啦...。
haha,我是经理,我又来了。。。。
解决冲突
- 上面有冲突时,需要先 git pull 拉取远程代码,然后 vim 查看修改文件,再手动解决冲突, 保留需 要的
git pull origin master
vim demo1.txt
- 添加到本地库和远程库
git add demo1.txt
git commit -m "jl resolve conflict"
git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
git push origin master
fork 跨团队协作
-
开发人员 入场,访问
https://gitee.com/mxg6666/wangbr
, 点击右上角的 Fork -
fork 之后,发现域名变了,和项目名下面多了一行描述
-
开发人员 克隆项目,然后修改内容提交
$ cd ../..
$ mkdir wangbr_kf
$ cd wangbr_kf/
$ git clone https://gitee.com/mxg999/wangbr.git
Cloning into 'wangbr'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 24 (delta 7), reused 24 (delta 7)
Unpacking objects: 100% (24/24), done.
$ cd wangbr/
$ vim demo1.txt
$ git add demo1.txt
$ git commit -m 'kf commit' demo1.txt
$ git push origin master
-
在 码云 上点击
Pull Request
标签,+新建 Pull Request
-
切换 总监 , 点击
Pull Request
标签, 点击下方 开启的 -
预览审核代码
SSH登录
windows系统自带保存密码功能,如果 mac 没有自带保存密码功能怎么办?
https 没有记住就帐号,每次登录时都要输入帐号密码,就很浪费时间。
ssh 可以避免每次添加用户名密码。
- 生成密钥
#进入当前用户的家目录 ~
$ cd ~
#如果有.ssh 目录,则删除.ssh 目录
$ rm -rvf .ssh
#运行命令生成.ssh 密钥目录
$ ssh-keygen -t rsa -C wangbr666@163.com
#[注意:这里-C 这个参数是大写的 C , 出现光标停留的地方直接按 Enter 键]
#进入.ssh 目录查看文件列表
$ cd .ssh
#查看所有目录 与 文件
$ ls -lf
#./ ../ id_rsa id_rsa.pub
#查看 id_rsa.pub 文件内容, 复制 id_rsa.pub 文件内容(公钥)
$ cat id_rsa.pub
-
登录 码云,
点击用户头像→设置
-
点击 SSH公钥,输入复制的密钥信息
-
权限验证
-
回到
Git Bash
创建 远程ssh地址别名
cd /d/gitStudy/wangbr
vim demo1.txt
git commit -m "test ssh update" demo1.txt
git remote add origin_ssh git@gitee.com:mxg6666/wangbr.git
git remote -v
origin https://gitee.com/mxg6666/wangbr.git (fetch)
origin https://gitee.com/mxg6666/wangbr.git (push)
origin_ssh git@gitee.com:mxg6666/wangbr.git (fetch)
origin_ssh git@gitee.com:mxg6666/wangbr.git (push)