Git的使用方法

Posted on 2017-05-05 14:39  dyzne  阅读(204)  评论(0编辑  收藏  举报

开发环境

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)