git 常用命令

Posted wangzhiyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 常用命令相关的知识,希望对你有一定的参考价值。

git学习

参考链接:廖雪峰git教程

版本回退:

  • git reset --hard HEAD^20
    • HEAD之前20个版本
    • --hard 撤消commit与对应的更改
    • --soft 撤消commit
  • git reflog
    • 查看操作历史记录

暂存区(stage or index):

  • git add
    • 将"文件修改"添加到暂存区
  • git commit
    • 将暂存区所有内容提交(移动?)到当前分支
  • git diff HEAD -- a.txt
  • git checkout -- a.txt
    • 将a.txt文件在__"工作区"__的修改全部撤销
    • 撤销到和 版本库(修改没被放到暂存区)/暂存区(修改已经添加到暂存区) 一样的状态
    • 让a.txt回到最近一次git commit/ git add时的状态(会丢失最近一次提交后修改的内容)
    • 命令中的"--"
  • git reset HEAD a.txt
    • 将__"暂存区"__的修改撤销掉(unstage)
    • HEAD 撤销到最新版本
  • 引用原作一段话

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作
    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

删除:

  • rm a.txt
    • git rm a.txt (+ git commit)从版本库中删除该文件
    • git checkout -- a.txt 恢复误删的a.txt (把误删的文件恢复到最新版本)
    • git checkout 用__版本库__里的版本替换__工作区__的版本

远程仓库

  • 本地Git仓库和github仓库之间的传输是通过SSH加密的
  • 新建仓库+推送
    • git remote add origin [email protected]:yourname/XXX.git
    • 远程库的名字为origin
    • git push -u origin master 第一次推送master分支的所有内容
    • git push origin master
  • 新建仓库+克隆

分支管理

  • 概念
    • HEAD -> master -> 提交
    • 每次提交 master 分支都向前移动一步
  • 分支操作命令
    • git checkout -b dev
    • git checkout master; git merge dev
    • git merge 合并指定分支到当前分支
    • Fast-forward模式 当删除被合并的分支后,git log中丢掉__是从这个分支合并__的信息
    • 禁用--no-ff 禁用后 Git会在merge时生成一个新的commit
    • 普通模式合并,能看出来曾经做过合并,git log 中有merge分支的信息
    • git branch -d dev
  • 带参数的git log
    • git log --graph --pretty=oneline --abbrev-commit
    • git log --graph
  • stash
    • 把当前工作现场“储藏”起来,等以后恢复现场后继续工作
    • 从某个分支退出,但不想commit时:

      dev分支 git stash
      git checkout master
      do some thing
      git checout dev
      git stash list
      git stash pop
      或者 git stash applay xxx / git stash drop xxx
  • 删除未被合并的分支
    • git branch -D XXXX
  • 推送/抓取分支
    • git push origin dev
    • 拉取远程dev分支并创建本地dev分支 git checkout -b dev orgin/dev
    • git branch --set-upstream-to=origin/dev dev
    • git pull ( git pull origin dev )

标签

  • 概念
    • 标签是指向某个commit的指针
    • git show
    • git tag -a / -d
    • 删除远程标签,先从本地删除,然后 git push origin :refs/tags/

自定义git

  • Git显示颜色
    • git config --global color.ui true
  • 忽略某些文件
  • 快捷键

    git config --global alias.st status 
    git config --global alias.co checkout
    git config --global alias.ci commit
    git config --global alias.br branch
  • 配置文件

    $ cat .git/config 
    [core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
    [remote "origin"]
    url = [email protected]:michaelliao/learngit.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
    remote = origin
    merge = refs/heads/master
    [alias]
    last = log -1

git fetch / pull 区别

git常用命令

  • 更新代码
    • git fetch --all (fetch all remotes)
    • git push origin remotes/upstream/master:master -f
      • 将fetch下来的remotes/upstream/master分支push到origin远程仓库master分支上,省略了merge的commit
      • git branch -va查看fetch后的结果
    • git reset --hard HEAD~20
    • git checkout master
    • git pull (将最新代码拉取到本地)
  • 需要保存未提交的内容
  • git commit --amend --no-edit

git相关工具

  • tig

待补充

以上是关于git 常用命令的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

git 常用命令

源代码管理相关命令(Git常用命令Nuget常用命令CMD常用命令)

git常用命令