git常用命令

参考https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

常用命令总结

要查看远程库的信息:git remote

显示更详细的信息 git remote -v

抓取远程分支

git clone git@github.com:michaelliao/learngit.git

分支管理

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

检出远程分支:git checkout -b <name>   origin/<name>

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

加上--no-ff参数就可以用普通模式合并,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "merge with no-ff" dev

删除分支:git branch -d <name>

强行删除git branch -D <name>

 

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 添加到暂存区git add <file>

  2. 使用命令git commit -m <message>

查看工作区的状态 git status

可以查看工作区和版本库里面最新版本的区别git diff HEAD -- readme.txt

git push origin master 推送到远程仓库

如果推送失败,先用git pull抓取远程的新提交;

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用

git branch --set-upstream-to=origin/dev dev

 

版本回退

回退上一个版本,HEAD指向的版本就是当前版,^回退上一个版本^^回退上上个版本

git reset --hard HEAD^

回退到某次提交,通过 git log查看commit_id

git reset --hard commit_id

git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

撤销修改

就是让这个文件回到最近一次git commitgit add时的状态。

git checkout -- readme.txt

如果已经git add到暂存区了

git reset HEAD <file>可以把暂存区的修改撤销掉(unstage)

删除文件

git rm test.txt

bug分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

git stash

git stash list命令看看

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了

变基

rebase操作可以把本地未push的分叉提交历史整理成直线;

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

标签管理

git tag <name>

git tag v1.0

默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,方法是找到历史提交的commit id,然后打上就可以了

标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签

创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 1094adb

git tag查看所有标签

git show <tagname>查看标签信息

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,git push origin <tagname>

一次性推送全部尚未推送到远程的本地标签

git push origin --tags

先删除本地标签

git tag -d v0.1

从远程删除。删除命令也是push,但是格式如下:

$ git push origin :refs/tags/v0.9

打包
导出最新的版本库  git archive -o  ../lastest.zip HEAD
导出某次指定提交  git archive -o  ../lastest.zip  77bbea
导出指定目录  git archive -o ../src.zip HEAD:Documentation/
导出某个分支   git archive --format zip --output master.zip master
导出最近一次提交 git archive -o ../lastcommit.zip HEAD $(git diff --name-only HEAD^)
导出某次提交到某次提交  
git archive -o ./latest.zip NEW_COMMIT_ID_HERE $(git diff --name-only OLD_COMMIT_ID_HERE NEW_COMMIT_ID_HERE)
解释下:NEW_COMMIT_ID_HERE 是某次提交的commit id, OLD_COMMIT_ID_HERE 是某次提交之前的提交的commit id.

忽略文件
方式1:
  1.在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去
   2.最后一步就是把.gitignore也提交到Git,就完成了!
如果你确实想添加gitignore忽略的文件到git仓库,可以用-f强制添加到Git:
$ git add -f App.class

方式2:( 不经常使用,可用于对方法1的补充 )

在使用方法1时,有时会发现 ,部分文件无法被忽略,这种情况下可使用以下方法进行忽略操作。

执行命令将 main.go 加入不提交队列

git update-index --assume-unchanged main.go

执行命令将 main.go 取消加入不提交队列

git update-index --no-assume-unchanged main.go

如何查看未追踪文件
git status --untracked-files=all

其他问题
如果push遇到在输入密码是熟错后,就会报这个错误fatal: Authentication failed for
解决办法:
git config --system --unset credential.helper

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值