吉游网提供最新游戏下载和手游攻略!

昨天深夜:手把手指导小姐姐掌握Git,体验反馈惊喜连连

发布时间:2024-09-20浏览:68

常用Git技能

git设置关闭自动换行

git config --global core.autocrlf false 为了保证文件的换行符是以安全的方法,避免windows与unix的换行符混用的情况,最好也加上这么一句 git config --global core.safecrlf true

git tag 使用

git tag # 列出当前仓库的所有标签git tag -l 'v0.1.*' # 搜索符合当前模式的标签git tag v0.2.1-light # 创建轻量标签git tag -a v0.2.1 -m '0.2.1版本' # 创建附注标签git checkout [tagname] # 切换到标签git show v0.2.1 # 查看标签版本信息git tag -d v0.2.1 # 删除标签git tag -a v0.2.1 9fbc3d0 # 补打标签git push origin v0.1.2 # 将v0.1.2标签提交到git服务器git push origin –tags # 将本地所有标签一次性提交到git服务器git tag # 查看当前分支下的标签

怎样遍历移除项目中的所有 .pyc 文件

sudo find /tmp -name "*.pyc" | xargs rm -rf替换/tmp目录为工作目录 git rm *.pyc这个用着也可以

避免再次误提交,在项目新建.gitignore文件,输入*.pyc过滤文件

创建和使用git ssh key

首先设置git的user name和email:

git config --global user.name "xxx"git config --global user.email "xxx@gmail.com"

查看git配置:

git config --list

然后生成SHH密匙:

查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除

生存密钥:

ssh-keygen -t rsa -C "xxx@gmail.com"

按3个回车,密码为空这里一般不使用密钥。 最后得到了两个文件:id_rsa和id_rsa.pub

注意:

密匙生成就不要改了,如果已经生成到~/.ssh文件夹下去找。

git变更项目地址

git remote set-url origin git@192.168.6.70:res_dev_group/test.gitgit remote -v

查看某个文件的修改历史

git log --pretty=oneline 文件名 # 显示修改历史 git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e # 查看更改

git push 时报错 warning: push.default is unset;

'matching'参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。 根据提示,修改git push的行为: git config --global push.default matching 再次执行git push 得到解决。

git submodule的使用拉子项目代码

开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。今天无意中发现了git的git submodule命令,之前的问题迎刃而解了。

添加 为当前工程添加submodule,命令如下:

git submodule add 仓库地址 路径

其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。 注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone)

命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。添加完成以后,再将子模块所在的文件夹添加到工程中即可。 删除

submodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行git rm –cached命令将子模块所在的文件从git中删除。 下载的工程带有submodule

当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:

git submodule update --init --recursive 即可将子模块内容下载下来后工程才不会缺少相应的文件。

git add文件取消

在git的一般使用中,如果发现错误的将不想提交的文件add进入index之后,想回退取消,则可以使用命令:git reset HEAD...,同时git add完毕之后,git也会做相应的提示。

git删除文件: 删除文件跟踪并且删除文件系统中的文件file1git rm file1 提交刚才的删除动作,之后git不再管理该文件git commit

删除文件跟踪但不删除文件系统中的文件file1git rm --cached file1 提交刚才的删除动作,之后git不再管理该文件。但是文件系统中还是有file1。git commit

版本回退

版本回退用于线上系统出现问题后恢复旧版本的操作。 回退到的版本git reset --hard 248cba8e77231601d1189e3576dc096c8986ae51 回退的是所有文件,如果后悔回退可以git pull就可以了。

历史版本对比

查看日志git log 查看某一历史版本的提交内容git show 4ebd4bbc3ed321d01484a4ed206f18ce2ebde5ca,这里能看到版本的详细修改代码。 对比不同版本git diff c0f28a2ec490236caa13dec0e8ea826583b49b7a 2e476412c34a63b213b735e5a6d90cd05b014c33

分支的意义与管理

创建分支可以避免提交代码后对主分支的影响,同时也使你有了相对独立的开发环境。分支具有很重要的意义。 创建并切换分支,提交代码后才能在其它机器拉分支代码git checkout -b new_branch 查看当前分支git branch 切换到master分支git checkout master 合并分支到当前分支git merge new_branch,合并分支的操作是从new_branch合并到master分支,当前环境在master分支。 删除分支git branch -d new_branch

git冲突文件编辑

冲突文件冲突的地方如下面这样

a123<<<<<<< HEADb789=======b45678910>>>>>>>6853e5ff961e684d3a6c02d4d06183b5ff330dccc

冲突标记<<<<<<< (7个<)与=之间的内容是我的修改,=与>>>>>>>之间的内容是别人的修改。 此时,还没有任何其它垃圾文件产生。 你需要把代码合并好后重新走一遍代码提交流程就好了。

不顺利的代码提交流程

在git push后出现错误可能是因为其他人提交了代码,而使你的本地代码库版本不是最新。 这时你需要先git pull代码后,检查是否有文件冲突。 没有文件冲突的话需要重新走一遍代码提交流程add —>commit —>push。 解决文件冲突在后面说。

