1.git init 当前文件变成git存储库也叫版本库。
2.git status 查看当前版本库的状态
3.git diff 查看现在和之前有何不同
4.git add 相当于把你要提交的文件提交到版本库的暂存区。
5.git commit -m "添加文件的说明" 提交文件到git版本库中。每提交一次相当于创建了一个版本库! -m表示对你提交内容的说明
6.git log 命令显示从当前时间点最近到最远的提交日志
7.git log --pretty=oneline 以单线图的形式显示。显示的内容清晰,简单明了。
8.git reset --hart Head^ 回退到上一个版本。 Head~10 回退到前10个版本。hrad 后也可跟版本号。
9.git reflog 显示历史版本操作记录,记录版本及版本指向操作
10.工作区、暂存区、版本库 如图
11.管理修改:
先将工作区的修改都添加到暂存区,然后进行提交。git add file git commit -m"修改的说明".
12.撤销修改
(1).在你还没有将修改添加到暂存区的时候撤销。使用命令 git checkout -- file
(2).在你将修改添加到暂存区还没有提交的时候撤销。使用命令 git reset HEAD file 。会将文件从暂存区放回到工作区。在使用 命令 git checkout -- file 。就会丢弃修改。
(3).现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把“stupid boss”提交推送到远程版本库,你就真的惨了……
13. 删除文件
删除文件 使用命令: rm file
现在有两种情况:
(1).完全确定自己要删除 使用命令 git rm file;git commit -m "delete file"
(2).删除错误想要恢复到以前,使用命令 git checkout -- file;命令的意思是从版本库将文件恢复到工作区
14. GitHub中示例远程操作(在有本地库的情况下)
(1)本地添加一个版本库,GitHub中添加一个远程库learnGit
(2)将远程库与本地库关联起来。 命令如下:
git remote add origin git@github.com:zxyjuese/learngit.git 其中origin为远程库的名称,git@github.com:zxyjuese/learngit.git为远程库 的地址;
(3)将本地库推送到远程库。命令如下:
git push -u origin master
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支, 还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
小结
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
15.GitHub中示例远程操作(在没有本地库的情况下)
(1)首先,登陆GitHub,创建一个新的仓库,名字叫gitskills:
(2)通过命令将远程库克隆到本地 命令如下:
git clone git@github.com:zxyjuese/gitest.git
小结:
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
16.git分支命令
(1).git checkout -b dev 创建并且换至dev分支
(2).git checkout dev 切换分支
(3)git branch 查看分支
(4)git merge dev 合并 dev分支到当前分支,可能会出现Fast-forward字段,说明当前是快进合并,直接将master指向dev
(5)git branch -d dev 删除分支
(6)git branch dev 创建分支dev
(7)合并分支冲突后通过命令 git log --graph命令可以看到分支合并图。简化分支合并图命令 git log --graph --pretty=oneline --abbrev-commit
(8) 分支管理策略 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁 用 Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
禁止使用Fast forward 的命令 git merge --no-ff -m"merge with no-ff"dev
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master 上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
Git分支十分强大,在团队开发中应该充分应用。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾 经做过合并。
18.关于隐藏当前的添加,适用于你现在工作完成了一半,又不想提交,但又想贴换到其他分支干别的事。这时候就需要用到隐藏命令:
git stash 隐藏当前添加到暂存区的文件,并保证你切换分支后这个文件不会在本地出现。
接下来你就可以为所欲为的干你想做的事,比如修复bug。。 任务完成后,你可以将分支切回去,然后使用命令:
git stash apply 将隐藏的文件显示出来,这个命令不会将git stash list中的对应的列表删除,要删除 可以通过命令
git stash drop这个命令
也可以通过命令: git stash pop 这个命令将隐藏的内容显示,并且会将git stash list中的对应列表删除。
接下来你就可以继续在原来的基础上工作了
19.创建的分支没有被合并,但是还是要删除它,我们就使用命令强行删除,如下
git branch -D feature
20.多人协作
git checkout -b dev origin/dev 创建远程dev分支到本地,并切换到本地dev分支
小结
查看远程库信息,使用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,如果有冲突,要先处理冲突。
21.tag命令
git tag v1.0 打包标签ming
git tag v0.9 commitid 打包历史标签
小结
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m "blablabla..."可以指定标签信息;
git tag -s -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。
操作标签
小结
命令git push origin 可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d 可以删除一个本地标签;
命令git push origin :refs/tags/可以删除一个远程标签。
网友评论