玖叶教程网

前端编程开发入门

一文学会Git常用语法

背景

可以说Git是任何一个程序员都逃不开的存在,在研发过程中,是否曾因对Git掌握不熟,而犯错误呢?本文适合使用过Git或稍微有基础者。来吧,让我们跟上这篇文章走上Git之旅。

文章概览

  1. Git原理
  2. Git常用命令
  3. 分支管理
  4. Git工具篇

1.Git原理

  • 本地工作区本地暂存区本地仓库远程仓库之间数据流程图如下:
  • 本地工作区:本地保存代码的文件夹
  • 本地暂存区:暂存区是一个文件,保存工作区中修改的文件名称
  • 本地仓库:暂存区的改动提交到本地仓库,保存元数据和对象的数据库
  • 远程仓库:远程代码仓库

2.Git常用命令

  • git init <directoryName>:初始化本地工作目录,跟目录名
  • git config --list:列出所有配置
  • git config --global user.name yutao:配置提交人名称
  • git config --global user.email [email protected]:配置提交人邮箱
  • git clone <remoteBaseName>:克隆远程仓库到本地工作目录,跟远程仓库地址
  • git fetch:从远程仓库获取最新代码到本地,不改变工作区或本地分支代码
  • git fetch <remote>:抓取指定远程仓库
  • git pull:不仅从远程仓库获取最新代码,而且还自动将这些更改合并到本地工作区或本地分支
  • git pull --rebase <remote> <localbranchname>:拉取远程分支,但过滤合并提交(自动产生)、重复提交
  • git push <remote> <localBranceName>:推送本地分支到远程分支
  • git push origin dev:test:将本地dev分支推送到远程test分支上
  • git branch:查看本地分
  • git branch -r:查看远程分支
  • git branch -a:查看所有分支,包括本地和远程
  • git branch <branchName>:创建新分支,比如当前在master分支,既基于当前master分支创建
  • git branch -d <branchName>:删除本地分支
  • git checkout <branchName>:切换分支
  • git checkout -b <branchName>:创建并切换到新分支,比如当前在master分支,既基于当前master分支创建
  • git add <fileName>:将工作目录修改文件添加到暂存区
  • git reset:有3种模式,soft、mixed、hard,默认mixed模式。soft将撤回的代码存放到暂存区,mixed将撤回的代码放到工作区,hard彻底回退到某个版本,丢弃撤回的代码本地没有commit代码也将擦除。
  • git reset <fileName>:将暂存区文件撤销到工作区,撤销之前的git add操作
  • git reset HEAD^:回退所有内容到上个版本
  • git reset HEAD^ <filename>:回退某个文件到上个版本
  • git reset <commitID>:回退到指定版本
  • git checkout --fileName:清除工作区的改动,回到跟版本库一样的状态
  • git stash/git stash push:现在想要切换分支,但是还不想要提交之前的工作,所以贮藏修改,贮藏被推送到栈上,再看工作目录是干净的
  • git status:检查当前文件状态,工作目录文件只有两种状态已跟踪未跟踪,未跟踪表示未纳入git版本管理
  • git commit -m <comments>:将暂存区改动提交到本地仓库
  • git commit -a -m <comments>:提交之前不再需要 git add 文件, -a选项使本次提交包含了所有修改过的文件
  • git commit --amend -m <comments>:将新修改的代码追加到前一次提交的commit中
  • git commit --amend --no-edit:不更改前一次提交的备注信息情况下,追加新的修改到上一次commit中
  • git rm --cached <fileName>:把文件从暂存区删除,但仍保留在工作目录中,且未被git跟踪
  • rm fileName->git rm <fileName>:把文件从工作目录中删除
  • git mv <fileName> <newFileName>:修改工作区文件名
  • git stash:将工作目录的文件修改与暂存区未完成的修改保存到一个栈上,然后可以切换到其他分支,贮藏的改动任何时候都可重新应用这些改动
  • git stash list:查看贮藏的东西
  • git stash apply/pop:还原最近一次贮藏
  • git stash apply stash@{2}:还原指定ID的贮藏
  • git stash -u:贮藏未跟踪的文件
  • git stash branch <branchName>:从贮藏创建分支
  • git clean -n:n参数先看看会删掉哪些文件
  • git clean -f:若参数clean.requireForce未改为false,则需要-f参数对未跟踪文件强制删除
  • git clean -d:删除未跟踪的目录
  • git log:查看git日志,最新提交在最上面
  • git log --pretty=format:"%h - %an, %cn, %cd : %s":格式化日志,%h提交的简写哈希值,%an作者名字,%cn提交者名字,%cd作者修订日期,%s提交说明
  • git log --pretty=format:"%h %s" --graph:用ASCII字符串来形象地展示你的分支、合并历史
  • git log --oneline --all --graph:查看git日志,每行只显示哈希值和提交说明
  • git relog:引用日志,可以查看所有分支的所有操作记录,包括被删除的commit和reset操作
  • git remote -v:查看所有远程仓库
  • git remote add <shortname> <url>:添加一个新的远程Git仓库,同时指定一个方便的使用的简写
  • git remote show <remote>:查看某一个远程仓库的更多信息
  • git remote rename <a> <b>:远程仓库重命名
  • git remote remove <remote>:删除远程仓库,本地将看不到关联的远程仓库
  • git merge <branchename>:git checkout master,然后执行git merge hotfix,既将hotfix分支代码合并到master
  • git rebase <branchename>:变更分支的基线,比如master分支上点A,以A点创建feature分支,然后推进D、E两提交。此时master分支也推进B、C两个提交,此时要对feature进行rebase,则checkout到feature分支,执行git rebase master,就会把D、E两点提交连接到C点后面
  • git reset <commitid> --hard:git relog查看commitid,撤销rebase操作
  • git reset ORIG_HEAD:撤销刚刚rebase操作
  • git rebase --continue:在rebase的过程中,可能会出现冲突conflict情况,git会停止rebase,解决冲突后git add更新内容到索引,无需执行git commit,只要执行本命令,git会继续rebase余下
  • git rebase -i [startpoint] [endpoint]:合并多个commit为一个,startpoint为开区间既要找目标的前一个id,endpoint闭区间,假如有两行pick eaca5fe add a.txt, s 7fc6da4 add b.txt,保存退出,再继续修改合并备注
  • git revert <commitid>:撤销提交,git revert用一个新的commit回滚之前的commit,HEAD继续前进,reset是把HEAD向后移动一下

