命令

git status 查看工作区状态

git diff 查看改动部分

git add 添加文件到工作区

git add -A表示添加所有内容 

git add .表示添加新文件和编辑过的文件不包括删除的文件

git add -u 表示添加编辑或者删除的文件,不包括新添加的文件

git commit 提交工作区内容至github服务器

git commit -m "你的注释"

git log 查看之前提交的版本快照

git的时光机 在git中HEAD表示当前版本,那么上一个版本为HEAD^,上上个版本为HEAD^^,但过多情况下比如HEAD100表示为HEAD~100

git reset --hard HEAD^ 返回上一个版本

git reset --hard "版本号id" 返回下面第N个版本

git reflog 记录你的每一次命令

git checkout --文件名 未提交到工作区,撤回该文件操作

其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

git reset HEAD 文件名 提交工作区后,撤回工作区操作


场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。


$ git remote add origin git@github.com:michaelliao/learngit.git 关联git

$ ssh-keygen -t rsa -C"youremail@example.com" 建立sshkeys

内容推送至远程仓库

$ git push -u origin master

内容克隆

$ git clone git@github.com:michaelliao/learngit.git 关联git

切换dev分支

$ git checkout -b dev 命令加上-b参数表示创建并切换


git branch 命令查看当前分支

$ git merge dev 合并分支

$ git branch -d dev 删除分支dev


创建并切换到新的dev分支,可以使用:

$ git switch -c dev

直接切换到已有的master分支,可以使用:

$ git switch master


合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并


$ git stash可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:

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

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

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


同样的bug,要在dev上修复,我们只需要把4c805e2 fix bug 101这个提交所做的修改“复制”到dev分支。注意:我们只想复制4c805e2 fix bug 101这个提交所做的修改,并不是把整个master分支merge过来。

为了方便操作,Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支:

$ git branch

* dev  

master

$ git cherry-pick 4c805e2

[master1d4b803] fix bug101

1file changed,1insertion(+),1deletion(-)


开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看:

$ git branch* master

现在,你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支:

$ git checkout -b dev origin/dev

推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

$ git pullThere is no tracking informationforthe current branch.Please specify which branch you want to mergewith.See git-pull(1)fordetails.    git pull If you wish to set tracking information for this branch you can do so with:    git branch --set-upstream-to=origin/dev

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

$ git branch--set-upstream-to=origin/dev devBranch 'dev'setuptotrack remote branch'dev'from'origin'.

再pull:

$ git pullAuto-merging env.txtCONFLICT(add/add):Mergeconflictinenv.txtAutomaticmerge failed; fix conflictsandthencommit the result.


查看远程库信息,使用git remote -v;

本地新建的分支如果不推送到远程,对其他人就是不可见的;

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

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

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。


敲命令git tag <name>就可以打一个新标签:

$ git tag v1.0

add merge这次提交打标签,它对应的commit id是f52c633,敲入命令:

$ git tag v0.9f52c633

命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;

命令git tag可以查看所有标签。


命令git push origin <tagname>可以推送一个本地标签;

命令git push origin --tags可以推送全部未推送过的本地标签;

命令git tag -d <tagname>可以删除一个本地标签;

命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1,查看所有远程分支:%git branch -r 2, 拉取远程分支并创建本地分支git checkout -...
    will666阅读 6,306评论 0 18
  • git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git b...
    猿万阅读 10,646评论 1 45
  • 原文出处:涂根华的博客 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最...
    挑战者666888阅读 9,937评论 6 27
  • 安装git: 创建版本库: 因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如: git ...
    米刀灵阅读 1,819评论 0 0
  • 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git c...
    LOVE_晴天阅读 6,846评论 0 10

友情链接更多精彩内容