0%

git使用指南

git命令

  • 初始化一个git目录git init

  • 添加单个文件到暂存区 git add <file>

  • 添加所有文件到暂存区 git add .

  • 添加文件到本地仓库 git commint -m <message>

  • 查看git仓库状态 git status

  • 查看工作区和暂存区的的差异 git diff <file>

  • 查看暂存区和本地仓库的差异 git diff --cached

  • 查看工作区和本地仓库的差异 git diff HEAD -- <file>

  • 场景1:当在工作区修改了某个文件,但还没add,使用git checkou -- <file>可以丢弃修改

  • 场景2:当修改了某文件,还add到了暂存区,使用git reset HEAD <file>就回到了场景1继续即可

  • 场景3:修改文件并commit到版本库,想撤销本次提交,使用git reset --hard commit_id

  • commint_id是由SHA1计算而来,使用十六进制表示。显示从最近到最远的日志 git log

  • 显示简洁版日志 git log --pretty=online

  • 显示分支合并图 git log --graph --pretty=oneline --abbrev-commit

Git中HEAD表示当前版本,上一版本是HEAD^,上上版本是HEAD^^,往上100个版本是HEAD^100

  • 查看命令历史git reflog

  • 使用git rm <file>可以删除一个文件,然后commit到版本库即可

远程仓库

  • 生成公钥 ssh-keygen -t rsa -C "771662863@qq.com",在.ssh目录下生成私钥id_rsa和公钥id_rsa.pub两个文件

  • 关联一个远程仓库 git remote add origin git@server-name:path/repo-name.git

分支管理

  • 查看分支 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 branch -D <name>强行删除

暂存本地修改

  • 当正开发时,需要修复一个线上bug,使用git stash暂存工作现场,然后切换分支去修复,修复完后再git stash pop,可以回到工作现场

  • 在master分支修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit_id>命令,把bug提交的修改“复制”到当前分支,避免重复劳动

多人协作

  1. git push origin <branch-name>推送自己的修改

  2. 如果推送失败,则因为远程分支比本地更新,需要先用git pull试图合并

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功

  5. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用git branch --set-upstream-to <branch-name> origin/<branch-name>

  • 查看远程库的信息git remote
  • 查看远程库详细信息 git remote -v
  • 在本地创建和远程分支对应的分支,使用git checkout -b <branch-name> origin/<branch-name>,本地和远程分支的名称最好一致

Rebase

  • git rebase操作可以把本地未push的分叉提交历史整理成直线;rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

  • git pull --rebasepull的同时rebase

标签

  • 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id

  • 命令git tag -a <tagname> -m "message"可以指定标签信息

  • 命令git tag可以查看所有标签

  • 命令git push origin <tagname>可以推送一个本地标签;

  • 命令git push origin --tags可以推送全部未推送过的本地标签;

  • 命令git tag -d <tagname>可以删除一个本地标签;

  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签

GIT相关网站