学习到现在大家一定累积很多的程序码或是各式的档案,如何去做有效的控管其实是非常重要!
想像有个情境是你上线了一段程序码,但顾客抱怨使用上有问题,你需要紧急还原到上一版,这是就可以靠 Git 来协助你进行程序码或档案版控,快速还原上一版,就不用急忙打电话给同事找程序码。我们可以利用 Git 指令将程序码每次的版本记录起来,当哪一天需要回头检视的时候就可以直接查看。
brew install git
由於 Git 指令是打在终端机,因此有必要认识一下基本的终端机指令。
以下指令在 MacOs 与 Linux 通用
指令 | 说明 | 范例 |
---|---|---|
cd | change directory 切换目录 | cd 目录 |
cd | change directory 切换上一层 | cd .. |
tab | 系统提示该指令 | (需搭配其他指令,例如 cd 搭配 tab 可以直接看到可以切换目录) cd (按tab) |
ls | list 列出目录有的档案 | -l 显示完成档案权限(可不加) -a 显示.开头的档案(可不加) ls -al |
mkdir | make directory建立一个资料夹 | mkdir 资料夹名称 |
cp | copy 复制档案或资料夹 | -r 代表是资料夹操作(可不加) cp -r 原档案或资料夹路径 新档案或资料夹路径 |
rm | remove 删除档案或资料夹 | -r 代表是资料夹操作(可不加) rm -r 档案或资料夹路径 |
mv | move 移动或重新命名 | (1) 将档案由 oldfile.txt 更名为 newfile.txt,所在目录不变: mv ./oldfile.txt ./newfile.txt (2) 将档案 ./dir1/filename.txt 移动到 ./dir2/ 目录下,档案名称不变:mv ./dir1/filename.txt ./dir2/ |
pwd | print working directory 显示目前路径 | pwd |
crtl+c | 强制停止目前指令执行 | |
cat | concatenate 由第一行开始显示档案内容 | cat 档案 |
tac | 由最後一行开始显示档案内容 | tac 档案 |
more | 一页一页显示档案内容 | more 档案 |
less | 与more相似,此指令可以往前翻页 | less 档案 |
鸟哥的 Linux 私房菜-第六章、Linux 档案与目录管理
设定帐号名称和信件
$ git config --global user.name "your github id"
$ git config --global user.email "your [email protected]"
查看设定的资讯,按Q可以离开
git config --list
git add
会将档案从工作目录推到暂存区git commit
会将档案从暂存区推到本地端储存库git push
会将档案从本地端储存库推到远端储存库git pull
会将档案从远地端储存库同步回工作目录git fetch
会将档案从远地端储存库同步回本地端的储存库git merge
合并使用 git status
,我们可以查看目前修改了什麽档案(modified)、删除什麽档案(deleted)以及哪些档案尚未被追踪(Untracked files)
新增一个 test.txt 档案,会在 Untracked files 列出
使用 git add 档案
,我们将档案或资料夹推到暂存区,若我们再用一次 git status
就会发现有提示一个新档案(new file)
不建议使用 git add *
,这个动作虽然可以一次把所有档案加上,但可能会加到你不要的档案(除非你有确定,不要的档案类型可以写 .gitignore )
这里有 python gitignore 的 template 就不用自己辛苦打文件XD
假设刚刚的档案反悔不想要放到暂存区或是等一下教的commit要取消, 操作git reset
即可
可以利用 git log
查询纪录,也可以直接某一次的版号
git reset 号码(前6码即可)
接着就可以进行提交 commit, 操作git commit -m "这次提交想要传达的讯息"
为了让每次的提交都知道在做什麽,会写有意义的内容(你或你的同事要看R),记得讯息一定要写!!
通常我们讯息为了要分别,有一些原则可以参考,会将下列中括号替换成下面的文字
原则文字 | 说明 |
---|---|
feature | 新增功能 |
fix | 修 bug |
refactor | 重构(不是新增功能也不是修 bug ) |
docs | 文件 |
style | 格式 |
revert | 回上一个版本 |
--amend
来修改 git commit 的讯息git commit --amend -m "Hello World!"
git rebase commit_id号码(6码即可)
来修改 git commit 的讯息
按 i 进入编辑模式
按 esc 输入 :wq! 存挡离开
看起来只有简单改讯息,但大家可以看 commit id 都变了,实际上是修改一个 commit
基本上不建议大家用这招,因为把过去讯息改掉可能会造成错乱呀!
接着就可以将本地端程序码推到远端啦!操作 git push
有人制定了规则让大家一起遵守
https://nvie.com/posts/a-successful-git-branching-model/
用比较简单的流程跟大家说明
git branch -a
git remote -v
查看远端储存库的路径git branch <branch name>
git checkout -b <branch name>
git branch -d <branch name>
git checkout <branch name>
git merge <branch name>
更详细的说明:https://gitbook.tw/chapters/branch/merge-branch.html
git checkout origin/develop -b develop
git fetch
git merge origin/master
git pull
git pull --rebase
加上此参数之後会自动做 rebase假设你与同事或专案成员共用开发,你的同事在 develop 分支上先改了一下操作(这边远端用 master 示范)
但你的 local 端,没有先更新到最新,也对同一行程序码进行编辑修改。你一样先 git add 、 git commit,当你发现 git push 时候悲剧了!
怎麽会有冲突呢? 这时候什麽东西
冲突发生在不同的分支纪录要合并时,发现居然不同的状况。 git 很贴心会把冲突的部分秀出来,这时候好好找你同事聊一聊讨论一下要改成什麽吧!把标记删除再重新推一次就可以解冲突罗!
把标记删除再重新推一次就可以解冲突罗!
git tag
git tag -a v1.5 -m "my version 1.5 and it add some ..."
git show v1.5
git push origin v1.5
git push origin --tags
你可以直接砍档案 rm 档案
把特!你会看到这个
因此你要继续做 git add 和 commit 的动作
484很麻烦!!所以贴心的 git 有这个功能 git rm 档案
可以一键呵成
跟刚刚一样,你可以使用 mv 指令换档名然後再 add commit
但 git 一样有提供一键呵成 git mv 原档名或路径 新档名或路径
可以一键呵成
本系列文章同步发布於笔者网站 前一篇文章以比较非技术角度介绍了 OpenStack 这个专案。今天开...
原始题目 Evaluate the value of an arithmetic expressio...
html的form标签之input小记录 前言本篇是上课中所提及好用,但是笔者小新手之前未发现的上课...
前面有介绍过 Module 的一些基本使用方式,然而有一项非常强大的功能没有被提及,就是 动态模组(...
强型闯入DenoLand[31] - MongoDB 安装教学 本章会分为两个部分: MongoD...