开发环境
OS:Linux Ubuntu 14.04.4 (中文语言)
Python: 2.7.6
Git:
版本控制软件,版本控制软件让你能够拍摄处于可行状态的项目的快照。修改项目(如实现新功能)后,如果项目不能正常运行,可恢复到前一个可行状态,通过使用版本控制软件,你可以无忧无虑地改进项目,不用担心项目因你犯了错而遭到破坏。对大型项目来说,这显得尤其重要,但对于较小的项目,哪怕是只包含一个文件的程序,这也大有裨益。
一、使用方法
(1)安装git
apt-get install git
若get不到,可尝试apt-get update后,再执行apt-get install git
(2)配置git的用户名与邮件地址
git config --global user.name “dyz”
git config --global user.email xxx@qq.com
若未给上相关信息,则在提交的时候会要求给上
(3)创建项目
以一个程序来表现git的使用方法
创建一个练习git的目录:mkdir /python/gitpractice
进入该目录,创建一个python文件:
gittest,py:
print(“test,setup1”)
(4)创建一个忽略文件
该文件的目的是忽略”.pyc”这一类的文件
.gitignore:
*.pyc
该文件为开头是点,在系统中为隐藏文件,若编辑器无法编辑,需更改编辑器的配置
ps:若python版本为3.x,会创建一个__pycache__目录,则该文件的内容为
.gitignore
__pycache__/
(5)初始化仓库
在第(3)步创建的目录中执行:git init
得到提示:
“初始化空的 Git 版本库于 /root/.git/”
输出表明 Git 在 git_practice 中初始化了一个空仓库。仓库是程序中被 Git 主动跟踪的一组文件。 Git 用来管理仓库的文件都存储在隐藏的 .git/ 中,你根本不需要与这个目录打交道,但千万不要删除这个目录,否则将丢弃项目的所有历史记录。
(6)检查状态的命令
git status
结果:
位于分支 master 初始提交 未跟踪的文件: (使用 "git add <file>..." 以包含要提交的内容) gittest.py .gitignore 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪) |
在 Git 中, 分支 是项目的一个版本。从这里的输出可知,我们位于分支 master 上。你每次查看项目的状态时,输出都将指出你位于分支 master 上。接下来的输出表明,我们
将进行初始提交。 提交是项目在特定时间点的快照。
Git 指出了项目中未被跟踪的文件,因为我们还没有告诉它要跟踪哪些文件。接下来,我们被告知没有将任何东西添加到当前提交中,但我们可能需要将未跟踪的文件加入到仓库中
(7)将文件加入到仓库
git add . #该点表示将所有文件加入到仓库
若只想加指定的文件:
git add gittest.py
再次查看状态:
git status
位于分支 master 初始提交 要提交的变更: (使用 "git rm --cached <file>..." 撤出暂存区) 新文件: .gitignore 新文件: gittest.py |
它不提交这些文件,而只是让 Git 开始关注它们。现在我们检查项目的状态时,发现 Git 找出了需要提交的一些修改。标签 “新文件”意味着这些文件是新添加到仓库中的
(8)提交
git commit -m "setup1"
将这两个新文件提交,相当于拍摄了该项目此时的快照。
-m 表示给这次提交给上备注信息
提交完成后,git status查看则表示此时没有无文件要提交,干净的工作区域
ps:此时提交的俩个文件为新文件,所以不需要加-a
若提交的为多个修改的文件,需加上-a,表示提交所有的修改的文件,可用
git commit –am “setup 1”
若提交指定的文件,可用 git commit –i 文件名 –m “setup1”
(9)查看提交历史
每次提交时, Git 都会生成一个包含 40 字符的独一无二的引用 ID 。它记录提交是谁执行的、提交的时间以及提交时指定的消息。并非在任何情况下你都需要所有这些信息
git log #git log 该命令查看得到是详细的信息
因此,Git 提供了一个选项,让你能够打印提交历史条目的更简单的版本:
git log –pretty=oneline #该命令查看得到的是只有备注信息与ID信息的模式
(10)修改文件提交
我们给gittest.py加上一条内容:print(“test”,”setup2”)
查看git status:此时我们可以看到提示“gittest.py”这个文件较之上次提交已经被修改了
我们可以选择再次提交它,让修改后的文件成为一个新的快照
git commit –am “setup2”
(11)撤销修改之回到最后一次提交
我们给gittest.py加上一条内容:print(“test”,”setup3”)
我们可以提交所做的修改,但这次我们不提交所做的修改,而要恢复到最后一个提交(我们知道,那次提交时项目能够正常地运行)。为此,我们不对 执行任何操作 —— 不删除刚添加的代码行,也不使用文本编辑器的撤销功能
执行:git checkout . 注意“点”
命令 git checkout 让你能够恢复到以前的任何提交。命令 git checkout . 放弃自最后一次提交后所做的所有修改,将项目恢复到最后一次提交的状态。
这些再查看git status,没有修改的文件
以及文件的内容,内容应为:
print("test","setup2")
ps:该情形为错写的内容未提交
(12)撤销修改之回到指定的一次提交
a.查看提交历史的ID:git log –pretty=oneline
b.执行git reset –hard id的前四位及以上,如git reset --hard 253f(第一次提交的ID)
这个时候来查看git log,log中只有第一次提交的记录
查看文件,内容只有print("test","setup1")
(13)删除仓库
若想删除这个仓库
rm -rf .git
删除这个仓库,不会影响这个仓库原先关注的文件
二、相关命令
安装git : apt-get install git
初始化仓库:git init
查看git状态:git status
添加新文件到仓库:git add . /git add 文件名
提交新文件:git commit –m “xxx”
提交所有修改的文件:git commit –am “xxxx”
提交指定修改的文件:git commit –i 文件名 -m “xxxx”
查看提交历史:git log/git log –pretty=oneline
撤销到最后一次提交:git checkout . (适用未提交)
撤销到指定一次提交:git reset –hard 提交记录ID前四位及以上
git checkout 记录ID (核实提交ID,进入分离头指针状态)
git checkout master (回到master分支)
git commit命令帮助:git help commit (详细)
用法:git commit [选项] [--] <路径规则>...
-q, --quiet 提交成功后不显示概述信息
-v, --verbose 在提交说明模板里显示差异
提交说明选项
-F, --file <文件> 从文件中读取提交说明
--author <作者> 提交时覆盖作者
--date <日期> 提交时覆盖日期
-m, --message <说明> 提交说明
-c, --reedit-message <提交>
重用并编辑指定提交的提交说明
-C, --reuse-message <提交>
重用指定提交的提交说明
--fixup <提交> 使用 autosquash 格式的提交说明用以修正指定的提交
--squash <提交> 使用 autosquash 格式的提交说明用以压缩至指定的提交
--reset-author 现在将该提交的作者改为我(和 -C/-c/--amend 参数共用)
-s, --signoff 添加 Signed-off-by: 签名
-t, --template <文件>
使用指定的模板文件
-e, --edit 强制编辑提交
--cleanup <default> 设置如何删除提交说明里的空格和#注释
--status 在提交说明模板里包含状态信息
-S, --gpg-sign[=<key id>]
GPG 提交签名
提交内容选项
-a, --all 提交所有改动的文件
-i, --include 添加指定的文件到索引区等待提交
--interactive 交互式添加文件
-p, --patch 交互式添加变更
-o, --only 只提交指定的文件
-n, --no-verify 绕过 pre-commit 钩子
--dry-run 显示将要提交的内容
--short 以简洁的格式显示状态
--branch 显示分支信息
--porcelain 机器可读的输出
--long 以长格式显示状态(默认)
-z, --null 条目以NUL字符结尾
--amend 修改先前的提交
--no-post-rewrite 绕过 post-rewrite 钩子
-u, --untracked-files[=<模式>]
显示未跟踪的文件,“模式”的可选参数:all、normal、no。(默认:all)