1 git的基本应用
2 操作
2.1 签名
git config --global user.name "lala"
git config --global user.email "邮箱"
2.2 创建版本库
git init
2.3 查看当前库的状态
git status
2.4 添加数据到暂存区
git add data/ hql/ scripts/
2.5 提交
git commit -m '具体的提交的备注信息'
2.6 查看版本变更日志
git log #进行查看历史记录
git log --pretty=oneline #简易信息查看
2.7 回退历史版本
## 1. 第一种方式:通过指针的前移和后移
git reset --hard HEAD^1 # HEAD表示指针指向的最新版本,^1上一个版本
--hard:硬,这种回顾不但将版本回溯,还会将指定的数据抹除。不会保留任何你改动的记录(推荐)
--soft:软,回退版本,也会保存改动的记录,不过会自动帮你git add。用git status查看是绿色。
--mix:折中,回退版本,并保留了所有改动记录,此时git status会有所有改动的记录为红色
## 2. 第一种方式:通过指针回到n个版本前
git reset --hard HEAD~2 #回退到2个版本之前的版本
## 3. 版本的历史追随
git reflog # 查看历史记录的版本号
2997abd HEAD@{0}: reset: moving to HEAD^1
56c21d5 HEAD@{1}: commit: dw_sales_order_v1.1
2997abd HEAD@{2}: commit (initial): dw_sales_order_app_v1.0
git reset --hard 56c21d5
2.8 文件还原
git checkout -- 文件名
$ git checkout scripts/xiaozhan.sh
tip:
会将没有添加到暂存区的文件内容进行还原
2.9 删除文件
1. 先删除文件
2. 再add
3. 再提交
3 工作区、暂存区、本地库
- 工作区(Working Directory):电脑本地硬盘目录
- 本地库(Repository):工作区有个隐藏目录.git,它就是Git的本地版本库
- 暂存区(stage):一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
4 分支
4.1 查看分支
git branch -v
4.2 创建分支
git branch common
4.3 切换分支
git checkout common
4.4 合并分支
tip: 一般都是由主分支去合并其他分支
git merge common
4.5 冲突
##1. 设置冲突场景
1. 先修改master分支的文件:1.sh
2. 再修改common分支的文件:1.sh
3. 分别提交
4. master最后合并
##2. git diff 查找冲突的文件
diff --cc scripts/xiaozhan.sh
index 0a67ba9,0d9f18e..0000000
--- a/scripts/xiaozhan.sh
+++ b/scripts/xiaozhan.sh
@@@ -1,4 -1,2 +1,8 @@@
+11111111111111111
222222222222222222222222
++<<<<<<< HEAD
+333333333333
+
++=======
+ ddddddddddddddddddddd
++>>>>>>> common
##3. 解决冲突
修改这个文件
11111111111111111
222222222222222222222222
333333333333
ddddddddddddddddddddd
## 4. 重新add和commit再重新合并即可
二 GitHub
1 连接到github
## 1. 先在本地创建本地的库
## 2. 在github上注册账号
## 3. 在github创建一个仓库
## 4. 将本地的代码推送到github上去了
## 4.1 建立远程连接
git remote add <远端代号> <远端地址>
<远端代号> 是指远程链接的代号,一般直接用origin作代号,也可以自定义。
<远端地址> 默认远程链接的url
e.g.
git remote add origin https://github.com/lala/dw.git
## 4.2 推送
git push <远端代号> <本地分支名称>
<远端代号> 是指远程链接的代号
<分支名称> 是指要提交的分支名字,比如master
e.g.
git push origin master
2 同步到本地
##1. 将github的库克隆到本地
git clone <远端地址> <新项目目录名>
<远端地址> 是指远程链接的地址。
<项目目录名> 是指为克隆的项目在本地新建的目录名称,可以不填,默认是GitHub的项目名。
命令执行完后,会自动为这个远端地址建一个名为origin的代号
e.g.
git clone https://github.com/lala/dw.git dw2
##2. 修改数据,然后重新将修改的数据和github上的数据进行同步
git push https://github.com/lala/dw.git
tip:
remote: Permission to lala/dw.git denied to lala86.
fatal: unable to access 'https://github.com/lala/dw.git/': The requested URL returned error: 403
出现以上异常说明已经连接到了github,但是这个项目当前用户没有权限修改
##3. 具体是因为lala86没有开发dw项目权限,我们需要lala用户向lala86发送邀请,然后lala86用户接受邀请才可以协同开发。具体操作请参阅资料
3 写作冲突
如果a用户和b用户同时修改了github中同一个文件,a首先提交了更新到github,那么b在提交的时候就必须要先同步,然后b在同步的时候就会报告产生了冲突,git diff来查询冲突的问题,排除方式和分支冲突一样。具体参考资料