【Git基础】常用Git指令(持续更新)

刚参加工作时主要使用GitGUI+Tortoise git工具+GitLab进行Git的代码协同,可视化的操作界面使刚毕业的我不必记录复杂的Git指令,使我能更专注于代码本身。而入职新公司后,将近半G的代码量的庞大项目取代了老东家200k的代码量的逻辑项目,版本管理也自然而然使用更适合多人协同的Repo+Git Bash+Gerrit的方式,在简单试用一段时间后,感叹在命令行下才可以深入理解Git的设计内核。

1、Repo

Repo全程是repository,是谷歌开发的用于管理Android 版本库的一个工具。Repo并不是取代Git,而是用python对Git进行了一定的封装,简化了对Git版本库的管理。用Repo管理的版本库都需要使用Git命令来操作。

常用的Repo命令如下:

【repo init -u [url] -b [brach] --depth = 1】:完成repo工具的完整下载,相当于对repo配置以及repo脚本集进行git pull。url为代码库的URL链接,brach为具体分支名。 depth = 1,表示目录层级为1层,即git log时的commit仅有最近一次提交,不包含历史版本,可以通过配置commit深度为1加快配置速度。repo init仅做环境相关配置,下载完成后会在根目录下生成.repo的隐藏文件。

【repo sync -c -j32】:默认同步Android 所有的git代码库,j32表示使用32线程进行同步,加快代码下载速度,默认情况下使用4线程并发进行下载。-c表示只同步当前分支,默认情况下会更新所有的分支。repo sync -c -j32 [name] 表示下载分支名位name的分支,name可以从根目录下的.repo/manifest下查看。若单独下载某一个库的代码空间需要先进行对应代码空间的repo init。

【repo start XXX .】如果只git pull了一个远端仓库的一部分,那么可以使用此指令,创建一个默认的本地分支。

【repo upload . --cbr】:指向检出并上传当前的git分支,cbr含义为current branch。作用和git push ××× 一样,建议使用git。

Repo介绍好文推荐:

repo总结_绿tree的博客-CSDN博客_repo sync 参数

2、Git Bash

Git有一套叫做打包文件的存储机制,会定位内容非常相似的全部文件,然后为他们之一存储整个内容,之后计算相似文件之间的差异只存储差异。

【git status】:对比上次提交是否有文件及其内容的删改。

【git diff】:比较文件在暂存区与未写入暂存区的差异,若文件已git add至暂存区,则无法捕获到diff。

git diff commit1 commit2 可以比较两个commit之间的差异。

【git branch】:列举当前的本地分支,git branch -a可列举出所有本地和远端分支,最后一列表示当前本地分支对应的远端分支,为repo仓库拉下来后的分支,本地分支切换后就不是这个了(没有git branch -vv精确,建议采用git branch -vv);git branch -d test_branch可删除本地分支test_branch。

【git checkout -b new_branch url_name】:new_branch表示新分支名,url_name表示链接到的远端分支名。若new_branch存在,则直接切换。否则,将先创建再切换。分支切换完成后,建议git pull一下,可以对分支进行更新。

【git pull】:拉取(更新)远端分支到本地,git pull = git fetch(获取远端分支到本地,不会merge) + git merge(同步)。有时候git pull失败,总会显示某些分支merge失败,此时可以先git fetch --depth=100,先进行分支同步,再merge。

【git add】:将文件添加到暂存区。

【git reset】:取消暂存区缓存。

【git commit】:将暂存区的内容添加到本地仓库,并自动弹窗进行commit备注,备注完成退出时需先按ctrl+k,再按x。commit中的信息需填写完全,否则服务器端会检查出错误。

commit使用vim编译器方法:在shell下输入git config --global core.editor "vim"

【git config --list】:获取全部本地分支配置,包含对应的远端分支(.merge对应的右值),也可通git branch -a查看本地分支对应的远端分支。

【git push url】:推送代码到远端分支url。将一个new branch推送到远端仓库时,可能会被远端仓库阻止,若出现提交不上去的情况,可以加入--no-thin。若出现commit异常,则可执行git pull  --unshallow/git pull --depth=10进行commit的对齐。若对齐后上传代码扔存在问题,可能是远端有commit数据类型检查,git commit的格式出现问题。

【git rev-parse --abbrev-ref local_branch_name】:查看本地分支在远端分支的对应关系,local_branch_name即分支名。

【git log】:显示历届的版本信息,其中包含历届的commit信息。

【git apply】:git apply xx.diff / git apply xx.patch,二者都是对打补丁的方式,可以使用git apply将补丁直接应用于代码中。

【git revert】:撤销某次提交同时不影响其他提交。如果有冲突,则解决冲突后,重新commit提交,此时已把冲突解决了。

【git remote update】:当发现远程的分支可以在网页上显示,但是本地git branch -a看不到时,一般需要在本地使用git remote update更新

【git clean】:对于未追踪的文件(untracked files),即新文件,使用git reset --hard HEAD无法清除,使用git clean -f -d 删除对应的文件以及路径。

【git blame】:查找文件中每一行的最后修改时间,若要追溯更早谁修改的,可以检索出最后一次修改时间后,继续向前推。

【git log -Sstring】:可以直接检索出某一行代码是什么时候添加/删除的,属于暴力考古的一种。 

3、Gerrit

Gerrit是一个免费、开源的代码审查软件。相对于GitLab丰富且友好的UI界面,Gerrit第一次使用时感觉非常简陋,但随着逐渐上手,也被其简单的设计吸引。

---每份提交都会生成一个patch(补丁)号,可以直接根据此patch号全局查找此次变更。通过界面,可直接查看到此次变更点与变更的commit信息,且commit支持修改。

---代码变更提交后,可以交由多人做review审核。审核历史记录可见。

---可以将此分支上的代码cherry pick到另一个分支,此次的更改也可以revert撤销。因为任意的代码变动都需要审核,所以涉及到合并与撤销操作,可先于远端完成,待审核通过后,再通过push到本地。

常用搜索框内容为owner:xxxx(name) status:xxxx(merged) commit(使用commit检索更精确) message(单字节搜索,多字节时老出错)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱笑的七小沐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值