git 的使用
1创建新仓库
mkdir xxx
//创建文件夹
git init
//会将当前目录初始化为本地仓库(发现会有.git 文件)
2 配置作者信息
git config --global user.email "xxxx"
git config--global user.name "yyyyy"
注意:如果是只需要将作者信息配置在当前仓库,去掉–global 选项
配置信息会记录在:.git/config 中
3 忽略文件提交(.gitignore)
编辑 .gitignore 文件
*.txt //表示忽略.txt 结尾的文件
!hello.txt //表示不忽略hello.txt
dir/hello // 表示忽略文件夹及其文件夹下所有内容
4 版本库添加与与移除文件(add&rm)
注意:rm 如果不加上 –cached 选项,会删除本地文件,加上该选项,则只是将其从暂存区删除
5 修改文件名(mv)
git mv oldName newName
git add newName
git commit -m "rename file"
6 查看日志(log)
git log
git log -p // 文件变动信息
git log -p -1 //最近一次提交
git log --oneline //简短信息
git log --oneline -p
git log --name-only // 文件发生变化
git log --name-status // 文件的状态变化
7 修改最近一次提交描述(amend)
每次提交文件,需要 -m 加上提交描述,但是如果描述有误,如何修改呢?
git commit --amend
即可达到修改提交描述的问题
注意:修改的是最新一次提交的commit 注释
8 命令取别名(alias)
正常来说,添加需要使用 git add xxx
使用
git config --global alias.a add
//这是讲 add 取别名为 a
注意: 如果不加上 --global
则是对当前仓库生效
打开 .git/config
文件会发现多了一条记录:
[alias]
a = add
9 git 分支
-
master 分支是用于生产环境的,是稳定的
-
模块1,模块2分支使用与开发的,当完成开发后,合并到master 分支,然后模块1,模块2分支就没有用处了,需要删除
-
HEAD 是每个分支的头结点,指向创建该分支时在主分支上的时间节点位置
相关命令
-
查看分支
git branch
// 带星号表示当前所在分支 -
创建分支
git branch xxx
// 创建分支xxx -
切换分支
git checkout xxx
// 切换到 分支xxx
- 测试
现在在ask 分支创建一个文件ask.html,然后提交
再切回master ,查看status
会发现:在Ask 分支内能够看到 ask.html 文件
但是在master 分支内是不能看到ask.html文件的
注意: 先切到master 分支,然后再去创建其他分支
- 合并分支
. 先切换master
. git merge 分支1
//会将分支1 合并到master
-
查看已合并的分支
git branch --merged
-
删除分支(一定是删除已经合并过的分支)
git branch -d 分支1
//删除分支1
10 合并分支
现在本地有分支:branch_a,远程有分支branch_b
现在想将branch_b 合入到branch_a中(注意branch_a 不一定是从branch_b 拉取下来的)
操作:
- git fetch origin branch_b:local_temp //拉取branch_b 建立新分支local_temp
- git checkout branch_a //切换到branch_a
- git merge local_temp //合并分支
- 解决冲突
- git branch -d local_temp//删除临时分支
11 解决冲突
产生原因:(假设现在有两个分支 ask,bbs)
-
两个分支都是在master 的同一个位置创建
-
各自改变了同一个文件(ask.html) 分支ask 添加了一条记录,分支bbs 添加了一条记录
-
分支ask先合并到master
-
分支bbs合并到master 时就会失败
解决:
- 此时需要手动编辑冲突文件
<<<<head
xxxx
===== 这部分之间的xxxx就是master 上的代码====
yyyyyy ‘>>>bbs’ 之间的 代码yyyy就是当次你想提交的与 master 发生冲突的代码
- git add ask.html //修改后的
- git commit -m ‘handle conflict success’
11 暂存区(stash)
当前有两个分支;ask,bbs
1.你在ask 中新增了一个文件a,add ,commit
-
修改文件a,但是没有add,也没有commit
-
此时切换到分支bbs ,会报错
error: Your local changes to the following files would be overwritten by checkout:
ASK.TXT
Please commit your changes or stash them before you switch branches.
Aborting
如何解决?
使用stash 将未保存的数据保存到暂存区 stash,然后就可以切换分支了
当你切回 ask分支,发现找不到文件a
查看stash 暂存区列表
git stash list
$ git stash list
stash@{0}: WIP on ask: 527f285 add ASK.TXT
恢复暂存区中数据到当前分支
git stash apply
当暂存区不需要时,如何删除暂存区?
git stash -drop stash@{0}
注意:stash 不是暂存单个文件,而是存储一个状态,可能包含多个文件
12 打TAG
当代码到了某个比较稳定的阶段,可以打上一个标签TAG,表明此阶段代码是稳定的。
git tag v1.0
查看标签
git tag
13 生成 zip 代码压缩包
git archive master --prefix='topForethought' --format=zip > demo.zip
上述命令会将master 分支打包成名为demo.zip 的zip 包到当前目录下
prefix 会给所有文件名前面加上前缀,比如打包前是 “hello”
打包后是 “topForethoughthello”
14 未完待续
3 生成 zip 代码压缩包
git archive master --prefix='topForethought' --format=zip > demo.zip
上述命令会将master 分支打包成名为demo.zip 的zip 包到当前目录下
prefix 会给所有文件名前面加上前缀,比如打包前是 “hello”
打包后是 “topForethoughthello”
14 未完待续
既然原创审核未通过,我就转载了,我转我自己