git 常用命令整合

1. 基础

  • git init 通过git init命令把这个目录变成Git可以管理的仓库`

  • git add readme.md 添加到工作区 , 可添加到多次

  • git commit -m "add on file" 提交修改

    • 每次commit就相当于创建了一个快照

    • 第一次执行这个命令的时候,会出现下面的提示,要求自报家门:邮箱 + 用户名(https://github.com/sub2019这是我的主页,用户名就是sub2019)

    • git config --global user.email "email@qq.com"
      git config --global user.name "sub2019"
      
  • git status 查看当前工作区的状态(有没有未添加的修改 , 有没有未提交的修改, 有没有推送, 删除)

    • 每次更改完毕, 可执行这个命令,查看状态
    • 执行git checkout -- hello.txt 可以放弃这次修改, 自动把这个文件的内容返回到修改之前
  • git diff 查看修改的内容

    • 需要在add之前执行
  • git log查看每次修改的日志, 可以加上参数

    • git log --pretty=oneline表示只打印一行
    • git reset --hard HEAD^表示回退到上一个版本,相当于从20世纪 —> 19世纪
      • 这个时候最新版本就变了, 但是如果我想要回到20世纪, 前提是这个窗口没有关闭
      • git reset --hard 1094a表示跳到指定的版本号对应的版本, 所以需要20世纪的版本号才行, 版本号不用写全,5位就够了
      • 所以只要能够查到版本号就能切换到任意版本
      • 如果关了电脑怎么办?git reflog可以查看所有的版本号
  • git rm readme.md 删除一个文件 , 删除之后也要提交, rm 和 add命令类似都会操作到缓存区

  • cat readme.dm 查看一个文件的内容

  • git branch 查看当前分支

  • git checkout dev 切换到 dev 分支

  • git branch dev 创建 dev 分支

  • git checkout -b dev 创建 dev 分支 , 并且切换到 dev分支

  • git merge dev 合并dev分支 , 如果你想要合并到master上,就要先切换到master,再执行这个命令

  • git branch -d dev 删除 dev分支

  • git remote 查看远程库信息

  • git remote -v 查看远程库更加详细的信息

  • git push origin dev 把dev分支推送到远程

  • git push origin master 把本地的master分支推送到远程库

  • git push --set-upstream origin master创建上游分支 , 如果没有这个条命令 , 推送的时候就要加上 git push origin xxx

  • git push 当前分支推送到远程库,前提是你执行了上面的命令

  • git remote add origin git@github.com:sub2019/2019-11-8-learn-git.git
    # 本地库关联到远程库
    git push -u origin master
    # 推送,-u表示把本地master和远程master关联起来,以后推送或拉取可以简化命令
    

2. 分支命令

创建一个分支,git checkout -b dev ,在dev分支上修改提交,然后切换到master分支进行合并,git merge dev ,完毕后删除dev分支 git branch -d dev

  • 查看分支: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 log --graph --pretty=oneline --abbrev-commit

  • 禁止fast forward模式合并: git merge --no-ff -m "merge with no-ff" dev

  • 丢弃一个没有被合并过的分支:git branch -D <name>

3. 多人协作

  • 克隆:git clone <address>
  • 查看远程库信息: git remote
  • 查看远程库详细信息: git remote -v
  • 推送分支: git push origin <branchName>
  • master和dev分支必须远程同步,bug分支不用,feature是否推送取决于你和你的同事是否在上面合作
  • 克隆后只能看到主分支
  • 创建远程的dev分支到本地:git checkout -b dev origin/dev
  • 假如你和你同事的提交有冲突造成你push失败,抓取最新提交,解决冲突,本地合并,再推送
  • 抓取最新提交:git push
  • 如果git push提示 no strackong information,说明本地分支和远程分支的连接关系没创建
  • 指定抓取的时候和哪个最新分支连接: git push --set-upstream-to=origin/dev dev

4. bug分支

修复bug时候,通常会创建新的bug分支来修复,然后和并,最后删除

手头工作没完成,先把工作现场隐藏 git stash ,然后去修复bug,再git stash pop,回到工作现场;

修复完毕后,因为你的支线是从主线克隆来的,说以也会有bug,在master修复的bug想要合并到当前dev分支,可以使用 git cherry-pick commitNum, 把修复bug提交的分支复制到dev分支,避免重复劳动

如果你把修复的bug合并到当前dev分支,执行 cherry-pick 命令之前必须保证工作区干净,也就是要在你恢复工作区之前进行合并

可以从dev上开bug分支,修复后合并到dev,然后把bug修复复制到master上面

  • 隐藏工作区: git stash , 可以隐藏多次
  • 查看所有隐藏工作区: git stash list
  • 恢复工作区并且删除: git stash pop
  • 恢复工作区: git stash apply
  • 恢复指定工作区: git stash apply stash@{index}
  • 删除工作区: git stash drop
  • 复制一个特定的提交到当前分支: git cherry-pick 4x805e2 , 用来合并修复的bug

5. 变基

  • 整合分支的两种方法:merge和rebase
  • rebase是在dev上打补丁,然后把补丁在master上面重放,相当于改变了commit的位置,让修改日志看起来像一条直线
  • 查看日志(提交历史折线graph):git log --graph --pretty=oneline --abbrev-commit
  • 执行变基:git rebase

6. 标签管理

  • 也是版本库的快照,指向某个commit的指针,和分支类似但是不能移动
  • commit号是6a5819e,版本号不好记所以引入快照
  • 创建一个新标签(默认为HEAD,默认最新提交):git tag v1.0
  • 创建一个新标签(指定一个commit id):git tag v1.0 f52c633
  • 指定带有说明的标签:git tag -a v0.1 -m "version 1.0 released" 1098ad
  • 查看标签:git tag
  • 查看标签信息:git show v1.0
  • 删除标签(本地):git tag -d v0.9
  • 推送指定标签:git push origin v1.0
  • 推送所有未推送标签:git push origin --tags
  • 删除已经推送的标签:先本地删除,然后远程删除git push origin :refs/tags/v0.9

7. 忽略特殊文件

  • 创建 .gitignore文件, 写入要忽略的文件名称,然后把.gitnore提交到git

  • # Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    
    # My configurations:
    db.ini
    
  • 被忽略的文件无法被add

  • 强制添加一个被忽略的文件: git add -f app.py

  • 检测gitignore规则: git check-ignore -v app.py

8. 配置别名

  • 单词太多不想记

  • git config --global alias.st status
    
    git config --global alias.ci commit
    
    git config --global alias.co checkout
    
    git config --global alias.br branch
    
    git config --global alias.unstate 'reset HEAD'
    
    git config --glboal alias.last 'log -1'  #最新一次提交信息
    
    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"
    
  • 加上–global针对当前用户,不加针对当前仓库

这些内容都是学习廖雪峰老师的官网,当然还有其他的命令,我了解的就这些了,欢迎大家补充!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值