Git基础

Git管理代码的架构###

Git采用分布式管理控制系统,没有中央服务器,每个人的电脑上都有一个完整的版本库,不需要联网就可以工作,只需要将各自的修改推送给对方(有一台充当“中央服务器”的电脑,为了方便交换修改。)

特点:不需要联网,安全性高,速度快

而相比于Git,CVS/SVN都采用集中式版本控制系统,每次需要从中央服务器获取最新的版本,干完活后再把更新后的版本推送到中央服务器,因此每次工作必须联网,且工作效率受到带宽的限制。

特点:需要联网,安全性低,速度慢

Git常用命令###

  • 创建版本库
    • mkdir learngit
    • cd learngit
    • git init
  • 添加文件(文件放在learngit目录或其子目录下)
    • git add readme.txt (进暂存区)
    • git commit -m "description" (进分支)注意每次commit最好写上描述方便以后知道每个版本的含义
  • 随时掌握工作区的状态
    • git status
  • 查看修改了什么内容
    • git diff readme.txt
  • 修改后提交
    • git add readme.txt
    • git commit -m "description"
  • 查看历史版本
    • git log --pretty=oneline
  • 回到上一版本
    • git reset --hard HEAD^
  • 去到任意版本
    • git reset --hard commit-id
  • 查看历史操作
    • git reflog
  • 撤销修改
    • git checkout -- file 到上一次add或commit的版本
    • git reset HEAD file 撤回到到工作区 git checkout -- file 丢弃修改
  • 删除
    • git rm test.txt
    • git commit
  • 将本地库与远程库关联
    • git remote add origin git@github.com:server-name/learngit.git
  • 推送修改
    • git push -u origin master(第一次) 将本地的推送到远程库
    • git push origin master
  • 克隆仓库
    • git clone
  • 从远程抓取分支
    • git pull
  • 创建并切换分支
    • git checkout -b dev
  • 查看分支合并情况
    • git log --graph --pretty=oneline --abbrev-commit
  • 查看分支
    • git branch
  • 合并指定分支到当前分支(得先切换到合并分支)
    • git merge dev
  • 删除分支
    • git branch -d dev
  • 多人协作:

常见问题汇总###

  1. 回退到之前版本后再次提交需要注意,若直接提交将会脱离之前的轨迹,别人在此分支上也找不到之后提交的版本,应该新建一个分支提交后将之前的分支合并到新分支上,解决冲突后再提交,最后删除原来分支,这样既保留了原来的版本,也将新版本和原版本都合并到了一个分支上。
  2. merge和rebase的区别
    若远程分支和本地分支各有两次最新的提交
    • merge:将两个分支上的东西合并,结果看起来像一个新的“合并的提交”。
    • rebase:先将mywork中的每个提交都取消,并将它们临时保存为补丁(放在".git/rebase"目录中),然后把mywork分支更新为最新的origin分支,最后把保存的这些补丁应用到mywork分支上。
    • 当mywork分支更新以后,它会指向新创建的提交,老的提交会被丢弃,如果运行垃圾收集命令,这些被丢弃的提交就会被删除。
    • 当我们使用Git log来参看commit时,其commit的顺序也有所不同。
    • 假设C3提交于9:00AM,C5提交于10:00AM,C4提交于11:00AM,C6提交于12:00AM
    • 对于使用git merge来合并所看到的commit的顺序(从新到旧)是:C7,C6,C4,C5,C3,C2,C1
    • 对于使用git rebase来合并所看到的commit的顺序(从新到旧)是:C7,C6,C5,C4,C3,C2,C1
原文地址:https://www.cnblogs.com/LeonNew/p/5274581.html