Git常用指令及相关操作

学习《廖雪峰-Git教程》时所作的笔记,常用的Git指令操作基本都包含了。


创建版本库

  • mkdir 文件夹名 …………创建新目录

  • cd 文件夹

  • git init …………把这个目录变成Git可管理仓库

  • git add 文件名.后缀 …………把该文件添加到版本库(实际上是添加到暂存区stage)

  • git commit -m "说明内容" …………提交文件到仓库(实际上就是把暂存区的所有内容提交到当前分支)

注意:
1、创建的文件夹即为一个工作区

2、工作区内隐藏的.git文件夹即为Git的版本库

3、可多次git add,一次git commit

4、git commit之后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的(可用git status查看)

5、每次修改,如果不用git add到暂存区,那就不会加入到commit

查看

  • cat 文件名.后缀 …………查看详细信息(打开文件)

  • git status …………查看仓库状态

  • git diff 文件名.后缀 …………查看该文件的改动的地方

  • git log …………查看仓库的所有历史记录(详细版)

  • git log --pretty=oneline …………查看仓库的所有历史记录(简洁版)

  • git log --graph …………查看分支的当前状况(详细版)

  • git log --graph --pretty=oneline --abbrev-commit …………查看分支的当前状况(简洁版)

  • git diff HEAD -- readme.txt …………git commit后,可用该命令可以查看工作区和版本库里面最新版本的区别(修改没有add,直接commit是提交不上的)

版本回退

  • git reset --hard HEAD^ …………回退到上一版本(错误修改已经commit,且未推送到远程库时)

  • git reset --hard HEAD^^ …………回退到上两个版本(以此类推)

  • git reset HEAD 文件名.后缀 …………把刚刚add到暂存区的修改撤销掉,退回到工作区

  • git checkout -- 文件名.后缀 ………… 1、修改后未add,则回到之前commit的状态;2、add后做了修改,则回到刚add的状态

  • git reset HEAD file & git checkout -- file …………错误修改后add的情况,先用reset退回工作区,再用checkout撤销修改

版本恢复

  • git reset --hard 版本号前几位 …………回到特定的某一版本(可找到commit id

  • git reflog & git reset --hard …………git reflog可查看历史所有版本号

文件删除

  • rm file …………删除工作区文件(本地文件,删除后git status会提示删除文件)

  • git rm file …………删除版本库文件

文件还原

  • git checkout -- file …………错误删除工作区文件,则可用版本库文件替换工作区文件(前提是该文件之前已commit

本地库关联远程库

  • Github中新建repo …………与要管理的本地库同名

  • git remote add origin [email protected]:LiamWang666/learngit.git …………关联本地库,origin为远程库的默认名字

  • git push -u origin master …………推导本地库到远程库(第一次推送加-u可以将两库的master分支关联起来,简化后续命令)

  • git push origin master …………后续每次commit后提交,无网络时在本地工作,有网络时push一下就OK

  • git push origin dev …………推送任意指定分支到远程对应分支

远程库中克隆到本地

  • 方式1:Github中新建repo

  • 方式2:SSH协议: git clone [email protected]:LiamWang666/gitskills.git …………克隆该库到本地

  • 方式3:https协议:git clone https://github.com/michaelliao/gitskills.git

注意:
在另一台电脑上克隆到本地的仓库默认只能看到主分支master(可用git branch查看),要想在其他分支如dev上进行开发,需要git checkout -b dev origin/dev

分支管理

作用:用于在不影响他人工作(依靠完整的代码库)的情况下进行自己的工作,在分支1上commit的内容并不会出现在分支2上

  • git checkout -b dev 或者 git switch -c dev …………创建并切换(-b)到dev分支,相当于 git branch dev & git checkout dev

  • git branch …………查看当前分支(带*的),且列出所有分支

  • 在dev分支上进行修改

  • git checkout master 或者 git switch master …………切换到主分支

  • git merge dev …………合并指定分支dev到当前分支master上(Fast-forward表示此次合并是“快进模式”,即直接把master指向dev的当前提交,所以合并速度非常快)

  • git branch -d dev …………dev分支无用后删除

注意:
1、创建Git版本库时,Git自动为我们创建了唯一一个master分支(git commit默认就是往该分支上提交)

2、master分支应该是非常稳定的,仅用来发布新版本,平时应该在分支上干活;

3、若在两个分支上都分别修改了同一文件,则不能进行快速合并,合并时会出现conflict,可用cat file查看冲突的地方,手动解决后再进行合并

4、快速模式合并git merge dev之后会丢失删除的分支信息,看不出来曾经做过合并

5、普通模式合并(--no-ffgit merge --no-ff -m "merge with no-ff" dev 合并后分支历史,能看出来曾经做过合并

6、强行删除未合并的分支git branch -D <name>

7、多人同时修改分支推送问题:https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320

8、git rebase 可将复杂的分支历史变成一条直线,方便查看历史提交的变化

标签管理(一般为版本号,如V1.0)

  • git tag …………查看所有标签

  • git tag <name> …………新建标签,默认打在当前分支的最新提交的commit

  • git log --pretty=oneline --abbrev-commit & git tag <name> 版本号 …………补标签,给过去提交的某一版本打标签

  • git show <name> …………展示某一标签代表的版本的详细信息

  • git tag -d <name> …………删除本地指定标签

  • git push origin :refs/tags/<name> …………删除远程标签(先删本地)

  • git push origin v1.0 …………推送指定标签到远程

  • git push origin --tags …………一次性推送所有未推送的本地标签

注意:
标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

怎么参与他人项目

  • Fork一下别人的项目仓库
  • 克隆到自己的本地:git clone [email protected]:LiamWang666/bootstrap.git(注意是自己的用户名,否则没有推送权限)
  • 推送pull request给官方仓库来贡献代码

码云的使用

加快访问Github的速度

个性化操作

  • 配置别名:git config --global alias.新名字st 旧指令名status …………若旧指令名为多个单词,含间隔,则加’’

猜你喜欢

转载自blog.csdn.net/WB18002337539/article/details/107386670