FEX

让web开发更迅速、简单。

您的位置:首页 - 经验总结列表 - 经验总结详情

Git 基本命令和操作

2018-08-03 09:38:39

  1. 填写用户名和邮箱作为标识:

    • git config --global user.name "xxx"
    • git config --global user.email "xxx"
  2. 创建一个版本库:

    • 自定义版本库地址,如 F:盘下新建一个 git 文件夹
    • 通过命令 git init 把这个目录变成 git 可以管理的仓库。
  3. 把文件添加到版本库(分支):

    • 使用命令 git add filename 把项目添加到暂存区。
    • 使用命令 git commit -am "版本备注" 告诉 git,把文件提交到仓库。
    • 命令 git status 查看是否还有没有提交的文件。
    • 命令 git diff filename 查看文件修改了什么内容。
    • 命令 git log 或 git log --pretty=oneline 查看历史记录。
  4. 版本回退

    • git reset --hard HEAD^(上一个版本)
    • git reset --hard HEAD^^(上上个版本)
    • git reset --hard HEAD~100(上 100 个版本)
  5. 版本回退到最新

    • git reset --hard 版本号
    • 获取版本号:git reflog
  6. 工作区和暂存区:

    • 工作区:除.git 目录外,版本库(.git)上一级目录下的所有文件属于工作区。
    • 版本库(repository):隐藏目录.git 是版本库,版本库里面最重要的是 stage(暂存区),还有 git 为我们自动创建的第一个分支 master,以及指向 master 的一个 HEAD。
    • 用 git 提交文件到版本库有两步骤:
      • git add 把文件添加到暂存区。
      • git commit 提交更改,是把暂存区的所有内容提交到当前分支上。
  7. Git 撤销修改和删除文件:

    • 撤销修改:

      • 手动删掉,再 add 和 commit 一下。
      • git reset --hard HEAD^恢复版本
      • git checkout -- filename(--很重要,没有的话就变成了创建分支了)把文件在工作区做的修改全部撤销:
    1. 情况一:修改后,还没有放到暂存区(add 前做的修改),可用撤销修改回到和版本库一模一样的状态。
    2. 情况二:已经放进暂存区,才做的修改(add 后做的修改),撤销修回到添加暂存区后的状态。
      • 删除文件:
        • 直接在目录上手动删除。
        • 使用命令:rm filename
  8. 远程仓库设置:

    • 第一步:先注册 github 账号,本地 Git 仓库和 github 仓库之间的传输是通过 SSH 加密的,所以要设置:
      • 创建 SSH Key。查看用户主目录是否存在.ssh 目录,和.ssh 目录下的 id_rsa(私钥)和 id_rsa.pub(公钥)。如果没有,运行:ssh-keygen -t rsa -C "lhb2438@163.com"
    • 第二步:登陆 github->Settings->SSH keys->Add SSH key->Title(自定义)->key(id_rsa.pub 的内容)->Add key 命令:ssh-keygen
    •  
  9. 添加远程仓库:

    • 登陆 github->create a new repository->填写 Repository name->Create repository
    • 根据提示,在本地仓库运行命令:
      • git remote add origin +github 地址
    • 把本地的仓库推送到远程,git push 命令(实际上是把分支 master 推送到远程):
      • git push -u origin master(第一次推,加上 u 参数,可以把本地的 master 分支和远程的 master 分支关联起来,以后可以不用)
    • 远程仓库完成,以后只要本地作了提交,就可以通过如下命令:
      • git push origin master 把本地的 master 分支的最新修改推送到 github 上了。
    • 从远程仓库克隆:
      • 创建一个远程仓库,用于克隆(测试案例用)
      • 用 git clone 命令克隆到本地:git clone +github 的地址(https://github.com/name/project)
    •  
  10. 创建与合并分支:

    • 创建并切换分支:git checkout -b name(-b 表示创建并切换)
      • 上面的命令相当于下面两条:
    1. git branch name
    2. git checkout name
      • 查看分支:git branch
        • 带星号为当前分支
      • 合并指定分支到当前分支:git merge name
      • 删除分支:git branch -d name
      • 总结创建与合并分支命令如下:
        • 查看分支:git branch
        • 创建分支:git branch name
        • 切换分支:git checkout name
        • 创建+切换:git checkout -b name
        • 合并某分支到当前分支:git merge name
        • 删除分支:git branch -d name
      • Fast forward 合并分支模式下,删除分支会丢失分支信息,禁用 Fast forward 模式合并分支:--no-ff 参数
        • git merge --no-ff -m "注释" name
      • 通过 git log --graph --pretty=oneline --abbrev-commit 查看被删除的分支(记住被删除分支的版本号)
  11. bug 分支:

    • git stash 隐藏工作现场
    • git stash list 查看隐藏的工作现场
    • 恢复 stash 内容:git stash apply
    • 删除 stash 内容:git stash drop
    • 恢复的同时,把 stash 内容也删除:git stash pop
  12. 多人协作:

    • 从远程库克隆的时候,git 自动把本地的 master 分支和远程的 master 分支对应起来,远程库的默认名称是 origin:
      • 查看远程库信息,使用 git remote
      • 查看远程库信息,git remote -v 删除远程主机:git remote remove origin (git remote -h 帮助)
    • 推送分支:git push origin name
    • 抓取分支(记住要先把 SSH key 添加到 githu- :
      • git clone 远程库地址
    • 创建远程 origin 的 githubName 分支到本地:
      • git checkout -b localName origin/githubName
      • 这样就可以在 localName 做开发了,开发完成后把 localName 分支推送到远程库:git hub origin localName
      • 冲突解决:用 git pull 把冲突内容抓下来-本地合并-再推送。
    •  
  13. Git 基本常用命令如下:

    • git init:把当前的目录变成可以管理的 git 仓库,生成隐藏.git 文件
    • git add xx:把 xx 文件添加到暂存区。
    • git commit -m "xx":提交文件到分支,-m 后面的是注释、-a 所有。
    • git status:查看仓库状态。
    • git diff xx:查看 xx 文件修改了哪些内容。
    • git log:查看历史记录。
    • git reset --hard HEAD^或 git reset --hard HEAD~:回退到上一版本。
    • git reset --hard HEAD~n:回退到上 n 个版本
    • cat xx:查看 xx 文件内容。
    • git reflog:查看历史记录的版本号 id。
    • git checkout --xx:把 xx 文件在工作区的修改全部撤销。
    • git rm xx:删除 xx 文件。
    • git remote show 主机名:查看该主机的详细信息。
    • git remote add origin (主机)+地址:关联远程库(远程主机)。-v:查看远程主机网址。
    • git push -u(第一次要用-u) origin master:把当前 master 分支推送到远程库。
    • git clone +地址:从远程库中克隆。-o:命名
    • git fetch +远程主机名:取远程主机的全部更新。
    • git fetch 主机名 分支名:取远程主机特定分支的更新
    • git pull 远程主机名 远程分支名:本地分支名:抓取远程某分支的更新。
    • git checkout -b xx:创建 xx 分支并切换到 xx 分支。
    • git branch 查看当前所有的分支。(查看不了远程分支时,可以执行 git fetch 更新远程分支索引)
    • git checkout master:切换回 master 分支。
    • git merge xx:在当前分支上合并 xx 分支。或者:git rebase xx。
    • git branch -D xx:删除 xx 分支。-a 查看所有分支,-r 查看远程分支。
    • git branch name:创建分支。
    • git stash:把当前的工作隐藏起来,等以后恢复现场后继续工作。
    • git stash list:查看所有被隐藏的文件列表。
    • git stash apply:恢复被隐藏的文件,但是内容不删除。
    • git stash drop:删除文件
    • git stash pop:恢复文件的同时,也删除文件
    • git remote:查看远程库的信息。
    • git remote -v:查看远程库的详细信息。
    • git push origin master: git 会把 master 分支推送到远程库对应的远程分支上。
  14. Git 远程操作:

    • Git clone
      • git clone 版本库地址:克隆版本库。(地址一般用 SSH 协议)-o:指定主机名。
      • git clone 版本库地址 本地目录名。(如果不指定本地目录名,则与版本库同名)。
    • Git remote:管理主机名
      • git remote:列出所有远程主机。
      • git remote -v:查看远程主机网址。
      • git remote show 主机名:查看该主机的详细信息。
      • git remote add 主机名 网址:添加远程主机。
      • git remote rm 主机名:删除远程主机。
      • git remote rename 原名 新名:修改远程主机名。
    • Git fetch:取回远程主机的版本库更新。
      • git fetch 远程主机名:将远程主机的更新全部取回本地。
      • git fetch 远程主机名 分支名:取回特定分支的更新。
      • git merge 主机名/分支名:在本地分支上合并远程分支。或者:git rebase xx
    • Git pull:取回远程主机某分支的更新,再与本地分支合并。
      • git pull 远程主机名 远程分支名:本地分支名:取回远程主机某分支的更新。
      • git pull 远程主机名 远程分支名:取回远程主机某分支的更新,并与本地合并(相当于 git fetch+git merge)
      • git pull -p:在本地删除远程已经删除的分支。等同于:git fetch --prune origin +git fetch -p
    • Git push:将本地分支的更新推送到远程主机。
      • git push 远程主机名 本地分支名:远程分支名。
      • git push 远程主机名 本地分支名:将本地分支推送到与之存在“追踪关系”的远程分支,远程分支不存在则新建。
      • git push origin :master:省略了本地分支,表示删除指定的远程分支。(相当于推了一个空的过去)等同于 git push origin --delete master。
      • git push -u origin master:指定一个默认的主机。(第一次使用)
      • git config --global push.default matching 或 git config --global push.default simple:修改 push 方式。
      • git push --all origin:不管远程是否存在对应的远程分支,将本地的所有分支都推送到远程主机。
    •  
  15. 远程主机已存在解决办法: 1.删除远程主机:git remote rm origin 再重新添加:git remote add origin 地址 2.修改 gitconfig: vi .git/config

  16. 删除暂存区或分支上的文件,但本地需要继续使用,不被版本控制 git rm --cached file_path git commit -am 'xxx' git push xxx

  17. 基于远程分支创建本地分支 git checkout -b 本地分支 远程分支 21.将其他分支的 commit 添加到当前分支(空格分开) git cherry-pick commitID1 commitID2 …

    git tag——标签相关操作 标签可以针对某一时间点的版本做标记,常用于版本发布 1.列出标签

    • git tag 在控制台打印出当前长裤的所有标签

    • git tag -l “v0.1.xx” 搜索符合模式的标签 2.打标签 git 标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立的对象。建议使用附注标签。

    • git tag v0.1.2 -light :创建轻量标签(不需要传递参数,直接制定标签名即可)

    • git tag -a v0.1.2 -m “0.1.2 版本” :创建附注标签(参数 a,指定标签类型,参数 m 制定附注标签名) 3.切换标签

    • git checkout [tagname]:切换标签 4.查看标签信息

    • git show [tagname]:查看标签版本信息 5.删除标签:误打或需要修改标签时,需要先将标签删除,再打新标签

    • git tag -d tagname :删除标签 6.给制定的 commit 打标签

    • 打标签不必要再 head 之上,也可以在之前的版本上打,这需要你知道某个提交对象的校验和(通过 git log 获取)

    • git tag -a tagname commit:补打标签 7.标签发布 通常 git push 不会将标签对象提交到 git 服务器,我们需要进行显式的操作:

    • git push origin tagname :将 tagname 标签提交到 git 服务器

    • git push origin -tags:将本地所有标签一次性提交到 git 服务器 8.看之前某个标签状态下的文件

    • git tag :查看当前分支下的分支

    • git checkout tagname :此时会指向打 tagname 标签的代码状态(但现在处于一个空的分支上)

    • git diff 可以查看当前没有 add 的内容修改(不在缓冲区的文件变化)

    • git diff --cached 查看已经 add 但没有 commit 的改动(在缓冲区的文件变化)

    • git diff HEAD 是上面两条命令的合并