Skip to content
This repository was archived by the owner on Nov 11, 2024. It is now read-only.

Latest commit

 

History

History
144 lines (139 loc) · 9.58 KB

File metadata and controls

144 lines (139 loc) · 9.58 KB

git 使用过程

git原理

Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照作一链接。
Git三种状态:working、staging、git directory
在working中git add-》staging,在使用git commit-》git directory
在working中git clone将库中的工作重新加载下来

git配置

首先在你电脑中生成SSH key(ssh keygen -t ras)将公钥复制到gitlab的SSHkey中。

  • 1Git全局变量的设置

git config --global user.name "xxx"
git config --global user.email "xxx@irobsen.com"

  • 2创建一个新的库

git clone SSH地址
cd SSH中的地址
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

  • 3存在的文件夹

cd existing_folder
git init
git remote add origin SSH地址
git add .
git commit -m "Initial commit"
git push -u origin master

  • 存在的Git库

cd existing_repo
git remote add origin SSH地址
git push -u origin --all
git push -u origin --tags

常用的git命令

  • git add
    跟踪某一个文件夹
    git add 文件名&
  • git commit
    Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!
    Git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。
    Git 还保存了提交的历史记录。这也是为什么大多数提交记录的上面都有父节点的原因。对于项目组的成员来说,维护提交历史对大家都有好处。
    现在你可以把提交记录看作是项目的快照。提交记录非常轻量,可以快速地在这些提交记录之间切换!
    git commit -m "修改内容描述"
  • git branch
    Git 的分支也非常轻量。它们只是简单地指向某个提交纪录——仅此而已。所以许多Git爱好者传颂:早建分支!多用分支!
    这是因为即使创建再多分的支也不会造成储存或内存上的开销,并且按逻辑分解工作到不同的分支要比维护那些特别臃肿的分支简单多了。
    在将分支和提交记录结合起来后,我们会看到两者如何协作。现在只要记住使用分支其实就相当于在说:“我想基于这个提交以及它所有的父提交进行新的工作。”
    $git branch //列出本地分支
    $git branch -r //列出远程分支
    $git branch -a //列出所有分支
    $git branch 分支名 //创建分支
    $git branch -m oldbranchname newbranchname //给分支重新命名
    $git branch -d branchname //删除本地分支
    $git branch -d -r branchname //删除远程分支
  • git merge
    $git merge fixes enhancements //合并两个分支到当前分支
    $git merge dev //将dev分支和当前分支合并
    $git merge --no-commit maint //不自动更新新的提交
  • git rebase
    $git rebase类似$git merge只是合并的时候并不是生成分支的共同字节的,而是在远程分支下添加
  • git pull(git fetch和git merge的缩写)
    取回远程主机某个分支的更新,再与本地的指定分支合并。一般用于远程分支领先于本地分支
    $git pull origin next:master //远程分支next和master分支合并
    $git pull origin next //远程分支next和当前分支合并
    当使用git branch --set-upstream master origin/next后,追踪远程分支,指定master分支追踪origin/next分支
    $git pull origin //将当前分支和远程next分支合并
  • git pull 发生冲突
    1.$git pull(提示有冲突)
    2.$git stash(暂存自己不一样的东西)
    3.$git pull
    4.$git stash pop stash@{0}(提示有冲突)
    5.修改自己和远程不一样的
        打开有冲突的文件
        <<<<<<<
        ...远程的...
        =======
        ...本地的...
        >>>>>>>
    根据需求进行修改
  • git fetch
    $git fetch <远程主机名> <分支名>
  • 分离HEAD
  • 相对引用~
    如果你想在提交树中向上移动很多步的话,敲那么多 ^ 貌似也挺烦人的,Git当然也考虑到了这一点,于是又引入了操作符~。
    该操作符后面可以跟一个数字(可选,不跟数字时与 ^ 相同,向上移动一次),指定向上移动多少次.咱们还是通过实际
    我使用相对引用最多的就是移动分支.可以直接使用-f选项让分支指向另一个提交.例如:
    git branch -f HEAD~n
  • 相对引用 ^ 
    所以master ^ 相当于“master的父节点”。
  • 撤销变更
    Git里撤销变更的方法很多。和提交一样,撤销变更由底层部分(暂存区的独立文件或者片段)和上层部分(变更到底是通过哪咱方式被撤销的)组成。我们
    这个应用主要关注的是后者。主要有两种方法用来撤销变更——一是git&;reset,还有就是git&revert。git&reset通过把分支记录回退几个提交记录来实
    现撤销改动。你可以将这想象成“改写历史”。git&;reset向上移动分支,原来指向的提交记录就跟从来没有提交过一样。为了撤销<更改并分享给别人,我们
    需要使用git revert。
  • 撤销git commit
    1.$git log //查看提交的SHA,即是commit后面的
    2.$git reset --hard SHA (你想撤销的push前一个)
    3.$git reset SHA
    1,2结合撤销commit并且还撤销代码修改
    1,3只是撤销commit
  • 撤销git&push
    1.$git log //查看提交的SHA,即是commit后面的
    2.$git reset --hard SHA (你想撤销的push前一个)
    3.$git push --force branch
    是否加-hard和上面一样

一般的工作流程

  • 分支介绍:
    master:主分支
    develop:开发分支
    feature:功能分支
    release:发行分支
    hotfix:补丁分支
  • 分阶段功能
    开发新功能:
    $git branch feature develop创建feature分支,在开发分支处
    $git checkout feature切换到功能分支
    功能完成后
    $git checkout develop切换到开发分支
    $git merge --no-ff feature将功能分支合并到开发分支中
    $git branch -d feature删除功能分支
    $git push origin develop放入开发库中
  • 新版本集成、准备发行
    $git branch release1.2 develop创建发行分支,在开发分支处
    $git checkout release切换到发行分支
    $./bump-version.sh 1.2(修改元数据文件中的版本,可手动操作)
    $git commit -a-m "Bumped version number to 1.2"提交到暂存态
    $git checkout master切换到主分支
    $git merge --no-ff release-1.2将发行分支合并到主分支
    $git tag -a 1.2在该主分支上打上标记
    $git checkout develop切换到开发分支
    $git merge --no-ff release-1.2将发行分支合并到开发分支
    $git branch -d release -1.2删除开发分支
  • 开发版本补丁 $git branch hotfix-1.2.1 master在master处创建补丁分支
    $./bump-version.sh 1.2.1(修改元数据文件中的版本,可手动操作)
    $git commit -a-m "Bumped version number to 1.2.1"提交到暂存态
    $git commit -m "Fixed severe production problem"提交补丁 修改 $git checkout master切换主分主
    $git merge --no-ff hotfix-1.2.1合并到主分主
    $git tag -a 1.2.1在该分支处打上标记1.2.1
    $git checkout develop切换到开发分支
    $git merge --no-ff hotfix-1.2.1将补丁分支合并到开发分支中
    $git branch -d hotfix-1.2.1删除补丁分支