Loading

git学习

以下内容学自:Git教程

本地基础操作

  1. pwd 命令可以显示当前的目录。

  2. 通过 git init 命令把当前的目录变成Git可以管理的仓库。

  3. git add <filename> 把文件添加到仓库。

  4. git commit -m <event>

  5. 通过 git status 命令查看当前仓库状态。

  6. git differ <filename> 可以查看修改了什么内容。

  7. git log 可以查看 commit 的历史记录。

  8. git reset --hard HEAD~n n是倒回第几个历史版本。可以将当前版本回退到倒数第n个版本。

    git reset --hard <commit_id> 可以回退到指定的 commit_id 的历史版本。

  9. cat <filename> 可以查看 filename 的内容。

  10. git reflog 可以查看操作的记录。


示意图

  • git init 之后那个目录就是工作区。

  • git add 就是把修改放到 stage (暂存区)当中。

  • git commit 之后放在暂存区的修改就全部提交到分支。


  1. git checkout -- <filename> 可以用在工作区的文件修改后还没提交到暂存区,使用这个命令可以撤销掉工作区的修改,回到和版本库一模一样的状态。
  2. git reset HEAD <filename> 可以把暂存区的修改撤销掉,重新放到工作区。
  3. git rm <filename> 可以从版本库删除文件,执行完这个还要执行 commit 提交才可以删除版本库的文件。

远程仓库

  1. 要关联一个远程库。

    使用命令git remote add origin git@server-name:path/repo-name.git

    server-namegithub.compath 是Github账号。repo-name 是仓库名。

  2. 将本地的更新同步到远程仓库。

    • git push -u origin master
      origin 是远程库的名称。
    • 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
    • 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    • 之后只要本地作了提交就可以使用 git push origin master 把本地 master 分支的最新修改推送至Github。
  3. 将远程仓库克隆到本地。

    git clone git@server-name:path/repo-name.git

    会将目标克隆到当前目录。


分支管理

  1. git branch <name> 创建分支。

  2. git checkout <name> 切换分支。

  3. git checkout -b <name> 表示创建并切换分支。

  4. git branch 查看当前分支。

  5. git merge <name> 合并分支。

  6. git branch -d <name> 删除分支。

  7. 处理冲突

    • 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    • git log --graph命令可以看到分支合并图。
  8. 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
    如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

  9. 当手头工作没有完成时,先把工作现场git stash一下,保存现场。

    • git stash apply 恢复现场
    • git stash drop 删除stash。
    • git stash pop 恢复现场并删除stash。
    • git stash list 可以查看所有的stash。
    • 有多个stash的时候,可以使用git stash apply <stashname> 恢复指定的stash。
  10. 如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

  11. 多人合作

    • 查看远程库信息,使用git remote -v
    • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
    • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
    • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
    • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
    • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签管理

git的tag绑定了commit,可以说是ip和域名的关系。

创建标签

  1. 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  2. git tag -a <tagname> -m "blablabla..."可以指定标签信息;
  3. git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
  4. 命令git tag可以查看所有标签。

操作标签

  1. 命令git push origin <tagname>可以推送一个本地标签;
  2. 命令git push origin --tags可以推送全部未推送过的本地标签;
  3. 命令git tag -d <tagname>可以删除一个本地标签;
  4. 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
posted @ 2017-07-20 08:49  Shadowdsp  阅读(468)  评论(0)    收藏  举报