git命令使用总结

Posted 森。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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里面了。


 





以上是关于git命令使用总结的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

Git经常使用命令总结

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

git个人使用总结(命令版)

干货收藏!总结常用 Git 命令清单