3.分支管理策略

分支管理策略目前有git flow、github flow、gitlabflow,在过去的开发经验中,个人觉得git flow更适合本地团队分支管理。git flow主要分支如下:

  • master:主分支,主分支的每个版本都是质量稳定和功能齐全的发布版
  • hotfix:紧急修复当前发布版本bug,从master分支创建,修复后合并回master、release、develop
  • release:准发布版本分支,从develop分支创建,仅对这个预发版本问题进行修复,修复后合并回develop
  • develop:基于主分支创建,用于日常开发,存放最新开发版本代码,当开发分支稳定后,可以发布release版
  • feature:基于develop分支创建,开发新模块,开发结束合并回develop分支

4.Git工具篇

常用的git图形工具如idea、sourcetree、git自带的gitk等。个人经验git bash、gitk最基础,在各种环境下都能使用。在合并代码冲突时可以配置一下第三方工具提供效率,比如p4merge,需要提前下载https://www.perforce.com/products/helix-core-apps/merge-diff-tool-p4merge,配置如下:

git config --global diff.tool p4merge
git config --global difftool.p4merge.cmd "'C:\Program Files\Perforce\p4merge.exe' $LOCAL $REMOTE"
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd "'C:\Program Files\Perforce\p4merge.exe' $PWD/$BASE $PWD/$REMOTE $PWD/$LOCAL $PWD/$MERGED"
git config --global mergetool.p4merge.trustExitCode false
git config --global mergetool.keepBackup false

总结

Git作为代码管理工具,是程序员开发必备技能,掌握常用命令,大大提高开发效率。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言