git 基本命令

认识git / github / SVN 是什么?

girgit : 版本控制工具
github : 程序员交友网站、存储代码、私有的域名空间

SVN:集中式版本控制:

需要连网的,一旦网络中断是不能进行版本控制的
基本上是公司内容才能访问的
非常依赖于中央服务器,一旦服务器挂了所有资源都洗白白。

GIT介绍:

分布式管理
git本身最大的优势就在于不需要网络就能进行版本控制
github算是一个大型的中央服务器,并且很健壮,可以进行代码的远程仓库管理,给你一个免费的域名可以使用静态的页面

使用:

1.申请github账号
2.每台计算机中有秘钥

获取秘钥:

ssh-keygen -t rsa -C "注册邮箱"
上github->settings->SSH and GPG keys 进行绑定
ssh -T git@github.com 有Hi....就说明绑定成功

设置贡献者信息:

git config --global user.name "名字"
git config --global user.email "自己邮箱"
git config --list 查看配置

如何创建项目(版本)

1、git init(无网络的情况下)
2、在github上创建项目(记得勾选 README)
cd 路径就能进入目录
cd ..回退上层目录

克隆项目、日常操作命令:

  1. git clone 地址 (如果需要改项目文件夹的名字可以:git clone 地址 newName
  2. npm install(一般都需要这一步,下载依赖 node_modules )
    查看下级目录有哪些:ls || ll
    查看状态:git status
    工作区到暂存区:git add 文件名
    批量: git add .
    暂存区到版本区:git commit -m "注释"
    快速从工作区到版本区(要先走一遍工作区到暂存区再到版本区):git commit -a -m "注释"
    跳过安全检查提交 commit (报错:× npm run lint-staged:js found some errors. Please fix them and try committing again.),解决:git commit --no-verify -m "提交时的注释"
    查看版本:
      git log 查看历史版本
      git log -p 查看修改的细节信息
      git reflog 操作的记录
    撤销: git reset --hard 版本号
    退出 : q
    上下键去翻刚才输入的命令:↑ 、↓
    上传:git push origin master
      注意:上传之前需要拉取最新的代码 git pull origin xxx
      正确的顺序:
        git add .
        git commit -m "zjl"
        git pull origin dev (若有冲突,解决完,重复上述步骤)
        切刀dev分支上,先 pull 再 git merge zjl 再 git push origin dev
        git cheackout zjl 完成之后切回自己的分支
    查看每个区域之间的差异:
      工作区查暂存区:git diff
      暂存区查版本区:git diff --cached
      工作区查版本区:git diff master

————————————————————————————————————

分支

git分支:
  git branch 查看分支
创建分支:
  git branch 分支名
切换分支
  git checkout 分支名
合并分支
  git merge 分支名
在合并的时候,容易发生冲突,这个时候人为手动把冲突解决,然后再次提交版本
就解决了冲突。
  git branch --merged (查看当前主干上有多少个分支已经合并)
  git branch --no-merged (查看没有合并的分支)
  git branch -d 分支名 (合并完分支后删除)
  git branch -D 分支名 (强制删除没有合并的分支)
  git branch --all 查看所有分支
  git checkout 加分支名,下载分支。
拉取分支:
  git pull -a
  有些情况下无法使用 git branch --all 查看到需要的分支,(可能是该分支为空分支),此时可以使用 git pull -a

查看当前的git分支是基于哪个分支创建的:

  1. 在命令行,切换到要查询的分支下
  2. 输入:git reflog --date=local --all

————————————————————————————————————

经验总结:

  1. 用过了就知道了,一次git pull = git fetch + git merge
      fetch和push命令可以分别对远程分支进行fetch和push操作,而pull不是直接跟远程分支对话的。
      fetch同pull的区别在于:git fetch:是从远程获取最新版本到本地,不会自动merge
      而git pull是从远程获取最新版本并merge到本地仓库
      从安全角度出发,git fetch比git pull更安全,因为我们可以先比较本地与远程的区别后,选择性的合并。
      git push 默认推送到master。

  2. 远程分支和本地分支(两个不同的分支)同名时,拉取了远程的zjl,造成很大的冲突。
      解决:如果之前的分支不再需要可以删除。
        1.先回滚到之前的版本(git commit -m '')之后生成的版本号
        2.删除远程不需要的分支。
        删除远程分支:git push origin --delete zjl
        删除本地分支:git branch -d zjl
        查看所有分支:git branch -a
        回滚: git reset --hard [445fc20e]<--版本号
        查看版本: git reflog

  3. 提交代码的流程:
        1.git add . (工作区到暂存区)
        2.git commit -m 'xxxxx' (暂存区到版本区)
        3.git pull origin zjl (拉取远程的代码,一般不需要)
        4.git push origin zjl (提交暂存区的代码到远程)
        5.git checkout dev (切换到总分支上)
        6.git pull origin dev (拉取一下可能变更过的代码)
        7.git merge zjl (合并上我自己的代码)
        8.如果有冲突要解决一下,解决完了再 git add . git commit -m 'xxxx' git push origin dev

  4. 修改远程地址
        git remote set-url origin + 新地址
        git remote set-url origin http://code.xxx/com.cn/...git

  5. git rebase(变基) 和 git merge 和
        git merge dev:合并 dev 上的代码,适用于公共分支,比如:master、dev
        git rebase dev:合并 dev 上的代码,保持整个分支树的完美线性,减少 commit 次数。适用个人分支
        git pull = git fetch + git merge

posted @ 2019-10-31 09:30  真的想不出来  阅读(364)  评论(0编辑  收藏  举报