1.pwd 可以看到你当前处于哪个文件夹
2.ls 可以看到你当前文件夹有什么其他的文件和文件夹
3.cd 进入你输入的文件夹 例如 cd git/ cd ~/git
4.git init 在当前文件夹中创建本地仓库
5.git status命令可以看到仓库的状态
6.git diff 看到仓库修改文件究竟作了哪些修改
7.git add + filename 添加文件或文件夹到暂存区
8.git commit -m "说明" 添加到当前分支
9.git log 看到历史纪录,历史的哈希值可以看到
10.一般使用 git log --graph --pretty=oneline --abbrev-commit 看得比较清楚
11.git reset --hard HEAD~ 回上一个版本 git reset --hard commit id (哈希值)可以直接回到那个版本
12.git reflog 也可以看到每次命令
13.git checkout -- filename 是将该文件在工作区的修改全部撤销,这里有两种情况:
一种是filename自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是filename已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
14.git reset HEAD file-当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,命令git reset HEAD file就回到13.
15.rm + filename 一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了。
16.git rm + filename是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit。
17.另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- filename
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
18.git remote add origin + url 可以关联远程仓库
19. git push -u origin master 第一次推送文件上去时使用的命令
git pull --rebase origin master
20.git push origin master 之后可以用这个来推送
21.git clone + url可以直接拷贝远程仓库进自己的本地仓库
22.我们创建dev分支,然后切换到dev分支:
$ git checkout -b dev
然后,用git branch命令查看当前分支:
$ git merge dev
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
$ git checkout -b dev
然后,用git branch命令查看当前分支:
$ git merge dev
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
删除分支:git branch -d <name>
创建分支:git branch <name> 切换分支:git checkout <name>.
删除分支:git branch -d <name>
创建分支:git branch <name> 切换分支:git checkout <name>.
23.修改冲突要用手动解决 重新add 和 commit
24.合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
下面我们实战一下--no-ff方式的git merge
25.在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
26.Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:$ git stash
工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:
$ git stash list。
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了。
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
$ git stash apply stash@{0}
工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:
$ git stash list。
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了。
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
$ git stash apply stash@{0}
27.如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
28.用git remote -v显示更详细的信息:$ git remote -v看到关联的远程仓库
29.git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接
$ git branch --set-upstream dev origin/dev
$ git branch --set-upstream dev origin/dev
30.敲命令git tag <name>就可以打一个新标签
如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?
方法是找到历史提交的commit id,然后打上就可以了
$ git tag v0.9 6224937
如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?
方法是找到历史提交的commit id,然后打上就可以了
$ git tag v0.9 6224937
可以用git show <tagname>查看标签信息:
$ git show v0.9
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
$ git tag -a v0.1 -m "version 0.1 released" 3628164
$ git show v0.9
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
$ git tag -a v0.1 -m "version 0.1 released" 3628164
还可以通过-s用私钥签名一个标签:
$ git tag -s v0.2 -m "signed version 0.2 released" fec145a
签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错:
$ git tag -s v0.2 -m "signed version 0.2 released" fec145a
签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错:
31.一般是因为执行了git reset命令,版本回退后没有恢复,造成本地仓库的提交版本号落后于远端仓库的提交版本号。
可以执行 git push -f命令去强制提交 git push -f origin master.
32.注意:需要说明的是,默认情况下 这条语句等价于提交 本地的master分支,到远程仓库,并作为远程的master分支。
如果想把 本地的某个分支test 提交到 远程仓库,并作为远程仓库的master分支,或者 作为另外一个名叫test的分支,那么可以这么做。
如果想把 本地的某个分支test 提交到 远程仓库,并作为远程仓库的master分支,或者 作为另外一个名叫test的分支,那么可以这么做。
$ git push origin test:master // 提交本地test分支 作为 远程的master分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
33.git rebase 可以保持分支的整洁,使分叉可以变成同一直线
34.vi filename 可以打开该文件
35.pr=pull request 首先fork 别人的仓库,clone他的代码下来,修改后 推送到自己的仓库,然后在他的仓库网页中右上角有一个pull request 选择自己的分支 添加解释 说明请求仓库主人同意 若同意后则他merge你的分支进去他的仓库里面。