参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
配置gitbash变量可以在C:\Program Files\Git\etc\bash.bashrc 中(git在win10的安装目录,linux可以直接在profile或者.bashrc中配置),比如:alias ll="ls -al"
基本配置:
git init
git config --global user.name 'zhaoyl'
git config --global user.email 'zhaoyl@adfasdf'
git config --get user.name //查看一些信息
基本命令
git add file | . //添加到暂存区
git commint -m ‘asdfasd’ file | * //提交
git status //显示被修改的文件处于什么提交状态(处于工作区则提示:变更没有暂存,暂存区则提示:变更将要被提交,还是仓库则提示没有需要被提交的文件)
git diff
比较工作区与暂存区,
--cached [<path>...] 比较暂存区与最新本地版本库,
HEAD [<path>...]比较工作区与最新本地版本库,
commit-id [<path>...] 比较工作区与指定commit-id的差异,
--cached [<commit-id>] [<path>...] 比较暂存区与指定commit-id的差异
[<commit-id>] [<commit-id>] 比较两个commit-id之间的差异
> patch 生成补丁,参考diff详细说明
git log //显示文件修改历史(显示的是-m参数指定的提交说明,从提交时间线上看,显示的是HEAD指针指向的commit之前的【包括本commit)的记录
git reset --hard HEAD^ | commitId //回到上一个版本或具体提交id,HEAD^^上两个版本,HEAD~100 上100个版本,--hard操作的是提交id,而一次提交可以包含多个文件
git reflog //显示回退记录,从记录看到回退了两次,
git checkout -- file //撤销本地修改,和暂存区同步
git reset HEAD <file> //撤销暂存区的修改,和本地库同步
git reset --hard HEAE^|commitid //和本地某次提交同步,前提是没有推送到远程库
git rm file //删除工作区文件,并把修改add到暂存区
远程仓库
github:https://github.com/
注册后,创建一个空的仓库,比如:git@github.com:zhaoyl2019/bigdata.git
本地ssh生成密码,在github上设置公钥
第一次和远程交互:
git clone git@github.com:zhaoyl2019/bigdata.git
或者远程是空仓库
git remote add origin git地址
然后提交本地仓库到origin
git push -u origin masters
分支
git checkout -b dev //创建一个dev分支,切换到dev;git branch dev 创建分支,git checkout dev 切换分支
git checkout master
git merge dev //把dev合并到master分支; --no-ff:禁止使用快进模式,合并生成一个commit,快进模式一般发生在没有需要解决冲突的时候。master指针直接指向分支
git log --graph //查看分支合并图
git branch -d dev //删除dev分支
git branch -D fe (fe 是dev的checkout)//强制删除fe分支,当fe分支没有被合并到dev分支时,可以强制删除
git stash //储藏分支,然后切到什么分支,工作区就是什么分支内容
git stash list //显示储藏的分支
git stash pop //恢复分支,并删除储藏的分支;git stash apply 恢复,git stash drop 删除
此操作在开发中临时拉取bug分支进行修复bug时用,可以隐藏dev中的分支进行修复bug
git checkout -b dev origin/dev //切换到远程dev分支
git pull //拉取最新的远程dev分支,如果pull失败,根据提示:git branch --set-upstream-to=origin/dev dev指定本地dev链接上远程dev
git push origin dev //提交到远程的dev分支
当两个仓库没有共同的祖先,要在本地合并他们
1.git remote add origin1 git@github.com:zhaoyl2019/bigdata1.git
2.git checkout -b bigdata
3.git fetch origin1
4.git branch --set-upstream-to=origin1/master bigdata
5. git pull //会提示:fatal: 拒绝合并无关的历史
6.git pull --allow-unrelated-histories //就可以进行合并了
当两个仓库有共同的祖先,要在本地合并他们
github中新建一个bigdata2仓库,并从bigdata导入数据
git remote add bigdata git@github.com:zhaoyl2019/bigdata.git
git remote add bigdata2 git@github.com:zhaoyl2019/bigdata2.git
git branch -u bigdata/master master //本地已存在的master和bigdata/master建立追踪(此步骤发生在本地把remote都删除的情况,一般本地master已经追踪了bigdata/master了)
检查本地和bigdata一致后,可以新建分支或者在本地master上切换追踪,一般稳妥期间,应该切换分支来和bigdata2进行合并
本例子在本地master上操作
git fetch bigdata2
git branch -u bigdata2/master master
git pull 然后解决冲突
然后切换追踪
git branch -u bigdata/master master
git status 提示您的分支领先 'bigdata/master' 共 1 个提交(使用 "git push" 来发布您的本地提交)
git rebase //可以把本地未push的分叉提交历史整理成直线
git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag可以查看所有标签
git show <tagname> 查看标签内容
git push origin <tagname>可以推送一个本地标签;
git push origin --tags可以推送全部未推送过的本地标签;
git tag -d <tagname>可以删除一个本地标签;
git push origin :refs/tags/<tagname>可以删除一个远程标签