Git学习(一)----- 基础知识

1、Git与svn的区别
  • Git是最先进的分布式版本管理系统,服务器和每个开发人员的电脑上都拥有一个完整的代码管理仓库,进行本地的代码管理,所以Git的优点在于可以无需
联网便能进行工作,安全性要比svn高得多;
  • svn是集中式的版本管理系统,只有在中央服务器上有一个代码管理仓库,而每个开发人员用的自己的电脑进行开发,所以首先会把代码从中央服务器拉取,
并且修改后会将自己的代码推送到中央服务器,所以svn最大的缺点在于必须联网才能工作,而且如果中央服务器瘫痪,将无法工作;
2、Git的安装
  • 从官网下载安装包进行安装;
  • 当开始菜单中有Git Bash Here命令时,表示安装成功;
  • 安装完成后,在命令窗口进行配置
    git config --global user.name "Your Name"
    git config --global user.email "Your email"
3、Git进行项目管理和开发时,一般情况下,会在服务端(origin)创建一个仓库进行代码管理,仓库中会维护三大分支,包括:
  • master:只有一个,作为主分支;
  • dev:当前项目的开发分支;
  • bug/feathure:当前项目的bug分支或者新功能分支;
  • 图解:

                 

 

4、Git本地仓库的常用命令

  • pwd(显示当前git所处的目录)
  • git init(初始化git仓库,将文件变成git可以管理的仓库)
  • ls -ah(显示当前文件的.git目录)
  • 把一个git文件放到仓库只需两步
    • git add (把文件添加到暂存区)git add -A(将所有修改的文件添加到暂存区)git add .(将所有文件进行添加) git add filename(添加指定文件)
    • git commit(把暂存区的文件提交到当前分支)
  • git status(查看当前分支上面修改过的所有文件状态)
  • git diff(查看具体的修改内容)
  • git log(查看提交的最近到最远的历史纪录) git log --pretty=oneline(简化版本) git log --graph --pretty=oneline --abbrev-commit(查看分支合并图) q退出git log
  • 想回退commit的文件:git reset --hard HEAD^(版本回退) HEAD表示当前版本(相当于一个指针),HEAD^表示上一个版本,HEAD~100表示往上一百个版本
    注意:版本回退之后(过去)修改的历史纪录(现在)将清除,如果想回到现在,有两种方式:

           回退之前git log ,切勿关闭命令行,使用git reset --hard id回退到指定版本;

           git relog查看提交的id,使用git reset --hard id回退到指定版本;

  • git checkout filename(撤销工作区的修改) git reset HEAD filename(撤销已经提交到暂存区的修改,然后git checkout filename)
  • git rm filename(删除工作区文件)并且commit将文件从版本库删除 如果误删(并没有commit,那么git checkout --filename从版本库拉取)
5、Git本地与远程仓库的常用命令
  • 创建SSH Key执行命令:ssh-keygen -t rsa -C"c-wangxh@spdbdv.com" 生成路径为:C:\Users\c-wangxh2\.ssh,并将其填入GitHup;
  • git remote -v查看远程仓库地址
  • Git的分支管理
    • git checkout -b dev(创建并切换到分支) git branch -d dev(删除分支) checkout不科学,用的git switch -c dev(创建并切换到分支)
    • git branch(查看所有分支,当前分支前有*)
    • git checkout branchName(切换分支) git switch branchName(切换分支)----- 推荐使用
    • git merge dev(合并指定分支到当前分支,方式为Fast forward) git merge --no-ff -m "merge with no-ff" dev(普通模式,可以看出曾经合并的历史纪录)
    • 合并origin库的两个分支
      • 将branch1.0clone到本地的master分支上;
      • git fetch origin barnch2.0:branch2.0,从远程的origin仓库的branch2.0分支下载到本地,并新建一个branch2.0分支;
      • git merge branch2.0,将远程分支与本地master进行合并;
      • git branch -d branch2.0删除分支;
    • Bug分支
      • 首先本地有master、dev分支,由于开发暂未完成,dev无法提交,所以先进行存储git stash;
      • 创建bug分支,确定要在哪个分支上修复bug,就在哪个分支创建issue-id分支,例如在master上,则git checkout master;git checkout -b issue-001,然后修复;
      • 修复完之后,进行提交,git checkout master,git merge --no-ff -m "merge bug fix issue-001" issue-001,然后删除分支;
      • 回到工作区域继续开发:执行git stash pop,如果master上修复过的bug在当前dev分支上也存在,使用git cherry-pick commitId将bug提交的修改也复制到当前分支,避免重复劳动;
    • Feature分支-----主要进行新功能的开发(类似于Bug分支)如果还未与dev分支合并就要删除,需要使用命令git branch -D feathure强制删除;
    • 多人协作:
      •  local(master) ----- dev/bug/feathure
      • remote(master/origin)
      • 工作流程
        • git clone url(将仓库代码下载到本地,此时在master分支上)
        • 创建远程origin的dev分支到本地git checkout -b dev origin/dev 进行编码后记得add/commit
        • git branch --set-upstream-to=origin/dev dev(本地的dev分支与origin的dev分支建立连接)
        • git pull(推送之前拉取最新代码,本地合并,解决冲突)再次commit;
        • git push origin dev(推送分支,将本地分支推送给远程库对应的分支上);
        • 如果你的dev分支要合并到release:
          • git checkout release;
          • git pull;
          • git checkout dev;
          • git merge release;
            • 出现代码合并问题时:1、输入英文字母 i 进入insert模式修改提交信息;2、按Esc按钮;3、输入:wq点击回车(注意是冒号+wq)
          • 解决冲突后继续提交;
6、Git命令提交代码(思想:将开发分支上的代码提交到devBranch分支上,切换到devBranch分支,执行push命令)
  • git status(查看当前分支上修改的文件)
  • git add -A(将所有修改的文件添加到暂缓区)git add .(将所有文件进行添加) git add filename(添加指定文件)
  • git commit -m 描述(将暂存区的代码提交到devBranch分支)
  • git checkout devBranch(切换到本地的devBranch分支,他可以与origin进行联系)
  • git pull(将origin/dev的代码更新到local分支)
  • git checkout newLocalBranch
  • git rebase devBranch(将devBranch分支的最新代码合并到newLocalBranch分支上) 遇到冲突后手动解决冲突,修改完后,git add .,git rebase -continue,进行合并
  • git push origin head:refs/for/devBranch(将newLocalBranch分支代码提交到服务器

7、遇到的问题

暂无

 

 

posted @ 2020-10-19 13:14  北栀女孩儿  阅读(172)  评论(0编辑  收藏  举报