0。查看本地公钥的步骤:1.进入.ssh目录cd~/.ssh2。找到id_rsa.pub文件ls/ll3。查看文件catid_rsa.pubJackFeng@JackFengMINGW64~/Desktop$cd~/.sshJackFeng@JackFengMINGW64~/.ssh$lsconfigid_rsaid_rsa.pubid_rsa_sqlid_rsa_sql.pubknown_hostsJackFeng@JackFengMINGW64~/.ssh$catid_rsa.pub1、配置多个git仓库'Ssh-keyswitching'仓库之间1。生成客户端自己的密钥对ssh-keygen----直接回车#实际操作可以改成你的邮箱ssh-keygen-trsa-C"youremail@example.com"你可以找到.ssh客户端主目录下的目录,里面有两个文件,id_rsa和id_rsa.pub,是SSHKey的密钥对,id_rsa是私钥,不能泄露,id_rsa.pub是公钥。生成新的ssh-keysecond@mail.com工作邮箱ssh-keygen-trsa-C'second@mail.com'-fid_rsa_second配置多个仓库在.ssh目录下创建config文本文件并完成相关配置(核心部分)每个账号配置一个单独的Host,每个Host需要取别名。每个Host主要配置两个属性,HostName和IdentityFile。Host的名字可以取自己喜欢的名字,但是这会影响Git相关的命令,例如:HostName这是真实的域名地址IdentityFile这里是id_rsa的地址PreferredAuthentications配置登录时使用什么权限认证in--可以设置为publickey,passwordpublickey,keyboard-interactive等。#配置SQLSQHostSQLHostNamegithub.comIdentityFile~\.ssh\id_rsa_sqlPreferredAuthenticationspublickeyUseryinjie.feng测试是否通过JackFeng@JackFengMINGW64~/.sshTune$vimconfigJackFeng@JackFengMINGW64~/.ssh$ssh-Tgit@github.com你好A2Data!您已成功通过身份验证,但GitHub不提供shell访问。JackFeng@JackFengMINGW64~/.ssh$vimconfigJackFeng@JackFengMINGW64~/.ssh$ssh-Tgit@SQL嗨,MineData-SQL!您已成功通过身份验证,但GitHub不提供shell访问。gitadd,gitcommit,gitremoteadd,gitpush有一点需要说明,gitcommit需要进行身份验证,正确输入用户名和邮箱即可。注意:github根据配置文件中的user.email获取github账号并显示作者信息,所以对于多账号的用户,一定要记得将user.email改成对应的邮箱(monster@mail.com).总结一下:其实建立第二个密钥对的区别在于第二个密钥对的声明,所以需要在.ssh目录下添加config文件,添加语句dentityFile~/.ssh/id_rsa_sql声明这是第二个密钥对密钥对。该连接命令被反映。查看用户名gitconfiguser.namegitconfiguser.email修改用户名gitconfig--globaluser.name"xxx"gitconfig--globaluser.email"xxx"2.从远程项目中拉取gitclone项目地址3.提交代码到远程仓库。添加gitadd..查看状态gitstatus提交gitcommit-m"codedescription"再次查看状态gitstatuspull最新代码gitpull提交gitpush4,gitbranch操作Git初始化解决fatal:Notagitrepository(orany父目录):.git问题gitinitgitclone---克隆项目JackFeng@JackFengMINGW64/d/Practice$gitclonegit@github.com:MineData-SQL/SQL.gitCloninginto'SQL'...remote:枚举对象:3,done.remote:Countingobjects:100%(3/3),done.remote:Total3(delta0),reused0(delta0),pack-reused0接收对象:100%(3/3)),完毕。创建分支gitbranch#指定分支名称gitcheckout-b["branchname"]查看分支gitbranch#查看所有分支,*号代表当前分支gitbranch#查看分支详情,包括commitid和提交分支指向的信息Switchbranchgitcheckout#切换到指定分支gitcheckout-b#创建并切换到指定分支删除分支gitbranch-d.#删除Acleanbranch(即该分支相对于当前分支没有新的commit记录)gitbranch-D.#强制删除一个分支,该分支是否有commit记录合并到当前分支注意:删除一个分支前,需要先切换到其他分支才能删除。分支恢复思路:对于已经有提交记录的分支,删除后实际上只是删除了指针,提交记录依然存在。如果要恢复,需要使用gitreflog找到分支指向的commitId,然后新建分支HEAD@{1}gitrefloggitbranch创建一个根据指定的提交新建分支重命名分支gitbranch-mnewnameJackFeng@JackFengMINGW64/d/Practice/SQL(master-two)$gitbranch-mmaster-onemaster-OJackFeng@JackFengMINGW64/d/Practice/sql(master-two)$gitbranchmastermaster-O*master-twobranchmergegitmerge#将指定分支合并到当前分支中如果两个分支没有fork,会快速合并,即fast-forward方法,它不生成新的commitId,只是改变指针指向,fork合并时可能会发生冲突。示例:将master-O分支合并到master分支,此时合并快进。分支合并详情gitmerge-ff-m"msg"#合并分支时禁用快进模式如果使用快进方式进行分支合并,只是简单的改变分支指针,不会产生新的提交记录。为了保证合并后数据的完整性,我们还可以指定合并时不使用快进方式,使用--ff选项。这样在merge的时候会产生一个新的commit,从log中可以看到branchmerge的记录。例子:我们在master-two分支上添加了一个新的commit,然后合并到master分支上。gitlog检查最新的提交记录,显示的是我们合并分支时的记录。gitlog--pretty=oneline-1JackFeng@JackFengMINGW64/d/Practice/SQL(master)$gitcheckoutmaster-two切换到分支'master-two'JackFeng@JackFengMINGW64/d/Practice/SQL(master-two)$echo"感谢您关注DataScience">>a2data.txtJackFeng@JackFengMINGW64/d/Practice/SQL(master-two)$gitadda2data.txtwarning:a2data.txt中的LF将被CRLF替换。该文件将具有其工作目录中的原始行结尾JackFeng@JackFengMINGW64/d/Practice/SQL(master-two)$gitcommit-m"addfile"[master-two59a8816]addfile1filechanged,1insertion(+)createmode100644a2data.txtJackFeng@JackFengMINGW64/d/Practice/SQL(master-two)$gitcheckoutmasterSwitchedtobranch'master'你的分支是最新的'origin/master'.JackFeng@JackFengMINGW64/d/Practice/SQL(master)$gitmerge--ff-m"megermaster-twobranch"master-two更新一个b83ffb..59a8816快进(未创建提交;忽略-m选项)a2data.txt|1+1个文件更改,1个插入(+)创建模式100644a2data.txtJackFeng@JackFengMINGW64/d/Practice/SQL(master)$gitlog--pretty=oneline-159a88161e630f0853b852946fddb6c7e787906fe(HEAD->master,master-two)添加文件冲突解决在合并分叉的分支时,如果两个分支都修改了同一个文件,那么合并时就有可能会发生冲突。如果两个分支有规律地修改同一个文件,比如修改到不同的地方,那么git工具可以自动合并。如果不能自动合并,需要手动修改冲突的文件。修改完成后使用gitadd表示冲突已经解决,然后使用gitcommit提交一个例子:修改并提交master分支上的两个文件。a2data.txt_和*DataScience_。然后切换到master-O分支修改并提交这两个文件。由于文件是在不同的地方修改的,所以它们会自动合并。我们检查DataScience文件的内容,==上面和下面的内容代表不同分支的修改内容,去掉冲突标记,然后根据要求适当修改内容,提交一次完成冲突解决。修改同一个文件会导致合并冲突(mergeconflict)mastermaster-Omergebranchbranch暂存gitstash#暂存工作gitstashlist#列出所有暂存状态从暂存区恢复,有两种处理方式:1.先恢复,然后删除暂存gitstashapplygitstashdrop2.恢复的同时,删除stash内容gitstashpop_我们在分支开发代码的时候,可能会收到突发需求,目前代码还没有已经完成,所以不能直接提交。为了解决此类问题,git提供了分支暂存机制,可以保存一半已开发的分支,并在适当的时候恢复代码。示例:在_master-two_分支上新建一个文件,然后加入暂存区表示未完成的任务,暂存当前分支,gitstatus显示工作区干净。欢迎关注