git顺利的提交代码流程

查看修改的文件git status; 为了谨慎检查一下代码git diff; 添加修改的文件git add dirname1/filename1.py dirname2/filenam2.py,新加的文件也是直接add就好了; 添加修改的日志git commit -m "fixed:修改了上传文件的逻辑"; 提交代码git push,如果提交失败的可能原因是本地代码库版本不是最新。

理解github的pull request

有一个仓库,叫Repo A。你如果要往里贡献代码,首先要Fork这个Repo,于是在你的Github账号下有了一个Repo A2,。然后你在这个A2下工作,Commit,push等。然后你希望原始仓库Repo A合并你的工作,你可以在Github上发起一个Pull Request,意思是请求Repo A的所有者从你的A2合并分支。如果被审核通过并正式合并,这样你就为项目A做贡献了。

一些错误处理

"pathspec 'branch' did not match any file(s) known to git."错误 git checkout master git pull git checkout new_branch 使用git提交比较大的文件的时候可能会出现这个错误 error: RPC failed; result=22, HTTP code = 411 fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly Everything up-to-date

这样的话首先改一下git的传输字节限制

git config http.postBuffer 524288000 然后这时候在传输或许会出现另一个错误

error: RPC failed; result=22, HTTP code = 413 fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly Everything up-to-date

这两个错误看上去相似,一个是411,一个是413

下面这个错误添加一下密钥就可以了

首先key-keygen 生成密钥

git push ssh://192.168.64.250/eccp.git branch

七个改变生活的Git技巧

Git 中的自动纠错

我们每个人都不时在输入时犯拼写错误,但是如果你使能了 Git 的自动纠错功能,你就能让 Git 自动纠正一些输入错误的子命令。

假如你想用命令 git status 来检查状态,但是你恰巧错误地输入了 git stats 。通常情况下,Git 会告诉你 ‘stats’ 不是个有效的命令:

$ git statsgit: ‘stats’ is not a git command. See ‘git --help’.The most similar command isstatus

为了避免类似情形,只需要在你的 Git 配置中使能自动纠错功能。

$ git config --global help.autocorrect 1

如果你只想对当前的仓库生效,就省略掉选项 --global 。

这个命令会使能自动纠错功能。在相应的 Git 官方文档 中可以看到这个命令的详细说明,但是试着敲一下上面的错误命令会使你对这个设置干了什么有个直观的了解:

$ git statsgit: ‘stats’ is not a git command. See ‘git --help’.On branch masterYour branch is up to date with ‘origin/master’.nothing to commit, working tree clean

在上面的例子中,Git 直接运行了它建议命令的第一个,也就是 git status ,而不是给你展示它所建议的子命令。

对提交进行计数

需要对提交进行计数的原因有很多。例如,一些开发人员利用提交计数来判断什么时候递增工程构建序号,也有一些开发人员用提交计数来对项目进展取得一个整体上的感观。

对提交进行计数相当简单而且直接,下面就是相应的 Git 命令:

$ git rev-list --count branch-name

在上述命令中,参数 branch-name 必须是一个你当前仓库里的有效分支名。

$ git rev-list –count master32$ git rev-list –count dev34

仓库优化

你的代码仓库不仅对你来说很宝贵,对你所在的组织也一样。通过少数几个惯例你就能使自己的仓库整洁并且保持最新。 使用 .gitignore 文件 就是这些最好的惯例之一。通过使用这个文件你可以告诉 Git 不要保存一些不需要记录的文件,如二进制文件、临时文件等等。

当然,你还可以使用 Git 的垃圾回收来进一步优化你的仓库。

$ git gc --prune=now --aggressive

这个命令在你和你的团队经常使用 pull 或者 push 操作的时候很有帮助。

它是一个内部工具,能清理掉你的仓库里没法访问或者说“空悬”的 Git 对象。

给未追踪的文件来个备份

大多数时候,删除所有未追踪的文件是安全的。但很多时候也有这么一种场景,你想删掉这些未追踪的文件同时也想做个备份防止以后需要用到。

Git 组合一些 Bash 命令和管道操作,可以让你可以很容易地给那些未追踪的文件创建 zip 压缩包。

$ git ls-files --others --exclude-standard -z |\ xargs -0 tar rvf ~/backup-untracked.zip

上面的命令就生成了一个名字为 backup-untracked.zip 的压缩包文件(当然,在 .gitignore里面忽略了的文件不会包含在内)。

了解你的 .git 文件夹

每个仓库都有一个.git 文件夹,它是一个特殊的隐藏文件夹。

$ ls -a. … .git

Git 主要通过两个东西来工作:

.git

这个文件夹存储了所有参考信息和一些其他的如配置、仓库数据、HEAD 状态、日志等更多诸如此类的重要细节。

通常而言,你需要或者应当对你的 .git 文件夹的操作并不多。它是被 Git 管理的,而且大多数时候是一个禁区。然而,在这个文件夹内还是有一些有趣的工件,比如说当前的 HEAD 状态在内的就在其中。

$ cat .git/HEADref: refs/heads/master

