当前位置: 首页 > 科技观察

几年Git使用技巧总结

时间:2023-03-13 21:27:39 科技观察

我已经使用Git一年了。以下是我一年来的Git使用总结,涵盖了日常使用中的大部分场景。嗯,至少一年够了,整理出来分享给大家,有不懂的可以回复交流。创建并使用gitsshkey首先设置git的用户名和邮箱:gitconfig--globaluser.name"xxx"gitconfig--globaluser.email"xxx@gmail.com"查看git配置:gitconfig--list然后生成一个SHHkey:检查是否已有sshkey:cd~/.ssh如果没有key,则没有该文件夹,如果有备份,删除survivalkey:ssh-keygen-trsa-C"xxx@gmail.com"按3个回车,密码为空,这里一般不用key。最后得到两个文件:id_rsa和id_rsa.pub注意:密钥生成不要改,如果已经生成了,去~/.ssh文件夹下找。git更改项目地址gitremoteset-urlorigingit@192.168.6.70:res_dev_group/test.gitgitremote-v查看一个文件的修改历史gitlog–pretty=oneline文件名#显示修改历史gitshow356f6def9D3fb7f3b9032ff5aa4b9110d4cca87e#查看修改gitPush报错warning:push.defaultisunset;'matching'参数是Git1.x的默认行为,这意味着如果你执行gitpush但不指定分支,它会将你本地的所有分支推送到对应的远程仓库匹配分支。Git2.x默认是simple,也就是说当你执行gitpush时没有指定分支,只会将当前分支推送到你使用gitpull获取的代码中。根据提示修改gitpush的行为:gitconfig--globalpush.defaultmatching再次执行gitpush即可解决问题。gitsubmodule的使用在子项目的代码开发过程中,经常会有一些公共的部分想要提取出来做成公共库供其他项目使用,而公共代码库的版本管理是一件比较麻烦的事情.今天无意中发现了git的gitsubmodule命令,解决了之前的问题。给当前项目添加子模块,命令如下:gitsubmoduleadd仓库地址path其中,仓库地址是指子模块仓库地址,path是指当前项目下放置子模块的路径。注意:路径不能以/结尾(会导致修改不生效),不能是已有项目的已有目录(不能克隆成功)。命令执行后,会在当前项目的根路径下生成一个名为“.gitmodules”的文件,里面记录了子模块的信息。添加完成后,将子模块所在文件夹添加到项目中。删除子模块有点麻烦:首先,删除“.gitmodules”文件中对应的配置信息。然后,执行gitrm–cached命令从git中删除子模块所在的文件。下载的项目有一个子模块。使用gitclone下载带有子模块的项目时,一开始不会自动下载子模块的内容。这时只需执行如下命令:gitsubmoduleupdate--init--recursive表示子模块内容下载完成后,项目将不会缺少相应的文件。gitaddfilecancellation在一般的git使用中,如果发现错误将不想提交的文件加入到索引中,想回滚取消,可以使用命令:gitresetHEAD...,gitadd完成后,git也会做出相应的提示。http://blog.csdn.net/yaoming168/article/details/38777763git删除文件:删除文件跟踪删除文件系统中的文件file1gitrmfile1提交刚才的删除动作,之后git不再管理该文件gitcommit删除文件Track但不删除文件系统中的文件file1。gitrm--cachedfile1提交了刚才的删除动作,然后git就不再管理这个文件了。但是文件系统中还有file1。gitcommitversionrollback版本回滚用于线上系统出现问题后恢复旧版本。回滚到gitreset--hard248cba8e77231601d1189e3576dc096c8986ae51的版本回滚所有文件。如果你后悔了,你可以把它拉回来。历史版本对比查看日志gitlog查看某个历史版本的提交内容gitshow4ebd4bbc3ed321d01484a4ed206f18ce2ebde5ca在这里可以看到该版本的详细修改代码。比较不同版本的gitdiffc0f28a2ec490236caa13dec0e8ea826583b49b7a2e476412c34a63b213b735e5a6d90cd05b014c33http://blog.csdn.net/lxlzhn/article/details/9356473分支的意义和管理也可以避免master创建分支后提交。开发环境。分支非常重要。创建和切换分支,在其他机器上提交代码拉取分支代码gitcheckout-bnew_branch查看当前分支gitbranch切换到master分支gitcheckoutmastermergebranch到当前分支gitmergenew_branch,的操作合并分支就是从new_branch合并到master分支,当前环境在master分支。删除分支gitbranch-dnew_branchgitconflictfile编辑冲突文件冲突的地方如下a123<<<<<<>>>>>>6853e5ff961e684d3a6c02d4d06183b5ff330dcccconflictmark<<<<<<<(7<)和=======之间的内容是我修改的,=======和>>>>>>>>之间的内容是别人修改的。此时,没有生成其他垃圾文件。需要合并代码,重新走代码提交流程。代码提交过程不顺畅gitpush后出现错误,可能是其他人提交了代码,导致你本地的代码库版本不是最新的。这时候需要检查gitpull代码后是否存在文件冲突。如果没有文件冲突,需要重新走一遍代码提交流程add—>commit—>push。稍后将讨论解决文件冲突。git顺利提交代码过程查看修改文件gitstatus;为了仔细检查代码gitdiff;添加修改后的文件gitadddirname1/filename1.pydirname2/filenam2.py,新添加的文件直接add即可;add修改日志gitcommit-m"fixed:修改了上传文件的逻辑";提交代码gitpush,如果提交失败,可能是本地代码库版本不是最新的。了解到github的pullrequest有一个仓库叫RepoA,如果你想给它贡献代码,你必须先Fork这个Repo,所以你的Github账号下就有一个RepoA2。然后你在这个A2下工作,commit,push等等。那么你想要原仓库的RepoA合并你的工作,你可以在Github上发起一个PullRequest,意思是请求RepoA的拥有者从你的A2合并分支。如果通过并正式合并,那么你就为项目A做出了贡献。http://zhidao.baidu.com/question/1669154493305991627.html一些错误处理“pathspec'branch'不匹配git已知的任何文件。”错误gitcheckoutmastergitpullgitcheckoutnew_branch使用git提交比较大的文件可能会出现这个错误error:RPCfailed;result=22,HTTPcode=411fatal:Theremoteendhungupunexpectedlyfatal:TheremoteendunexpectedlyhungupunexpectedlyEverythingup-to-date这种情况下,先更改git的传输字节限制gitconfighttp.postBuffer524288000然后有可能是另一个错误error:RPCfailed;result=22,HTTPcode=413fatal:Theremoteendhungupunexpectedlyfatal:TheremoteendhungupunexpectedlyEverythingup-to-date这两个错误看起来很相似,一个是411,一个是413。下面的错误是足以添加一个密钥。首先key-keygen生成一个key,然后将生成的key复制到git中自己账号下对应的位置。gitpushssh://192.168.64.250/eccp.gitbranch