2023年7月7日发(作者:)
GIT使用技巧
1、版本管理历史
集中式版本控制、分布式版本控制
CVS -> SVN -> GIT
GIT由来,出于人道主义精神,免费使用BitMover公司的BitKeeper,
Samba的Andrew反向工程(试图破解BitKerper协议),收回免费使用权限,
不得不自己开发,2周之后git诞生,2008年github网站上线
2、安装配置
git config -l 显示所有配置信息
git config --global -l 显示所有全局配置信息
git config --global '用户名'
git config --global '邮箱'
git config --global t simple/matching
simple:只推送当前分支
matching:推送所有同名分支
3、基本操作
git init 初始化版本库
git add 添加文件
git add . 添加所有文件
git commit -m '信息' 提交修改
git commit -a -m '信息' 提交所有修改,相当于默认执行了(git add .)
git commit -a --amend 修改上次提交(本地使用,已经推送到仓库的提交不要使用)
git status [-s] 查看当前[简短]状态
git log [--oneline] 查看提交日志[单行显示]
git log [--graph] 查看提交日志[显示提交树]
git rm filename 删除工作区文件,并将这次删除放入暂存区
git rm --cached file 停止追踪文件,但文件会保留在工作区
git mv old new 改文件名,并将这次修改放入暂存区
4、文件忽略
.gitignore文件
语法规则:
空行或#开头的行(注释行)将会被忽略
指定文件
abc/ 忽略abc文件夹
/abc 忽略当前目录下的abc,不包括其他目录下的abc
*.apk 忽略后缀为apk的文件
! 除了文件
*.[oa] 或略所有.o和.a后缀的文件
abc/*.log 忽略abc目录下的所有log文件,不会递归查找
abc/**/*.log 忽略abc目录下的所有log文件,会递归查找 忽略已经添加到仓库的文件或目录,[--cached]会保留本地文件
忽略文件:git rm --cached file_name
忽略目录:git rm -r --cached dir_name
然后提交推送即可
5、分支管理
git branch 显示本地所有分支
git branch -r 显示远程所有分支
git branch -a 显示本地和远程所有分支
git branch test [master] [基于master分支]创建test分支
git branch -d test 删除本地test分支
git push origin --delete test
git branch -dr test 结合上步操作,删除远程test分支
git merge test 将test分支合并到当前分支
git checkout test 切换到指定test分支
git checkout -b test 创建test分支并切换
git checkout 将文件的修改撤销
git checkout . 将恢复上次commit到工作区
git checkout HEAD [index] [将index文件]从版本库中替换暂存区及工作区
git reset HEAD 将文件的add操作撤销
6、开发流程
master 主分支,主要用来版本发布
develop 日常开发分支,该分支正常保存了开发的最新代码
release master分支的未测试板,比如某期功能开发完成,那么就将develop分支合并到release分支,测试没有问题,并且到了发布日期就合并到master分支,进行发布
local 本地功能分支,一般fork自develop分支
7、远程分支
git clone git仓库 克隆一个git仓库
git checkout develop 首次clone仓库后看不到其它分支,需要作此操作
git pull 从托管服务器拉取并合并,若工作区或暂存区有待处理则无法执行
git fetch 从托管服务器拉取,但是不合并
git push 向托管服务器推送,若服务器版本有更改则会失败需要先pull
8、先本地创建,再远程托管
git init
git add .
git commit -a -m 'init' 添加修改到暂存区并提交(只能是已经纳入管理的文件)
git remote add origin 远程仓库
git push -u origin master 首次需要输入用户名和密码(会缓存)
git credential-manager uninstall 清除缓存的用户名和密码 9、差异比较
git diff 工作区与上次提交的差异
git diff --cached 暂存区与上次提交的差异
git diff --staged 暂存区与上次提交的差异
git diff HEAD^ HEAD 上次提交和上上次提交的差异
git diff sha1 sha2 两次历史提交的差异
10、恢复命令
1、git reset [--mixed]
恢复到指定提交,会修改commit和工作区,再次提交需要add/commit
2、git reset --soft
恢复到指定提交,会修改commit,再次可以直接commit
3、git reset --hard
恢复到指定提交,会修改commit和工作区,不会保留任何东西
4、git reset HEAD^
恢复到上次的提交,即删除最后一次的提交
5、git reset HEAD
恢复文件的add操作
11、SSH登录
1、在~/.ssh目录生成公钥私钥对:ssh-keygen [-t rsa]
2、将公钥添加到项目中, => Settings => SSH and GPG keys
3、之后即可无密码登录(首次登录会有信任提示)
12、工作原理:
13、标签
参数介绍:
-a:添加附注标签
-m:指定说明信息
-d:删除附注标签
-l:列表显示标签
实例演示:
git tag [-l/--list] 列出所有标签
git tag v1.0 [commit] 创建基于指定提交的标签
git show [tag] 查看tag信息
git push [remote] [tag] 提交指定tag
git push [remote] --tags 提交所有tag
git checkout -b [branch] [tag] 新建一个分支,指向某个tag
14、远程同步
git fetch [remote] 下载远程仓库到本地仓库,不会改变暂存区和工作区
git remote -v 显示所有远程仓库
git remote show [remote] 显示某个远程仓库的信息
git remote add [name] url 增加一个新的远程仓库,并命名
git remote remove name 移除指定的远程仓库 git pull [remote] [branch] 下载远程仓库到本地仓库并合并,会改变暂存区/工作区
git push [remote] [branch] 上传本地分支到远程仓库
git push [remote] --force 强行推送本地分支到远程仓库,即使有冲突
git push [remote] --all 推送所有分支到远程
git push --set-upstream origin develop
为推送本地develop分支建立与远程上游的追踪,首次推送远程不存在的分支时使用
15、忽略文件权限的修改
现象:首次推送到服务器上的代码,文件全部都修改了,不同系统的文件权限管理的形式不同
git config de false
16、冲突解决
产生原因:多人的提交修改了相同的文件
现象:推送失败,提示有更新的提交,请先拉取(git pull)
出现冲突:
<<<<<<< HEAD
123 本地的修改
=======
111111 远程的修改
>>>>>>> a5a658088bf3ef6bd5124a2eda992b91d66b1340
解决方案:修改代码
123
111111
提交推送
git commit -a -m '合并冲突'
git push
17、忽略指定文件的修改
忽略指定文件的修改:git update-index --assume-unchanged 文件名
取消忽略文件的修改:git update-index --no-assume-unchanged 文件名
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688702501a163799.html
评论列表(0条)