它也隐含着对你仓库地描述:

$ cat .git/description

这是一个未命名的仓库;通过编辑文件 description可以给这个仓库命名。

Git 钩子文件夹连同一些钩子文件例子也在这里。参考这些例子你就能知道 Git 钩子能干什么了。

浏览另一个分支的文件

有时,你会想要浏览另一个分支下某个文件的内容。这其实用一个简单的 Git 命令就可以实现,甚至都不用切换分支。

设想你有一个命名为 README.md的文件,并且它在 main分支上。当前你正工作在一个名为dev的分支。

用下面的 Git 命令,在终端上就行。

$ git show main:README.md

一旦你执行这个命令,你就能在你的终端上看到 main分支上该文件的内容。

Git 中的搜索

用一个简单的命令你就能在 Git 中像专业人士一样搜索了。更有甚者,尽管你不确定你的修改在哪次提交或者哪个分支上,你依然能搜索。

$ git rev-list --all | xargs git grep -F ''

例如,假设你想在你的仓库中搜索字符串 “font-size: 52 px;" :

$ git rev-list –all | xargs git grep -F ‘font-size: 52 px;’F3022…9e12:HtmlTemplate/style.css: font-size: 52 px;E9211…8244:RR.Web/Content/style/style.css: font-size: 52 px;

用户评论

青衫负雪

哈哈!这也太搞笑了!"爽死了" 感觉太真实了,像极了第一次体验 Git 的那种快乐,之前我也有过类似经历哈哈哈

    有8位网友表示赞同!

十言i

我也经常这样教朋友使用 Git,有时候他们一脸懵懂的表情真的会让我哭笑不得,但当他们终于学会了一点之后那种眼神简直就是闪闪发光的。分享一下你手把手讲解的重点吧!

    有7位网友表示赞同!

々爱被冰凝固ゝ

我感觉软件开发技术越来越接地气了,像 Git 这种工具现在连女孩子都能轻松掌握!真是科技发达时代的好处。

    有8位网友表示赞同!

优雅的叶子

别逗我了,Git 用起来不是简单的事,我也花了很长时间才摸清楚它的套路,小姐姐说爽死了估计是太容易上手了还是她本身就聪明。

    有8位网友表示赞同!

坏小子不坏

GIT确实是个好工具!它可以帮我更好地管理和合作我的项目,减少很多麻烦。不过我觉得学习曲线有点陡峭啊,需要花些时间才能真正掌握。

    有10位网友表示赞同!

心贝

这说明小姐姐学的快啊!我感觉Git操作起来确实很方便,而且能够清楚地记录版本的变更历史,非常适合多人协作开发。

    有18位网友表示赞同!

还未走i

虽然 Git 比较简单,但对于初学者来说,还是需要一点耐心和引导。手把手教学的确是个很好的方法,比视频教程更有针对性!

    有12位网友表示赞同!

↘▂_倥絔

我也是学习了 Git 之后才真正明白软件开发的效率是如何提高的!以前每次修改代码都小心翼翼,害怕弄错...现在完全不用担心啦!

    有5位网友表示赞同!

▼遗忘那段似水年华

我曾经也尝试过用 Git,但是学起来实在太难了,各种命令和语法都不熟悉…最后还是放弃了,不知道这跟我的性格是不是有关?

    有16位网友表示赞同!

凉城°

感觉有点奇怪,Git 应该不是那种很容易上手的工具吧?小姐姐真厉害!羡慕这种学习效率!

    有20位网友表示赞同!

琴断朱弦

我试过看一些 Git 的教程,但是理解不了那些复杂的命令和操作...还是老想着自己先把基础知识打好再慢慢学 Git 比较好。

    有11位网友表示赞同!

﹏櫻之舞﹏

看来用 Git 确实能提升开发效率很有效啦!下次问问身边的小伙伴能不能帮把手教我使用 Git!

    有6位网友表示赞同!

葵雨

我也想知道这小姐姐的手把手教学是怎样的?有没有什么特别之处或者技巧可以分享?

    有20位网友表示赞同!

古巷青灯

学习 Git 挺难的,不过只要坚持下去就一定能够掌握。而且现在很多人都用 Git,学会它对今后发展确实很有帮助!

    有14位网友表示赞同!

杰克

我听朋友说Git很难,尤其是对于初学者来说…… 看来我还得克服心理障碍去学习一下了!

    有9位网友表示赞同!

刺心爱人i

今天看到这篇文章突然想到去年我尝试学习 Git 的经历... 真是惨不忍睹。哈哈,还好现在有这么多便捷的教程和社区可以帮忙解答疑惑啊,不像当年什么都靠自己摸索!

    有18位网友表示赞同!

仰望幸福

这篇文章真是太有趣了!感觉Git 不仅仅是一个工具,它更像是一种学习和成长的状态!

    有8位网友表示赞同!

绝版女子

这说明 Git 本身就是一个很好的工具,它能让每个人都能够轻松掌握软件开发的技能,而不是像过去那样需要花费很长时间去学习复杂的技术。

    有17位网友表示赞同!

热点资讯