以下为git常见指令的节点变化
图示git.jpg
以下文字总结参考廖雪峰的git教程
分布式版本控制系统
配置仓库的使用者(--global 表示这台机器所有git仓库都使用这个配置)
$git config --global user.name ""
$git config --global user.email ""
版本库(repository) - 被git所管理的目录
1、创建空目录
$mkdir learngit //创建learngit文件夹
$cd learngit //进入learngit文件夹
$pwd //显示当前目录
2、将目录变成git可以管理的仓库
$git init
3、在仓库里创建文件
$git add xxx.txt //把文件加到仓库 ---------------- $git checkout //撤销工作区的修改,把暂缓区的最新版本移到工作区
$git commit -m "提交的说明" //把文件提交到仓库
1、$git status//查看仓库当前的状态
比较区间版本
区间:
1、工作区 (working tree)
2、暂缓区(index/stage) - 执行git add后
3、本地仓库(repository) - 执行git commit后
$git diff// 查看working tree 与 index的差别
$git diff --cached// 查看index与repository的差别
$git diff HEAD//查看working tree与repository的差别,其中HEAD代表最近一次commit的信息
回退
版本回退
$git log//查看提交日志
$git reflog//查看历史提交日志,每条日志都有
$git log --pretty=oneline//查看提交日志(一行)
$git reset --hard HEAD^ //回退回上一个版本(head^^上两个版本,head~100往上100个版本)
$git reset --hard 1094a //回退至指定版本
$cat readme.txt//查看指定文件
撤销修改
git checkout -- file //1、未放置暂存区,撤销回到版本库一样的状态 2、已加到暂存库,又做了修改,撤销回到添加到暂存区后的状态(回到最近的一次git commit或者git add状态)
git reset HEAD readme.txt//将暂存区的修改撤销,重新回到工作区
1、想直接丢弃工作区的修改 git checkout
2、想丢弃暂存区的修改 git reset HEAD ->git checkout
3、想丢弃版本库的修改 git reset --hard
删除文件
git checkout -- readme.txt //工作区删除文件,但是版本库还留存,可以恢复文件
git rm readme.txt //从版本库删除文件
先手动删除工作区文件后,想从版本库删除文件
git add readme.txt 与 git rm readme.txt 效果一致
远程仓库
添加远程库
git remote add origin https://github.com/mirse/learnGit.git //关联远程库
git push -u origin master //第一次推送master分支的所有内容 -u git不但会把本地分支推送到远程,并且会把二者关联起来
git push origin master //每次本地提交后,推送最新版到远程
从远程库克隆
git clone https://github.com/mirse/WeatherDemo.git //从远程库克隆
分支管理
创建和分支合并
git branch //查看分支
git branch <name> //创建分支
git checkout <name> 或 git switch <name> //切换分支
git checkout -b <name> 或 git switch -c <name> // 创建并切换分支
git merge <name> // 合并某分支到当前分支
git branch -d <name> //删除分支
解决冲突
合并分支时可能遇到冲突,根据文本提示解决后重新git add ->git commit
<<<<<<< HEAD (HEAD表示当前)
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1 (feature1表示要合并的分支)
git log --graph //查看分支合并图
分支管理
如果使用禁用fast forawrd模式,git会在merge时生成一个新的commit
git merge <name> // 合并某分支到当前分支(默认使用ast forward模式)
git merge --no-off --m "说明内容" <name> //合并分支不使用Fast forward模式
bug分支
git stash //贮藏当前文件修改
git stash list//查看贮藏列表
git stash pop//应用贮藏,同时把stash内容删除
git stash apply stash@{0}//应用贮藏,但是stash内容不删除
git stash drop//删除贮藏
git cherry-pick <commitId> //复制一个特定的提交到当前分支
分支强制删除
git branch -D <name>
多人协作
git remote -v //查看远程库信息
git push origin branch-name //从本地推动分支
git checkout -b branch-name origin/branch-name //在本地分支创建和远程分支对应的分支
git pull //从远程抓取分支
Rebase
git rebase //将本地未push的分支提交历史整理成直线
标签管理
创建标签
git tag <tagname> //新建一个标签(HEAD)
git tag <tagname> commitId //在commitId新建一个标签
git tag -a <tagname> -m "blblbl" //创建带有说明的标签
操作标签
git push origin <tagname> //推送一个本地标签
git push origin --tags //推送全部未推送过的本地标签
git tag -d <tagname> //删除一个本地标签
git push origin :refs/tag/<tagname> //删除一个远程标签
使用Github
1、在gitHub上可以fork任意开源仓库
2、拥有fork仓库的读写权限
3、修改后可以pull request给官方仓库
使用Gitee
1、(1)ssh-keygen -t rsa -C "your email" ->(2) cat ~/.ssh/id_rsa.pub ->(4)ssh -T git@gitee.com
//(1) 本地电脑生成ssh密钥,-> (2)查看ssh密钥 ->(3) 添加到gitee->(4) 确认并添加主机到本机ssh可信列表
2、git remote -v //查看远程库信息
3、git remote rm origin //删除已有的github远程库
4、 git remote add origin git@gitee.com:menghuanqv/test.git //关联gitee远程库
本地库同时关联github与gitee
使用多个远程库时,git默认给远程库起的默认名字是origin,如果有多个远程库,我们需要用不同的名称来表示不同的远程库。
git remote add github git@gitee.com:menghuanqv/test.git
git remote add gitee git@gitee.com:menghuanqv/test.git
推送:
git push github master //推送到github
git push gitee master //推送到gitee
自定义git
忽略特殊文件
.gitignore //在文件里添加需要忽略的文件
git add -f //强行添加忽略文件所忽略的文件
网友评论