初学者的很好网站:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
(1)git init 确定仓库
(2)git add 1.txt 添加到仓库
git commit -m "first commit" 提交到仓库
(3)git status 文件状态
(4)git diff 查看之间的区别
(5)git log 查看日志
git log --pretty=oneline 只显示一行的内容
前面是版本号,是经过sha1计算出来的很大的数字。
(6)git reset --hard HEAD^ 回退上一个 ###HEAD^^回退上上个,HEAD~100回退前100个。
回退的话,git reset --hard ff99 版本号没必要写全,几个就可以了。
在我的win7下写git reset --hard HEAD^无法找到,写成git reset --hard HEAD~1就可以。
当然git reset --hard 编号 也是可以的。
(7) git diff HEAD -- 1.txt
命令可以查看工作区和版本库里面最新版本的区别
(8)git checkout -- 1.txt 这个是丢弃工作区的修改
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
(9) git reset HEAD 1.txt 提交到暂存区后又返回到工作区
(10)rm 1.txt 删除工作区文件
git rm 1.txt 之后使用git commit -m "rm 1.txt" 彻底删除
如果只是删除本地地文件,那么使用git checkout -- 1.txt还是可以恢复的。
(11)分支创建与合并
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name> ##合并名为<name>的分支到当前分支
删除分支:git branch -d <name>
(12)用带参数的git log
也可以看到分支的合并情况
用git log --graph
命令可以看到分支合并图。
git log --graph --pretty=oneline --abbrev-commit
(13)git merge --no-ff -m "hebing" dev
通常,合并分支时,如果可能,Git会用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
(14)git stash 把当前的工作现场“储藏”起来。等恢复工作后使用。
git stash list 命令查看储藏在哪个位置。
$ git stash list
stash@{0}: WIP on dev: f52c633 add merge
git stash apply stash@{0}
git stash apply恢复现场,需要使用git stash drop删除存储内容。使用git stash pop直接删除不恢复。
$ git stash pop
On branch dev
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: hello.py
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
Dropped refs/stash@{0} (5d677e2ee266f39ea296182fb2354265b91b3b2a)
$ git stash list
$ git stash apply stash@{0}
(15)git branch -d dev删除
git branch -D dev 强行删除,删除之后无法修改。
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>
强行删除。
(16)查看远程库信息,使用git remote
查看更详细信息使用git remote -v
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
上面显示了可以抓取和推送的origin
的地址。如果没有推送权限,就看不到push的地址。
(17)推送分支
git push origin master 推送到主分支
git push origin dev 推送到其它分支
(18)创建标签
首先切换到需要打标签的分支上,
$ git branch
$ git checkout master
$ git tag v1.0
$ git tag v0.9 f52c633 对特定内容进行打标签,其中f52c633是commit id
还可以创建带有说明的标签,用-a
指定标签名,-m
指定说明文字:
git tag -a v0.1 -m "version 0.1 released" 1094adb
-
命令
git tag <tagname>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id; -
命令
git tag -a <tagname> -m "blablabla..."
可以指定标签信息; -
命令
git tag
可以查看所有标签。
(17) 操作标签
$ git tag -d v0.1 删除打错的标签
$ git push origin v1.0 推送标签到远程
$ git push origin --tags 一次性推送全部尚未推送的标签到远程的本地标签
如果标签已经推送到远程,然后删除远程的。首先需要删除本地的标签,然后删除远程的标签。
$ git tag -d v0.1
$ git push origin :refs/tags/v0.1
-
命令
git push origin <tagname>
可以推送一个本地标签; -
命令
git push origin --tags
可以推送全部未推送过的本地标签; -
命令
git tag -d <tagname>
可以删除一个本地标签; -
命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。