Git常用命令

Git常用命令

以前公司一直使用Svn来管理代码,分支管理比较简单,都是在master上进行开发。到了新公司后使用的是Git,由于版本发布比较频繁。所以在分支管理上也比较复杂,在使用Git的过程中整理了一些常用命令,以便需要的时候查阅

关键字

工作区,缓存区(index),版本库,工作树,track,tag

常用命令

git add .把所有修改提交到缓存区 git commit -m "注释"把缓存区的内容提交到版本库中,提交完之后,缓存区的修改和版本库一致 git log 查看commit记录,当前版本往前的多个版本 git reflog 查看当前分支所有的commit和reset记录 git rm file 在工作区删除file并提交到缓存区 git rm --cached "文件路径" 删除缓存区文件 git fetch从远程仓库中获取分支/标签

branch

git branch 查看本地分支 git branch -a 查看本地和远程所有分支 git branch -d dev 删除dev分支 git branch -D dev强制删除dev分支,即使dev分支还未被合并 git branch -vv查看所有分支的及追踪分支

checkout

git checkout branchname 切换到branchname分支 git checkout -b branchname 创建并切换到branchname分支 git checkout file 用版本库版本的file文件替换到掉工作区版本file文件 git checkout -- file 用缓存区版本file文件替换工作区版本file文件 git checkout -b dev1 origin/dev 在本地新建dev1分支,并从远程仓库origin中的dev分支检出代码并关联 git checkout head~1 将当前分支的head指针移动到head~1版本中,会导致head分离,慎用

meger

git merge dev 把dev分支合并到当前分支,如果使用ff模式合并,则会丢失部分commit信息。 git merge --no-ff dev 把dev分支合并到当前分支,并禁止使用ff模式,并

stash

git stash 将当前的工作区和缓存区保持到stash栈中 git stash list 查看stash栈 git stash pop 从stash栈的栈顶中恢复工作记录,并删除栈顶元素,缓存区的数据会被从新放到工作区 git stash apply 从stash栈的栈顶获取工作记录,但不删除栈顶元素,缓存区的数据会被从新放到工作区 git stash drop 删除stash栈的栈顶记录

reset

git reset HEAD

回退到head指定的版本commit记录;head表示分支上最新的版本,head~1表示回退到head往前一个版本;回退之后再次提交会丢失覆盖前的被回退的commit 有三个选项,分别是: --soft – 缓存区和工作目录都不会被改变 --mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响 --hard – 缓存区和工作目录都同步到你指定的提交 比如 分支的commit链表为 1,2,3,4,5;当前head指向5,执行git reset head~1 后,commint链表变成1,2,3,4;head指向4,修改文件后commit了版本5a后,得到分支链表1,2,3,4,5a;之前的版本为5的commit会丢失。 在公共分支上谨慎使用该命令 git reset head file 将缓存区的file文件同步成head执行版本,该命令不更改提交分支指针和工作区内容

revert

git revert head

回退到head执行版本的commit记录是上;head表示分支上最新的版本,head~1表示回退到head往前一个版本;回退后需要解决冲突,冲突的内容就是回退前的版本与回退后的版本不一致的内容,解决冲突后commit会在原来的分支链表上提交一个新的commit,表示回退后的版本,而不会改变提交历史。 比如 分支的commit链表表示为1,2,3,4,5;当前head执行5,执行git reset head~1后解决冲突并commit版本r1后,分支的commit链表示为1,2,3,4,5,r1

diff

git diff 比较缓存区与工作区的区别 git diff --cached 比较缓存区与版本库的区别 git diff HEAD -- readme.txt 比较工作区和版本库里面最新版本的区别 git diff local_branch 比较当前分支与local_branch分支 git diff local_branch origin/remote_branch 将本地分支local_branch与远程分支remote_branchb比较 输出入下

$ git diff
diff --git a/readme b/readme
index f7b4547..94817fd 100644
--- a/readme
+++ b/readme
@@ -1 +1,3 @@
-第一个版本
\ No newline at end of file
+第一个版本
+第二个版本
+第三个版本
\ No newline at end of file

复制代码

--- a/readme :表示变动前的版本,git diff中,表示的是缓存区版本,git diff --cached中表示版本库的版本 +++ b/readme :表示变动后的版本,git diff中表示工作区的版本,gitdiff --cached中表示缓存区的版本

remote

git remote 查看相关联的远程仓库 git remote add origin https://gitee.com/remote/git-demo.git 把当前仓库与远程仓库关联,命名为origin

push

git push [-u] origin master 把本地仓库的master分支push到远程仓库的master分支,-u参数在第一次push的时候需要带上,以关联两个分支 git push origin --delete dev 把远程仓库origin的dev分支删除 git push origin v1.0 如果v1.0是标签名,则将v1.0标签推送至远程仓库 git push origin --tags 将所有标签推送至远程仓库 git push origin :refs/tags/v1.2 如果本地v1.2标签已经被删除,则删除远程仓库v1.2标签,否则不做处理

pull

git pull origin dev 把远程仓库origin的dev拉取到当前分支

tag

git tag 查看所有标签 git tag v1.0 打一个标签,命名为v1.0 git tag -a v1.0 -m "第一个版本" 打一个标签,命名为v1.0, 描述为"第一个版本" git tag -d v1.0 删除标签v1.0 git show v1.0 查看标签v1.0的标签信息

Fetch

git fetch 获取远程仓库的更新(commit) git fetch origin master 获取origin仓库master分支的更新

Rebase

git rebase branch 把当前分支从bracnh分支checkout出来后提交的commit 作为patch保存,然后重定向到branch分支的head做为当前分支的head,然后把这些patch merge到当前分支,可能会出现conflict ,需要手动解决

转载于:https://juejin.im/post/5b1e3549f265da6e6300447b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值