git 基本命令与要点(方便查阅)
Posted 有头发的程序猿#
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 基本命令与要点(方便查阅)相关的知识,希望对你有一定的参考价值。
一、基础使用
- git init
初始化仓库 - git add 文件
添加文件 - git commit -m “first commit”
提交到仓库 - git status 查看状态,有哪些修改了的
- git diff 文件路径 查看文件被修改的部分
- git log 查看操作过的日志,里面有每个commit的id,head代表当前处于哪个版本,如果觉得信息太多,可以git log --pretty=oneline,会显示精简的信息,输入git log之后退出按Q键;git reflog记录了你的每次版本回退之类的操作,因为回退之后最新的commit_id用git log看不到了;
- git reset --hard commit_id 回退到commit_id版本,或者git reset --hard HEAD^ , 一个^代表回退一个版本,两个则两个版本
- cat 文件 查看文件内容
- 理解工作区,暂存区概念
- git管理的是修改而不是文件,每次只会commit 已经被add过的文件,没被add的文件不会被commit;可以使用git diff HEAD – 文件 来查看工作区域与版本库里面最新版本的区别;HEAD的意思是最新的版本。
- git checkout – 文件 或者 git restore 文件
撤销在工作区的修改(推荐后者,新版命令) - git reset HEAD 文件 或者 git restore --staged 文件
修改的文件已经被add进入到暂存区,用这命令撤回到工作区,再用11命令撤销工作区的修改。(推荐后者,新版命令) - git rm 文件 ,接着一定记得提交git commit -m “删除某某文件”
某文件已经提交到了版本库,自己删了工作区该文件,git rm 这命令是确实想删了这文件,就把版本库里面的也删了 - git checkout – 文件
删错本地文件了!从版本库中恢复最新的回来;git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
从来没有被添加到版本库就被删除的文件,是无法恢复的! - ssh-keygen -t rsa -C “youremail@example.com”
创建自己的ssh,与远程创库gitub关联 - git remote add origin git@github.com:你的用户名/仓库名.git
本地关联gitub上的远程库,origin 是远程仓库的名字,是git的默认叫法。 - git push -u origin master
推送本地到远程仓库,-u参数是Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 - git remote -v 查看远程库信息;git remote rm origin 删除远程库,此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。
- git clone 从零开始开发的时候,先在gitub上创建仓库,再用clone从gitub上拉取下来。
二、分支管理
git reflog show
查看分支情况,是从哪里切分出来的
- git switch -c < name> 或者 git checkout -b < name>
创建并且切换到分支name - git branch 查看分支
- git branch < name> 创建name分支
- git switch < name> 或者 git checkout < name> 切换分支
- git merge < name> 合并name分支到当前分支\\
- git branch -d < name> 删除name分支
- 分支冲突:存在冲突的条件是需要待合并的两个分支在分开后各自有提交,文件存在冲突,必须手动解决冲突后再提交。我们需要手动修改某一分支的内容后再提交,就可以解决。此时在对切换另一分支合并该分支是Fast-Forward模式进行快速合并,这是不存在冲突的
git log --graph可以查看分支合并图 - 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。git merge --no-ff -m “merge with no-ff” dev,使用欧冠–no-f参数,而且这里因为要提交要多-m参数
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。 - 当在一个分支上工作的时候,需要修改另一个分支的bug,则可以用git stash将当前分支工作现场“存储”起来。后面别的分支修改完,可以通过git stash list来查看,git stash apply id,来恢复,接着git stash drop id来删除,git stash pop前两步合并,恢复并删除stash list中的存储。
- 修改当前分支的bug,应在当前分支下创建另一分支,在另一分支debug,de完后提交,接着切回bug分支,合并创建的分支并删除
- 如果bug分支是master分支,bug很早之前就存在了,dev分支自然也会有bug,这样我们又要在dev分支上修改一下吗?不用,直接使用bug分支修改好后commit-id,在切回dev分支后,使用git cherry-pick < commit-id>
- 开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D < name>强行删除。 - 多人协作
伙伴克隆下项目,只有master分支,想要你的dev分支,则git checkout -b dev origin/dev;
接着伙伴修改好了,并推送到github的dev分支上 git push origin dev;
恰好你也要推送,发现当前你的和github上有冲突,根据提示代码,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送;
git pull 如果失败是因为没有指定本地dev分支与远程origin/dev分支的链接,需要根据提示,写出如下代码 git branch --set-upstream-to=origin/dev dev
pull成功后,但有合并冲突,此时需要手动修改,就像第七点说的那样。 - 标签
git tag < tagname>用于在当前分支的最新版本建一个标签
git tag -a < tagname> -m “balabala” -m表示标签信息
git tag 查看所有标签
git tag < tagname> commit-id 为历史版本打标签。
git show < tagname> 查看标签的信息,比如说明
git tag -d < tagname> 删除标签
git push origin < tagname> 推送标签到远程
git push origin --tags 一次性推送尚未推送到远程的标签
要删除推送到远程的标签有两步:1.git tag -d < tagname> 2.git push origin :refs/tags/< tagname>
如果本文章对你也有了帮助,不妨点个赞收藏一下吧,如果有错误,欢迎评论区指出哦
以上是关于git 基本命令与要点(方便查阅)的主要内容,如果未能解决你的问题,请参考以下文章