GIT笔记:基础操作(1)
2017-12-19 00:52
375 查看
GIT笔记:基础操作
本笔记参考自廖雪峰的GIT教程,主要为一些基础命令的演示。一些可能需要理解的概念:
1.
2.
3.
4.
创建版本库
1.选择或创建合适目录
$mkdirlearngit $cdlearngit $pwd /Users/michael/learngit
2.将目录转变为仓库
$gitinit InitializedemptyGitrepositoryin/Users/michael/learngit/.git/
3.将文件添加并提交到版本库
$gitaddreadme.txt
$gitcommit-m"wroteareadmefile" [master(root-commit)cb926e7]wroteareadmefile 1filechanged,2insertions(+) createmode100644readme.txt
文件回退
1.GITSTATE:
git-status-Showtheworkingtreestatus命令可以让我们时刻掌握仓库当前的状态
mrsaber@mrsaber-PC:~/learngit$gitstatus 位于分支master 尚未暂存以备提交的变更: (使用"gitadd<文件>..."更新要提交的内容) (使用"gitcheckout--<文件>..."丢弃工作区的改动) 修改:readme.txt 修改尚未加入提交(使用"gitadd"和/或"gitcommit-a")
2.GITDIFF
git-diff-Showchangesbetweencommits,commitandworkingtree,etc通俗来讲,就是查看提交的文件与以前的文件的不同
mrsaber@mrsaber-PC:~/learngit$gitdiffreadme.txt diff--gita/readme.txtb/readme.txt index46d49bf..9247db6100644 ---a/readme.txt +++b/readme.txt @@-1,2+1,2@@ -Gitisaversioncontrolsystem. +Gitisadistributedversioncontrolsystem. Gitisfreesoftware.
3.GITADD
git-add-Addfilecontentstotheindex4.GITCOMMIT
git-commit-Recordchangestotherepository5.GITlOG
git-log-Showcommitlogs显示提交的历史记录mrsaber@mrsaber-PC:~/learngit$gitlog commit1c14f30c0f89fe3e3db97ecf6c505e94fe42853c(HEAD->master) Author:mrsaber<mrsaber@foxmail.com> Date:MonDec1823:06:042017+0800 测试 commit4d21c053774dbdd7dbd5ca3935bf88c4ea2f334e Author:mrsaber<mrsaber@foxmail.com> Date:MonDec1817:21:092017+0800 修改了一行文本
说明:
commitid(版本号),和SVN不一样,Git的
commitid不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字
6.GITRESET
git-reset-ResetcurrentHEADtothespecifiedstate将当前状态重设到指定状态mrsaber@mrsaber-PC:~/learngit$gitreset--hardHEAD^ HEAD现在位于4d21c05修改了一行文本
说明:
在GIT中HEAD表示当前版本。上一个版本就是
HEAD^,上上一个版本就是
HEAD^^,当然往上100个版本写100个
^比较容易数不过来,所以写成
HEAD~100。
mrsaber@mrsaber-PC:~/learngit$gitlog//旧状态 commit4d21c053774dbdd7dbd5ca3935bf88c4ea2f334e(HEAD->master) Author:mrsaber<mrsaber@foxmail.com> Date:MonDec1817:21:092017+0800 修改了一行文本 mrsaber@mrsaber-PC:~/learngit$gitreset--hard1c14f //新状态 HEAD现在位于1c14f30测试
说明:
通过查找之前的ID,我们可以重设到未来版本,ID号不必写全,但是也不能太短,GIT会自动匹配查找。
7.GITREFLOG
gitreflog:可以查看历史命令。mrsaber@mrsaber-PC:~/learngit$gitreflog 1c14f30(HEAD->master)HEAD@{0}:reset:movingto1c14f 4d21c05HEAD@{1}:reset:movingtoHEAD^ 1c14f30(HEAD->master)HEAD@{2}:commit:测试 4d21c05HEAD@{3}:commit(initial):修改了一行文本
8.GITCHECKOUT
git-checkout-Switchbranchesorrestoreworkingtreefiles$gitcheckout--readme.txt
说明:
让这个文件回到最近一次
gitcommit或
gitadd时的状态。
已经提交了不合适的修改到版本库时,想要撤销本次提交,需要进行版本回退。
gitcheckout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
9.GITRM
git-rm-Removefilesfromtheworkingtreeandfromtheindex远程仓库
创建SSH-Key
mrsaber@mrsaber-PC:~/learngit$ssh-keygen-trsa-C"mrsaber@foxmail.com"//以后一路回车就好 Generatingpublic/privatersakeypair. Enterfileinwhichtosavethekey(/home/mrsaber/.ssh/id_rsa): Createddirectory'/home/mrsaber/.ssh'. Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain: Youridentificationhasbeensavedin/home/mrsaber/.ssh/id_rsa. Yourpublickeyhasbeensavedin/home/mrsaber/.ssh/id_rsa.pub. Thekeyfingerprintis: SHA256:Fwh9f+KQ77yXMaTrs5OS6I8QI5Ng81NR5ZZMeR1yuSAmrsaber@foxmail.com Thekey'srandomartimageis: +---[RSA2048]----+ |oo..o...oo| |o.=E.ooo| |+...*=..| |.+o.o.o+| |*oS.+=| |+o.+o| |..+o+| |...oBo| |.o..o+*| +----[SHA256]-----+
git使用时遭遇theauthenticityofhostcan'tbeestablished:
修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题
最后面添加:
StrictHostKeyCheckingno
UserKnownHostsFile/dev/null