Git操作

  • 设置用户名和邮箱(--global表示全局)

    - git config --global user.name "Your Name"
    - git config --global user.email "[email protected]"

  • 创建仓库

    - git init

  • 将文件添加到暂存区

    - git add example.txt

  • 把文件提交到仓库

    - git commit -m "提交说明"

  • 查看文件修改记录

    - git diff example.txt

  • 查看暂存区状态

    - git status

  • 查看提交日志

    - git log
    - 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数

  • 版本回退

    - git reset --hard HEAD^
    - 用HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,往上100个版本用HEAD~100表示
    - git reset --hard commit_id
    - 回到commit_id代表的某个版本
    - 以上操作会删除git log记录

  • 撤销修改

    • 修改后 未add(添加到暂存区) 需要撤销修改时:
      - git checkout -- example.txt 或 手动删除工作区修改
      - 工作区 : clean 暂存区: clean
    • 修改后 add了(未commit) 再次修改文件 要撤销第二次修改时:
      - git checkout -- example.txt (将暂存区恢复到工作区)
      - 暂存区有第一次的修改需要commit
    • 修改后 add了(未commit),需要撤销修改时:
      - git reset HEAD example.txt (将暂存区修改删除)
      - 此时工作区的修改还未撤销
      - git checkout -- myfile.txt (撤销工作区修改)
    • 修改后 add并commit了,需要撤销修改时:
      - git reset --hard HEAD^ (版本回退)**
  • 删除文件

    • 将文件放入暂存区并提交
      - git add example.txt
      - git commit -m "new commit"
    • 删除文件
      - rm example.txt
    • 情况一:确定要从版本库中删除该文件
      - git rm example.txt
      - git commit -m "remove example.txt"
    • 情况二:恢复误删
      - git checkout -- example.txt
      - git checkout其实是用版本库里的版本替换工作区的版本,只能恢复文件到提交的最新版本
  • 添加远程库

    • 关联一个远程库
      - git remote add origin git@server-name:path/repo-name.git
      - 远程仓库默认名称为 origin
    • 查看远程库信息
      - git remote
      - git remote -v 显示详细信息
    • 删除远程库
      - git remote remove origin
      - origin为默认仓库名
    • 推送本地内容
      - git push -u origin master
      - 若提示要先fetch,则执行git pull origin master
      - 成功后提示输入描述为什么合并是必须的,操作如下:
        press "i"
        write your merge message
        press "esc"
        write ":wq"
        then press enter
      - 然后再执行以上操作
  • 创建与合并分支

    - 查看分支:git branch

    - 创建分支:git branch

    - 切换分支:git checkout

    - 创建+切换分支:git checkout -b

    - 合并某分支到当前分支:git merge

    - 删除分支:git branch -d

    - 强制删除分支:git branch -D

  • 解决冲突

    - branch_zj分支对example.txt做了修改,add和commit后,切换到master分支
    - 同样在master分支修改example.txt,add和commit后,没有这一步一般不会冲突
    - 执行:git merge branch_zj
    - 提示冲突,修改文件
    - 再执行add和commit
    - git branch -d branch_zj 删除被合并的分支

  • 强制禁用Fast forward模式

    - git merge --no-ff -m "commit messagee" branch_zj

  • 储藏当前工作区修改

    • git stash
      - 把当前分支所有没有 commit 的代码先暂存起来
    • git stash list
      - 列出暂存记录
    • git stash apply [stash_id]
      - 恢复暂存代码,如果省略 stash_id 默认恢复最近的暂存记录
    • git stash drop [stash_id]
      - 删除指定暂存记录,若没指定stash_id则删除最近一条stash记录
    • git stash pop [stash_id]
      - 还原代码,并删除该条stash记录
    • git stash clear
      - 就是清空所有暂存区的记录
  • 推送分支

    - git push origin

  • 创建标签

    • git tag
      - 默认标签是打在最新提交的commit上
    • git tag
      - 为指定的提交创建标签
    • git tag
      - 查看标签列表,标签是按字母排序的
    • git show
      - 查看标签信息
    • git tag -a -m "description"
      - 创建带说明的标签
  • 操作标签

    • git tag -d
      - 删除标签
    • git push origin
      - 推送某个标签到远程
      - 创建的标签都只储存在本地,不会自动推送到远程
    • git push origin --tags
      - 一次性推送全部尚未推送到远程的本地标签
    • 删除远程标签
      - git tag -d 本地删除
      - git push origin :refs/tags/ 远程删除
  • 忽略特殊文件

    • 添加.gitignore,写入要忽略的文件名
    • 忽略的文件不能执行add,可用 -f 强制添加到Git
    • git add -f ignored.txt
    • 检查文件是否被忽略: git check-ignore -v ignored.txt

你可能感兴趣的:(Git操作)