Git 教程

详见 《廖雪峰Git教程》

git和svn区别

详见 git和svn区别

绑定远程仓库

绑定远程仓库

$ git config --global user.name "zhangsan"
$ git config --global user.email "zhangsan@qq.com"

ssh key(rsa加密)

  1. 检查 cd ~/.ssh默认目录: C:\Users\specter.ssh

  2. 生成公钥和私钥 $ ssh-keygen -t rsa -C "zhangsan@qq.com"

  3. github粘贴公钥

创建版本库

  1. 初始化一个Git仓库,使用git init

  2. 添加文件到Git仓库,分两步

    • 第一步,使用git add <file>,可重复添加多个文件
    • 第二步,使用git commit完成

git是不能管理空的文件夹的

版本回退

  1. 掌握工作区的状态,使用git status

  2. 使用git diff查看修改内容

HEAD指向当前版本,版本间穿梭使用git reset --hard <commit_id>

  1. 使用git log查看提交历史

  2. 使用git reflog查看命令历史

工作区和版本库

三大区

工作区有一个隐藏目录.git是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

分支管理

  1. 使用git branch查看当前分支

  2. 使用git checkout master切换会主分支

  3. 使用git merge dev合并分支,使用git branch -d dev删除合并的分支

  4. 使用git log --graph查看分支合并图

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并; 而默认fast forward合并就看不出来曾经做过合并

多人协助

  1. 推送之前需要先用git pull获取更新

  2. 错误提示“no tracking information”,说明本地分支和远程分支的链接关系没有建立。git branch --set-upstream <branch> origin/<branch-name>

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

  4. 解决掉冲突后,再用git push origin <branch>推送

标签管理

  1. 使用git tag <tag_name>默认HEAD上,使用git tag查看所有标签

  2. 使用git tag <tag_name> <commit_id>提交到指定的commit上

  3. 使用git tag <tag_name> <commit_id>提交到指定的commit上

  4. 使用git tag -a <tag_name> -m ""

本地 => 远程

  1. 本地新建一个git仓库git init

  2. 初始化本地git仓库git add . git commit -m ""

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

  4. 第一次推送master分支的所有内容到远程git push -u origin master

  5. 以后推送git push origin master

远程 => 本地

  1. cd相关根目录下

  2. 克隆git clone git@server-name:path/repo-name.git