小呆呆的Git之旅

新晋程序员小呆呆找到了一份开发工作,在开发过程中,小呆呆将慢慢熟悉Git的一些基本使用。

创建项目

  • 组长:小呆呆,今天起我们要开始新项目的开发了。
  • 小呆呆:好哒 (๑•̀ㅂ•́)و✧

于是,小呆呆在Github上创建了新项目,并在本地创建了代码目录:

mkdir newProject
cd newProject
复制代码

接着小呆呆用git init在代码目录下初始化git项目:

git init
复制代码

随后小呆呆使用git add添加了README.md和.gitignore文件,并使用git commit提交代码:

touch README.md
touch .gitignore
git add --all
git commit -m '小呆呆的首次提交'
复制代码

如果要使用git add--all选项,请确保先仔细比对改动哦

接着通过git remote add添加远程地址:

git remote add origin git@github.com:xdd/newProject.git
复制代码

最后通过git push origin --up-stream设置远程上游为master并推送:

git push origin -u master
复制代码

提交代码

  • 组长:小呆呆,下班前代码提交一下哦。
  • 小呆呆:好哒 (๑•̀ㅂ•́)و✧

先用git status查看当前修改的文件:

git status
复制代码

git diff可以查看具体的修改:

git diff
复制代码

确认无误后,添加新增/改动的文件:

git add -A
git commit -m '哈哈哈'
复制代码
  • 组长:小呆呆,“哈哈哈”是个啥,提交信息要填写有意义的信息!
  • 小呆呆:对不起 (>人<;)

可以使用git commit --amend修改尚未推送的提交的信息

git commit --amend -m 'feature: 小呆呆添加的新功能'
复制代码

回滚代码

  • PM:小呆呆,昨天说要修改的功能,还是先不修改吧
  • 小呆呆:代码已经提交了啦 (°ー°〃)
  • 组长:回滚一下提交吧

先用git log查看一下提交日志,找到需要回滚的提交:

git log
复制代码

然后用git revert回滚提交:

git revert <commit_number>
复制代码
  • PM:之前说要修改的功能,现在要加上啦
  • 小呆呆:已经回滚了啦 (°ー°〃)
  • 组长:可以回滚回滚的提交啦

如果要将某次提交之后的改动全部回滚,还可以使用git reset --hard

git reset --hard <commit_number>
git push -f
复制代码

检出项目

  • 小呆呆:组长,我换电脑啦,怎么把代码拷贝过来呀 (@_@;)
  • 组长:git clone呀
git clone git@github.com:xdd/newProject.git
复制代码

丢弃本地修改

  • 小呆呆:组长,这些代码改错啦,怎么办呀 (@_@;)
  • 组长:这些修改不要啦吗?那就丢弃了吧

可以使用git checkout丢弃尚未添加的修改

git checkout -- .
复制代码

如果改动已经添加但还未提交,可以用git reset先取消添加:

git reset HEAD .
复制代码

暂存修改

  • 组长:小呆呆,有个紧急bug需要立即修复呀
  • 小呆呆:现在的需求正开发到一半呢 (°ー°〃)

如果不想提交开发到一半的代码,可以使用git stash暂存当前的修改:

git stash
复制代码

在完成其他工作之后,再取出之前暂存的修改:

git stash pop
复制代码

项目地址迁移

  • 组长:我们要把项目从Github迁移到gitee啦
  • 小呆呆:怎么迁移呀 (°ー°〃)

可以通过git remote rmgit remote add来修改远程仓库地址:

git remote rm origin
git remote add origin 'git@gitee.com:xdd/newProject'
复制代码

使用git remote -vgit remote show来查看远程地址:

git remote -v
git remote show origin
复制代码

当然,可以添加多个远程地址而不止一个origin,这里就不展开啦

使用分支

  • 组长:小呆呆,新来的同事会和你一起开发,现在开始要规范使用使用分支啦
  • 小呆呆:好哒 (๑•̀ㅂ•́)و✧
  • 组长:以后每次迭代就从dev分支上切出开发分支吧

git fetch可以同步项目状态:

git fetch --all
复制代码

可以看到远程已经建立dev分支了。接下来在切换到dev分支:

git checkout dev
复制代码

随后使用git branch -b从dev切出开发分支,并使用--up-stream同步远程分支:

git checkout -b feature/v1.2_xdd
git push origin -u feature/v1.2_xdd
复制代码

使用git branch命令,我们将看到本地和远程的开发分支已经建立啦:

git branch --all
复制代码

合并指定提交

  • 组长:之前让你紧急修复的bug提交到dev分支啦吗?
  • 小呆呆:啊!提交到我的开发分支啦 (°ー°〃)
  • 组长:好的,把提交cherry-pick到dev吧

使用git log查看提交记录,找到对应的提交:

git log
复制代码

切换到dev分支,并选取指定提交合并:

git check master
git cherry-pick <commit_number>
复制代码

如果要选取多个连续的提交,也可以使用git rebase,这里不展开了:

# 在开发分支上
git rebase <startpoint> <endpoint> --onto dev
git checkout dev
git reset --hard <commit_number>
复制代码

合并分支

  • 组长:小呆呆,这次迭代的开发完成了吗?合并回dev吧
  • 小呆呆:嗯呐 (๑•̀ㅂ•́)و✧

在自己的分支上解决冲突是良好习惯之一,可以使用git pull将远程先分支合并到自己的开发分支并解决冲突:

git pull origin dev
复制代码

随后切换到dev分支,并使用git merge合并自己的分支:

git checkout dev
git pull
git merge feature/v1.2_xdd
复制代码

合并还可以通过git merge --squash <branch_name>git rebase -i <start_commit> <end_commit>来执行,这两种方法会将多个提交合并为一个,使得提交记录更简洁,但修改提交记录也会引入新的问题,这里就不展开了。

删除分支

最后,删除临时的开发分支:

git branch -D feature/v1.2_xdd # 删除本地分支
git push origin :feature/v1.2_xdd # 删除远程分支
复制代码

使用git branch --all可以看到,分支被删除了。

使用tag

小呆呆开发的项目终于要上线啦!通过tag来管理代码部署是一个好习惯。

查看标签

使用git tag或是git tag -l查看标签列表:

git tag
git tag -l 'v1.3*'
复制代码

使用git show <tag_name>查看制定tag的信息:

git show <tag_name>
复制代码

添加标签

git tag -a v1.3.2 -m '修复几个小Bug'
git push --tags
复制代码

从远程同步tags

git fetch --tags
复制代码

git fetch --all操作也包含了标签的同步

来自故宫淘宝的小呆呆:

转载于:https://juejin.im/post/5c9384c9f265da610762f465

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值