乐趣区

关于git:git命令使用总结

1. git 介绍

git 是一个开源的分布式版本控制系统,用于麻利高效地解决任何或小或大的我的项目。咱们在开发和治理过程中,是应用特地频繁的一个工具。

1.1 但咱们应用 git 的个别工作流程如下:

 克隆 Git 资源作为工作目录。在克隆的资源上增加或批改文件。如果其他人批改了,你能够更新资源。在提交前查看批改。提交批改。在批改实现后,如果发现错误,能够撤回提交并再次批改并提交 

1.2 另一种开发模式,相似于 github 的开发模式:

 创立一个主仓库
每个人开发者 fork 一份开发库
开发者在本人 fork 出的代码里做开发
开发完后 pull request,期待 code review 审核合并代码
如果主仓库有更新,先 fetch,而后合并到本人的仓库里 

2. 根本应用

 在应用过程中遇到遗记的操作命令,多应用 -h 进行查看 

2.1 操作近程仓库:

origin 是默认的指向近程代码库的名称,能够更改;也能够通过增加新的指向来指定到多个近程代码库
git remote show origin 查看地方仓库信息
git remote 能够列出以后的仓库名称
git remote -v 列出以后仓库列表
git remote rm origin 删除近程仓库
git remote add origin xxx.git 增加近程仓库
git branch develop
git push -u origin develop
也能够克隆近程仓库
git clone xxxx.git
创立一个近程 devlop 分支的跟踪分支
git checkout -b develop origin/develop
git remote prune origin  删除本地的曾经在远端不存在的分支 

2.2 拉取命令

git fetch:相当于是从近程获取最新版本到本地,不会主动 merge
git fetch --all 拉取近程所有的分支
git pull:相当于是从近程获取最新版本并 merge 到本地
git push : 提交
git push -f -u origin master  // 强制提交,须要确保 master 没有被锁定
git checkout -f branchname 强制笼罩本地文件
呈现 have diverged 的状况下,解决形式:git fetch origin
git reset --hard origin/test

2.3 开发残缺命令流程

git status  查看状态
git add . 增加所有
git commit -a -m "形容"
git push 分支提交
合并到主分支
git pull origin develop  合并性能前确保 develop 分支是最新的   git fetch --all
git checkout develop
git merge some-feature  合并
git push
git branch -d some-feature   删除性能分支     

2.4 分支操作

 开发分支操作
git branch -d **** 删除本地分支
git branch -a  查看近程分支
git branch  查看本地分支
git branch test 本地创立分支
git push origin test 把分支推到近程
git push origin :br-1.0.0 删除近程版本 

2.5 文件比对

 把握 git diff 命令的重点在于,明确 Git 文件的四种状态,以及文件的所在区域。文件所在的区域有三个:工作区、暂存区、仓库。文件的流转方向是由工作区创立,add 进入暂存区,commit 进入仓库。对于曾经批改的文件,你可能想查看具体批改了哪些内容。能够用 git diff 命令
git diff  他能够用于比拟当初  工作区(未提交到暂存区 ) 与 暂存区(曾经通过 git add  和 git commit  提交了)。具体的批改变动。git diff 的比拟是从右向左。git diff 比拟暂存区与工作区文件的区别。git diff --cached 比拟仓库与暂存区文件的区别。查看某次提交的文件批改的内容
git show 某次提交的哈希值 文件名 

3. git 回退和撤销

3.1 git 回滚

 多人合作开发时,如果 git 合并不当很容易呈现代码抵触、笼罩他人代码的问题:提交程序:提交前先 add 而后 commit,而后再 git pull--> 解决合并 --> 解决了合并之后,再 commit --> 而后再 push 
git fetch --all 并不会把更新的货色在以后展示,git log 也看不到,只有执行了 git pull 之后 git log 能力看到其他人的更改
git log 查看日志
copy 曾经 commit 的回退到指定 commit_id:git reset --hard commit_id 
git push origin HEAD --force
git rebase —abort 回退到合并前
撤销本地所有批改:git reset --hard hash 或者 git checkout <sha1-of-a-commit 历史版本 >
git reset --hard HASH #返回到某个节点,不保留批改。git reset --soft HASH #返回到某个节点。保留批改
git rebase —abort 回退到合并前
git checkout . #本地所有批改的。没有的提交的,都返回到原来的状态
git stash #把所有没有提交的批改暂存到 stash 外面。可用 git stash apply 复原。

3.2 撤销文件等

// 撤销所有的曾经 add 的文件
git reset HEAD .  
// 撤销某个文件或文件夹:git reset HEAD -filename
// 撤销对所有已批改但未提交的文件的批改,但不包含新增的文件
git checkout .   
// 撤销对指定文件的批改,[filename] 为文件名   
git checkout [filename]     

4. 打 tag 相干:

 给 master 打标签
git tag -a  0.1 -m "Initial public release" master
git push --tags 或者 git push origin 0.1
// 删除本地标签:git tag -d 标签名
git push origin :refs/tags/ 标签名 

5.git 遴选

 git cherry-pick 命令的作用,就是将指定的提交(commit)利用于其余分支
 git cherry-pick <commitHash>  # 能够是多个 能够通过 git log 查看对应的 commitid
 操作步骤:在你提交的分支上 developer
 git log 失去须要合并的提交 id 例如是 f
 # 切换到 master 分支
 git checkout master
 git cherry-pick f

6. git merge 和 git rebase 的区别

Merge 命令会保留所有 commit 的历史工夫。每个人对代码的提交是各式各样的。只管这些工夫对于程序自身并没有任何意义。然而 merge 的命令初衷就是为了保留这些工夫不被批改。这样也就造成了以 merge 工夫为基准的网状历史构造。每个分支上都会持续保留各自的代码记录, 主分支上只保留 merge 的历史记录。子分支随时都有可能被删除。子分子删除当前,你可能看到的记录也就是,merge 某 branch 到某 branch 上了。这个历史记录形容基本上是没有意义的。rebase, 这个命令会始终把你最新的批改放到最前头。比方你对主 branch 进行 rebase 当前, 你的所有批改就会在主 branch 以后所有的批改之前。你会更有信念保障你的代码运行畅通无阻。通过你本人的测试当前, 你就能够释怀的把代码合并到主的 branch 外面了。
退出移动版