网上与git相关的文章已经有很多了,其中有不少写的很优秀的文章,所以本篇对git的使用就不再详细赘述,本篇列出的是一些跟git相关的指令,与平时使用git时遇到的一些问题处理方法。
1、Git官网:https://github.com/
这个网站因为服务器在国外,所以访问一般比较慢,我们国内相应的有码云
2、码云官网:https://gitee.com/
可以很方便的将git上的仓库导入码云
3、阿里云:https://signin.aliyun.com/
这个也不错,不过企业版的要收费
1、git简易指南:https://www.bootcss.com/p/git-guide/
看完这个git基本就能用起来了
2、git使用教程:https://www.cnblogs.com/tugenhua0707/p/4050072.html
这个就更详细,介绍了与其他版本管理(SVN)的区别,安装配置方法,以及指令使用介绍,图文并茂很详细~
看完这个对git就基本有了个较全面的认识,在实际工作中一般能用到的操作也都会了,嗯,一般的问题你也能解决了
https://www.runoob.com/git/git-tutorial.html这个也很不错!
3、git外卖网:http://cw.hubwiz.com/card/c/55d301543ad79a1b05dcc4e2/1/1/1/
之所以说这是个git外卖网,只是一个象形的说法,当你想看看的时候就上去看看,不看也没关系,跟点外卖一样
全局global配置
git config --global user.name ‘your-name’
git config --global user.email ‘your-email’
当前local仓库配置
git config --local user.name ‘your-name’
git config --local user.email ‘your-email’
查看global配置
git config --global -l //-l实际是--list
查看当前local仓库配置
git config --local -l //-l实际是--list
查看全部配置信息
git config -l //先是系统级别的,然后是用户级别的,最后是仓库级别的信息
删除 global 配置
git config --unset --global 要删除的配置项
删除当前仓库配置
git config --unset --local 要删除的配置项
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset –hard HEAD^ 或者
git reset –hard HEAD~ 回退到上一个版本(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout — XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
git push –u (第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上
git branch -a #显示所有分支
git branch -r #只显示远程分支
git remote -v #显示远程仓库
git push origin --delete 远程分支名
git branch -d 本地分支名
git checkout 远程分支名
#or
git checkout -b 本地分支名 远程分支名
git remote rm origin
git remote -v
//添加远程仓库并分别取别名为gitee与github
git remote add gitee [email protected]:mstar666/my-code-new.git
git remote add github https://github.com/Mstar666/MyCode-lib.git
git remote -v
gitee [email protected]:mstar666/my-code-new.git (fetch)
gitee [email protected]:mstar666/my-code-new.git (push)
github https://github.com/Mstar666/MyCode-lib.git (fetch)
github https://github.com/Mstar666/MyCode-lib.git (push)
git push github master
git push gitee master
git fetch
git fetch 是获取,git push是推送
git reflog //查看之前干了啥
#如下图所示,可以看到各个版本的commit id,所以我们可以根据这个id回到曾经的任何一个版本
git reset --hard 8da75cb(commit id)
有如下三种方式
git push origin HEAD:refs/for/master
git push origin 本地分支名:远程分支名
git push -u origin 本地分支名
git remote set-head origin 远程分支名
#some_branch就是你想要指向的分支
git push -u origin 本地分支名
#如果没有远程分支的话会自动根据本地分支名创建新的远程分支
#有时候,你需要启动个无历史记录的新分支, 作为一个全新的项目记录,可以用--orphan参数
git checkout --orphan 新的分支名
#比如我要弄一个mylib_v1.5版本的分支,作为一个独立的分支放着,就可以如下这么弄,
#然后再将新的分支推送到远端,可以看到新分支是没有历史记录的,是一个全新的分支
git checkout --orphan mylib_v1.5 #创建一个独立的mylib_v1.5分支
git add . #将修改加入到暂存区
git commit -m "create v1.5 branch" #提交到本地版本库
git push -u origin mylib_v1.5 #推送到远端,远端会自动创建一个mylib_v1.5分支
在项目开发过程中可能会碰到需要使用第三方库或模块的情况,为避免重复开发与代码搬迁,最简单的办法把模块仓库当成主项目的子仓库,就相当于系统下的快捷方式或者软链
// 查看子仓库
git submodule
// 添加子仓库
git submodule add <仓库地址> <本地路径>
// 初始化子仓库
git submodule init
// 更新子仓库
git submodule update
// 拉取所有仓库
git submodule foreach git pull
// submodule默认是不在任何分支上的,它指向父仓库的submodule commit id
git submodule foreach git checkout master
// 带递归clone, 会将子仓库一起clone下来
git clone [email protected]:Mstar666/Test-orphan.git --recursive
打开.gitmodules发现,其中就有子仓库的url,改变这个url就可以改变子仓库的所指位置
这里的父仓库是:[email protected]:Mstar666/Test-orphan.git
子仓库是:https://github.com/Mstar666/TestSubmodules.git
这样就将两个仓库进行了关联
注意点:
分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的new分支上干活,干完后,比如上要发布,或者说new分支代码稳定后可以合并到主分支master上来。