说实话git 也使用挺久了,可是有写指令不常用,经常不记得指令,所以记录一下用法,
防止自己的遗忘;
- git 的思维导图:思维导图
github使用搜索技巧
参考:https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192
知乎git
理解缓存机制十分重要(中间的状态)
git status
可以查看查看当前项目的一些修改情况;
但是如果需要查看具体的修改的话,还是需要使用 git diff xx
(文件名)
像这样,你不断对文件进行修改,然后不断提交修改到版本库里,
就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
确实这个Git 不就像一个游戏吗;
需要回退的话,可以使用 git reset --hard xxx
(版本号), 这里分软与硬hard /soft
soft 只会撤销 commit ,不会撤销,整个版本;
git rm
用于删除一个文件
git rm –cached
git rm命令是把建立的版本库索引(index)和那个文件一起删除了。加上cached之后,就只删除索引,不删除文件本身。 与git
add相应的取消操作并不是git rm,而是git rm –cached。这是需要非常注意的地方。
撤销
git checkout -- file
命令中的–很重要,没有--
,就变成了“切换到另一个分支”的命令(注意--
前后都有空格)
git log
命令显示从最近到最远的提交日志,我们可以看到3次提交;
git reflog
,可以看到每一次我们使用的命令;
版本撤销与回退的几种情况
-
在工作区(还未add)
直接在删除即可, 或者使用 git checkout --文件名; -
在暂存区(add之后, commit 之前)
使用 git status , 可以先查看状态, 在使用提示
git reset HEAD 文件名, 也是进行回退, -
在版本库(commit 之后)
commit之后 ,则是相当于提交了文件,
这里进行的则是版本回退,
而 版本回退有分为 三种情况 hard, mixed, soft 三种模式
git reset --参数 commit id
- –hard, 这时会将所有内容还原, 指向指定相应的commit id , 所在的位置;
- –mixed, 这个是一个默认值, 将HEAD 指向, 并将快照回滚到暂存区域;
- –soft, 只是移动HEAD 的指向,指向相应的快照;
关于远程代码回退: 需要使用force
分支的合并与创建(checkout /switch 均可实现)
创建分支: git checkout -b dev
(创建一个dev的分支)
==>
git branch dev
git checkout dev
git branch
(查看分支)命令会列出所有分支,当前分支前面会标一个*号。
切换分支: git checkout master
值得注意的是: 当执行切换分支的时候, 需要先将执行git add.
就是记得一定一定要先提交
当执行 “git checkout .” 或者 "git checkout – " 命令时,
会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
分支的合并:git merge dev
; 建议使用git merge dev --no-ff
, 可以查看更加详细的信息
1.这里的合并的分支是,master 没有修改, 而dev修改了,就可以直接合并
2.当master 也同时修改与提交了话:
此时Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph
命令可以看到分支合并图
删除:
git branch -d dev
1. (这是对已经合并的分支)
对于舍弃的分支(未合并):2. git branch -D dev
; 进行强行删除
本地的操作差不多已经完成;
在提交到远程仓库的时:
主支提交 : git push origin master
分支提交 : git push origin dev
多人工作的模式:
我的另一篇:
https://blog.csdn.net/ZHXT__/article/details/102370507
标签:(相当于版本号)
生成:
git tag xx
,命名标签;
git tag
, 查看标签
删除:
git tag -d vx.xx(0.1)
推送到远端 :
git push origin v1.0
一次性推送: git push origin --tags
配置别名
git config --global alias 别名 原名
例如
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
配置文件放哪了?每个仓库的Git配置文件都放在.git/config文件中:
别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig
中:
总结:
- 1 git status 查看状态;
- 2 git add. git commot -m “xx”
- 3 git checkout dev 在切换分支;
- 4 git merge xx --no-ff ; :q ; git log
- 5 git push origin dev (推送到远端的分支上)
再去github 查看 防止出现问题; - 6 git branch 查看分支;
- 7 git branch -d xx
主要防止自己的遗忘
1.在本地直接使用 git init
就可以初始化一个本地仓库;
2.在GitHub中安提示即可创建一个仓库,但是值得注意的是,两则最好不要存在重复的东西,比如readme之类的,不然会不好处理;
方法一:
这里指的注意的是在本地的话,记得先提交到本地,在push到远程,不然会提示提交为空的error
.接下来就是将本地仓库与云端的练习起来,
指令:
1.git remote add origin https://github.com/xx/xxx.git
2.git push -u origin master
用git push命令,实际上是把当前分支master推送到远程;由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
————————————————
方法二
先将gihub的内容先clone 先来;
在将本地仓库复制进去,
在进行 远程仓库的提交
git add .
git commit -m "xxx"
git push
(git remote, git remote -v
)查看远程库的信息
值得补充一点的是: 这里的remote , 可以分为:https 与ssh 两种,
但是https 使用时,每次提交都需要,重新的输入密码,比较麻烦,
所以推荐使用 ssh 来关联
$git remote rm origin //取消关联库
9/10
首先我们在本地使用vue-cli 初始化一个 项目的时候, 这里会自动创建一个.git的文件,也就是说我们不会使用git init 的操作了;
可以直接使用 git remote add origin xxxxx;
然后在 git push origin master ;
此时我们如果想创建另一个分支的话, git checkout -b dev
(创建一个开发环境)
再次使用 git push origin dev
这两个分支可以互不影响;此时两个分支就已经创建好了
组员的话开发的话,会再此创建一个分支,可以方便自己的编写,写完之后,在将其合并;
git checkout -b components1
git clone
关于git clone , 普通的clone只会克隆一个下来
git clone默认会把远程仓库整个给clone下来;
但只会在本地默认创建一个master分支
如果远程还有其他的分支,此时用git branch -r
查看所有分支:
再使用 git checkout 切换过去即可了
参考: 添加链接描述