Git常用命令和详解,Git命令大全

一. 创建版本库

版本库可以理解成一个目录,在这个目录里的所有文件都能被Git管理起来,每个文件的修改,删除都可以被Git跟综到,以便在将来在需要的时候“还原”。

  1. 第一步:创建一个空的目录
  • 命令
$ mkdir "文件名“
$ cd "文件名"
$ pwd
  • 详解:mkdir: 创建一个空的文件
    cd:进入到创建的文件里
    pwd:显示当前目录
  1. 第二步:把这个目录变成Git可以管理的仓库:
  • 命令
$ git init
Initialized empty Git repository in /文件地址.git/
  • 详解
    git init: 初始化Git仓库,Git可以管理了
    并且告诉你是一个空的仓库(empty Git repository),当前目录下多了一个.git目录,这个目录就是Git来跟踪管理版本库的,没事千万不要修改这个目录里面的文件,不然就把Git仓库给破坏了。

二. 把文件添加到版本库

  • 命令
  1. 第一步 git add 文件名 (添加到暂存区)
  2. 第二步 git commit -m "说明/备注" (提交到仓库中)
  • 详解
    git status:可以看到暂存区的修改,有哪些没有提交到仓库中去
    git diff:可以看到哪些具体的内容被修改了,顾名思义就是查看difference

二. 1 版本回退

  • 命令
    git log:可以查看由近到远的提交日志
    git log --pretty=oneline:和git log作用一样,简化了输出内容,只有一大串的commit id(版本号)和提交时的备注
    回退命令
$ git reset --hard HEAD^  // 回退到上一个版本
$ cat 文件名   // 输出当前文件内容 

回退到之前未来(指定)的版本

$ git reset --hard commit id  //  根据commit id回退到指定版本

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是改变了HEAD的指针指向;
然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。
想回退到某一个版本,但是不知道commit id 怎么办?
有后悔药!

$ git reflog   // 这个命令是用来记录每一次的命令的。

这样就可以根据commit id回到指定的版本了😸

下面直接放Git命令:

1. 设置


$ git config --global user.name "Your Name"
$ git config --global user.email "Your email"
$ cat ~/.gitconfig  // 查看email和name是什么

2. 本地分支


$ git init  // 初始化当前文件夹,让Git能够管理
$ git add  //  添加文件到暂存区
$ git commit -m "提交信息"  // 暂存区的文件提交的当前分支
$ git status  // 查看状态
$ git diff // 查看修改
$ git log // 查看历史记录(窗口不关闭) 有--pretty=oneline的参数:可以只显示提交信息
$ git reset --hard HEAD^  // 回到上一个版本,也可以把暂存区的修改回退到工作区
$ git reset --hard "commit id"  // 回到指定版本
$ cat "文件名" // 查看当前文件的内容
$ git reflog // 记录每一次的命令(窗口关闭也能查到)主要是查看commit id,回到某一个版本
$ git diff HEAD -- "文件名" // 查看工作区和版本库的最新区别
$ git checkout -- "文件名"  // 把工作区的修改全部撤销:1.没有放到暂存区的,就撤销修改,回到和版本库一模一样。 2.添加到暂存区后的,又做了修改,那就回到添加到暂存区 之后的状态。(总之就是回到最近的一次git add 或者 git commit)。PS:如果没有--就是切换分支的命令。
$ git rm "name"  // 删除一个文件

3. 远程仓库


$ ssh-keygen -t rsa -C "Your email"  // 生成公钥和私钥 地址:/admin/.ssh/...
$ git remote add origin git@github.com:z-Growup977/test // 本地关联远端
$ git push -u origin master // 本地推送到远程 -u参数和推送的分支关联起来
$ git remote -v // 查看远程库信息 不带-v只显示仓库g名称
$ git remote rm origin // 删除origin(其实是解除和远程的绑定关系)
$ git clone git@github.com:z-Growup977/gitskills.git // 本地从远端克隆仓库
$ ls // 查看当前文件夹下的文件
$ git push origin <branch-name>  // 推送自己本地的修改
$ git pull // 远程比本地更新,用这个命令合并
$ git branch --set-upstream-to <branch-name> origin/<branch-name>  //  git pull时提示 no tracking information说明没有创建连接。需用这个命令创建本地和远程的连接
$ git checkout -b <branch-name> origin/<branch-name> // 在本地创建和远程对应的分支

4. 分支管理

$ git checkout -b dev // -b 表示创建并切换到dev分支
$ git branch // 查看所有分支 *标记的是当前分支
$ git branch dev // 创建分支
$ git checout dev // 根据分支名切换分支。
$ git merge dev // dev合并到当前分支
$ git branch -d dev // 删除dev分支
$ git branch -D dev // 强制删除分支
$ -------------------------下面是新版本的切换命令switch 
$ git switch -c dev // 创建并切换到dev分支
$ git switch main  // 切换到main分支
$ -------------------------
$ git log --graph --pretty=oneline --abbrev-commit  // 查看分支的合并情况
$ git merge --no--ff -m "描述" dev  // 加上--no-ff参数能从历史中看出合并记录,本次合并会创建一个新的commit 所以带上-m说明
$ git rebase // 把本地未push的分叉提交历史整理成直线,最终结果是和merge是一样的。
$ git stash // 把当前工作现场“储藏”起来。
$ git stash list // 查看储藏起来的工作区
$ git stash pop // 恢复储藏区,并删除stash内容
$ git stash apply // 恢复储藏区但不删除,需要用:git stash drop删除
$ git stash apply stash@{0} // 恢复指定的stash
$ git cherry-pick <commit id> // 复制一个特定的提交到当前分支

5. 标签管理 tag


$ git tag <name> // 创建tag标签 默认为HEAD
$ git tag  // 查看所有标签
$ git tag <name> <commit id> // 指定提交id打上标签
$ git tag -a <name> -m "shuoming" <commit id> // 创建带有说明的标签,-a指定标签名,-m 指定说明
$ git tag -d <tagname> // 删除某个本地标签
$ git push origin main --tags  // 推送所有本地标签到远程仓库
$ git push origin <tagname> // 推送某个本地标签到远程
如果标签已经推送到远程删除的话就需要先删除本地标签,再删除远程:
$ git push origin :refs/tags/<tagname> // 删除某个远程标签,登录Github查看

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

6. 忽略特殊文件
就是在Git提交的时候,不想提交的文件我们可以:

  1. 在Git工作区的目录下创建文件: .gitignore
  2. 然后把想要忽略的文件名字填写到这个文件里面。
  3. 最后就是把.gitignore文件提交到Git
    如果想要添加可以 git add -f <name> // 使用-f可以强制添加。

7. 配置别名(偷懒)

$ git config --global alias.<别名> <"原名"> // 配置别名是为了简单好记,--global是全局参数,所有Git仓库都能使用。
下面是一些常用的别名设置方法:
$ 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.unstage 'reset HEAD'  // 把暂存区的修改撤销掉(unstage),重新放回工作区。
$ git config --global alias.last 'log -1'  // 显示最后一次提交信息

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容