初始化、推送、拉取
初始化一个库
git init
增加到远程库
git remote add origin [地址git@xxx.xxx.xx/xxx/xxx.git]
拉取远端的库
git pull
拉取指定代码
git clone [git地址]
拉取指定tag的代码
git clone --branch [tags标签] [git地址]
添加子模块
git submodule add -b 分支 [地址git@xxx.xxx.xx/xxx/xxx.git]
拉取的时候,同时拉取子模块
git clone --recursive [地址git@xxx.xxx.xx/xxx/xxx.git]
把当前开发库作为裸仓库,给其他开发环境更新、推送使用。
git config --bool core.bare true
添加、撤销、提交、推动基本操作
变更文件添加到缓存区
git add xxx.c
从缓存区撤销
git reset xxx.c
提交到本地库
git commit -m "description xxxxx"
推送到远端库
git push
示例:关联远端仓库
git关联远程仓库
1、在远端建立仓库,再gitlab服务管理台上操作
2、在本地目录下创建仓库并初始化
在xxx目录下 执行 git init
3、关联远端仓库
git remote add origin [地址git@xxx.xxx.xx/xxx/xxx.git]
4、本地编辑代码后提交至远程分支
git push -u origin master
合并分支
1、将其他分支YYYY合并到当前工作分支下
git merge YYYY
2、删除本地分支YYYY
git branch -d YYYY
3、删除远端分支YYYY
git push origin --delete YYYY
4、获取远端YYYY分支
git pull origin YYYY
[切换到YYYY分支]
git checkout YYYY
分支对比和日志对比
1. 显示出branch1和branch2中差异的部分
git diff branch1 branch2 --stat
2. 显示指定文件的详细差异
git diff branch1 branch2 具体文件路径
3. 显示出所有有差异的文件的详细差异
git diff branch1 branch2
4. 查看branch1分支有,而branch2中没有的log
git log branch1 ^branch2
5. 查看branch2中比branch1中多提交了哪些内容
git log branch1..branch2
注意,列出来的是两个点后边多提交的内容。
6. 不知道谁提交的多谁提交的少,单纯想知道有什么不一样
git log branch1...branch2
7. 在上述情况下,在显示出没个提交是在哪个分支上
git log --lefg-right branch1...branch2
8. 分支重命名
git branch -m feature-branch feature-update
设置忽略的文件
.gitignore
空格不匹配任意文件,可作为分隔符,可用反斜杠转义
开头的文件标识注释,可以使用反斜杠进行转义
! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义
/ 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
/ 开始的模式匹配项目跟目录
如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
** 匹配多级目录,可在开始,中间,结束
? 通用匹配单个字符
* 通用匹配零个或多个字符
[] 通用匹配单个字符列表
.gitignore只能忽略原来没有track的文件,如果已经纳入了版本管理中,则修改.gitignore文件是无效的。需要做以下处理,删除本地缓存改成未track状态,然后提交
git rm -r --cached .
git add .gitignore
git commit -m 'update .gitignore'
也可以删除单个文件的跟踪
git rm --cached xxx.yy
发表回复