git 命令汇总

2020-09-15/2022-01-20

参考文献:

Git撤销&回滚操作(git reset 和 get revert)

git远程操作相关命令辨析(remote 、push、fetch 、pull)

idea中,git的cherry-pick怎么用?

git 本地使用

  • 将目录变为 git 仓库

    1git init
    
  • 查询当前工作区和暂存区的状态

    1git status
    
  • 添加文件到暂存区

     1# path 可以是文件或者目录
     2git add <path>
     3
     4# 添加所有文件到暂存区,包括 .gitignore 忽略的文件
     5git add *
     6
     7# 添加所有文件到暂存区,不包括 .gitignore 忽略的文件
     8git add .
     9git add -A [<path>]
    10git add --all [<path>]
    11
    12# 添加已被跟踪的文件到暂存区
    13git add -u [<path>]
    14git add --update [<path>]
    
  • 提交暂存区内容到版本可

    1# 提交到版本库,message 为提交说明
    2git commit -m "message"
    3
    4# 提交所有已跟踪文件到本地仓库,即使没有经过 git add 添加到暂存区
    5git commit -a -m "message"
    6git commit --all -m "message"
    7
    8# 修改先前(上一个版本)的提交
    9git commit --amend
    
  • 本地分支

     1# 查看本地分支
     2git branch
     3
     4# 查看所有分支(包括远程)
     5git branch -a
     6
     7# 创建本地分支
     8git branch branchName
     9
    10# 切换本地仓库分支
    11git checkout localBranchName
    12
    13# 优选(cherry-pick)
    14git cherry-pick commitId
    
  • 查看提交历史

    1git log
    
  • 回退

    在Git中,用HEAD表示当前版本,上一个版本是HEAD^,上上一个版本是HEAD^^

    --hard 表示重置 HEAD、索引和工作区

     1# 在工作区中的代码
     2# 回到缓存区之前的状态
     3git checkout a.txt
     4git checkout .
     5
     6
     7# 代码 add 到缓存区,并未 commit
     8# 回退到 add 操作之前
     9git reset HEAD .
    10git reset HEAD a.txt
    11
    12
    13# commit 到本地分支,但是没有 push 到远程
    14# 获取 commit id
    15git log
    16# 回到某个版本
    17git reset --hard <commit id>
    18# 回退到最近一次提交
    19git reset --hard HEAD^
    20# 保留工作区代码,回退到 add 之前
    21git reset HEAD^
    22
    23# --mixed 
    24意思是:不删除工作空间改动代码,撤销commit,并且撤销 git add . 操作,这个为默认参数
    25git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。 
    26# --soft  
    27不删除工作空间改动代码,撤销commit,不撤销git add . 
    28# --hard
    29删除工作空间改动代码,撤销commit,撤销git add . ,注意完成这个操作后,就恢复到了上一次的 commit 状态。
    30
    31# 撤销指定的版本,撤销也会作为一次提交进行保存
    32git revert <commit id>
    
  • 图形化界面操作

    1gitk
    

git 远程使用

  • origin 是指向仓库的指针,master 是指向分支的指针

  •  1# 查看远程仓库名
     2git remote
     3
     4# 查看远程仓库详细信息
     5git remote -v/--version
     6
     7# 添加远程仓库
     8git remote add name url
     9
    10# 删除远程仓库
    11git remote remove name
    12
    13# 查看远程仓库信息
    14git remote show 仓库名
    
  • 远程分支

     1# 查看所有远程分支
     2git branch -r
     3
     4# 查看当前本地分支所关联的远程分支
     5git branch -vv
     6
     7# 创建一个新的本地分支,并与指定的远程分支关联起来。
     8git checkout -b localBranchName origin/remoteBranchName
     9
    10# 将本地当前分支和远程分支绑定
    11git push --set-upstream origin remoteBranchName
    
  • 从远程仓库克隆

    1git clone
    2# 克隆远端指定分支
    3git clone -b 远程分支名 ssh地址
    
  • push 到远程仓库

     1# 完整写法
     2git push <远程仓库名> <本地分支名>:<远程分支名>
     3
     4# 删除远程分支
     5git push origin :远程分支名
     6git push origin --delete :远程分支名
     7git push origin :远程分支名 --delete
     8
     9# 将本地分支推送到与之存在Tracking(追踪关系)的远程分支,通常两分支同名。如果远程分支不存在,则会自动创建分支。
    10git push origin master
    11
    12# 如果当前分支只有一个追踪分支,那么仓库名都可以省略。
    13git push
    14
    15# 如果当前分支与多个仓库存在追踪关系,则可以使用-u选项指定一个默认仓库,这样后面就可以不加任何参数使用git push。
    16git push -u origin master
    
  • fetch 从远程拉取更新,从远程获取最新版本到本地仓库,而不是工作目录, 并且不会自动merge

    1git fetch <远程仓库名>   <远程分支名>:<本地分支名>
    2git fetch <远程仓库名> <分支名>
    3git fetch <远程仓库名>
    
  • pull 是从远程获取最新版本到本地,并低程度的自动merge;但大部分还需要自己判断合并,等价与 git fetch & git merage

    1git pull <远程仓库名> <远程分支名>:<本地分支名>
    2git pull origin <远程分支名>
    3# 只有一个追踪分支
    4git pull
    

忽略文件

  • 在项目目录下创建 .gitignore 文件,写入要忽略的文件

  • 忽略规则

    • 空行或是以 # 开头的行为注释行
    • “/ 结尾表示目录
    • “*” 通配多个字符
    • "**" 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
    • “?” 通配单个字符
    • “!” 表示不忽略(跟踪)匹配到的文件或目录
    • "/" 开始的模式匹配项目根目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。
    • 空格不匹配任意文件,可作为分隔符,可用反斜杠转义
    • 以叹号"!"表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
  • 模板

     1.DS_Store
     2node_modules
     3/dist
     4
     5# local env files
     6.env.local
     7.env.*.local
     8
     9# Log files
    10npm-debug.log*
    11yarn-debug.log*
    12yarn-error.log*
    13
    14# Editor directories and files
    15.idea
    16.vscode
    17*.suo
    18*.ntvs*
    19*.njsproj
    20*.sln
    21*.sw*
    
  • 安卓模板

     1*.iml
     2.gradle/
     3/local.properties
     4.idea/
     5.DS_Store
     6build/
     7captures/
     8.externalNativeBuild
     9.gitignore
    10app/build/
    11app/platformxm.keystore
    
评论
发表评论
       
       
取消