Git练习题

Git练习题

2023年7月7日发(作者:)

Git练习题

说明:

本文使用了不同的字体来表示不同类型的文字:

输出:output

输入:input

替换:replaced

一些特殊的符号:

$ 表示shell提示符

[text] 表示文字“text”是可选的,你可以输也可以不输

一些典型的例子:

$ git --version

git version 1.7.1

$ echo Insert your text [here]

Insert your text here

访问练习git库的方法:

服务器: (192.168.9.142)

用户:exercise

密码:123456

注:git使用密码访问没有问题,但是使用repo sync下载代码时会要求输入很多次密码,因为每个git库都会要求输入密码。这里我们提供一个简单的方法(在你的机器上操作):

1、建立一个新用户(比如叫test)

$ sudo useradd -m test

2、切换到该用户

$ sudo su - test

3、把服务器上的exercise用户目录下的.ssh目录拷贝过来

$

scp -r exercise@192.168.9.142:.ssh .

4、测试连接服务器是否不需要密码了

$

ssh exercise@192.168.9.142

如何不需要密码就可以连接上服务器就说明配置已经成功了,你在做下面的练习的时候就不需要输密码了。

练习1:

在你的本机配置git和repo

在这个练习中,我们将在你的本机上配置git和repo环境。包括具体的用户设置(.gitconfig文件)和gerrit的设置。我们也会下载练习的git库。

步骤1:在~/.gitconfig文件中设置用户名和邮件地址。

1、 打开一个终端,运行下面的命令(你可能需要替换一些变量为你希望的值,下同):

$ git config --global "FirstName Lastname"

$ git config --global youremailaddress@

(eg: git config --global scm@)

2、 配置你的默认编辑器(设置为vim)

$

git config --global vim

你也可以设置为其他你喜欢的编辑器,emacs或nano

3、配置git的颜色

$ git config --global auto

3、 检查你的设置

$ cat ~/.gitconfig

你应该看到类似下面的内容:

[user]

[core]

editor = vim

name = Firstname Lastname

email = youremailaddress@

ui = auto

[color]

步骤2:使用repo下载git库。

1、 创建一个exercises的目录:

$ mkdir ~/exercises

2、 进入~/exercises目录

3、 用repo下载练习git库:

$ repo init –u exercise@:

$ repo sync

用ls命令查看是否把所有的库都下载下来了(可以和.repo/文件中的project项对比)。

4、用repo start命令将所有git库切换到正确的分支上:

$ repo start test --all

5、检查分支是否切换正确:

$ repo branches

* test | in all projects

练习2:

在这个练习中,我们主要关注如何恢复(reset)你的工作目录(working directory)和索引(index)。这在出问题后我们想重新开始的时候是很有用的。我们将实践增加和删除文件。

在做练习之前,需要对git库做一些准备工作,请进入scripts目录执行脚本。

练习2a

创建一个新文件并暂存到index中。同时从index中取消暂存。

1、 进入代码目录,例如~/exercises/exercise-2a/

2、 用编辑器创建一个新文件,保存成

3、 用git status命令查看状态。你的文件现在在上图中的哪个状态下?

4、现在运行git add

5、再运行git status命令查看状态。你的工作目录下发生了什么变化?这次你的文件在上图中的哪个状态下?

6、现在,我们尝试取消暂存状态。运行命令:

$ git reset --

这次你的文件在上图中的哪个状态下?

提示:如果运行git reset后面不指定具体的文件,那么所有文件都会被取消暂存。

练习2b

如何恢复所有内容

1、进入~/exercisers/exercise-2b目录。这实际是另外一个git库。如果你运行命令git status,你会发现我们已经准备好了一些文件。

Working directory

Tracked

Untracked

tracked-working_directory_

untracked-working_directory_

Index

tracked-added_to_

untracked-added_to_

2、你想取消所有的操作回到上次的提交(HEAD),这可以用命令git clean和git reset

–-hard来实现。第一个命令是用来清除所有的编译结果(新生成的)文件的,并且它只会影响这些文件。

3、现在我们运行git clean -f来清除编译结果文件。

4、检查哪些文件被清除了。

5、现在恢复其他的修改到HEAD。

$ git reset –-hard HEAD

6、运行git status检查一下,看看和上表相比它影响了哪些文件?是所有文件吗?

练习3:

在这个练习中,我们会查看git库的历史信息,比较工作目录,index和分支。

步骤1:用git log检查提交日志。

1、 进入目录~/exercises/exercise-3

2、 运行命令git log查看git库的历史信息

$ git log

3、 运行命令git branch查看所有的本地分支,分支名前面有*的表示当前分支。在这个列表中你还可以看到其他的一些分支,现在我们来看看分支feature的历史:

$ git log feature

4、 查看指定文件或目录的历史也是可以的,可以用下面的命令:

$ git log –- file

步骤2:使用git diff来显示提交和提交之间、提交和工作目录之间的修改。

1、 进入~/exercises/exercise-3目录

2、 修改任意一个文件

3、 用命令git diff显示你的工作目录和index中的区别: $ git diff

4、 把该文件加入到index中

5、 可以用命令git diff –-cached commit来显示暂存在index中的文件和一个指定的提交的区别(如果不指定提交(commit),那么默认是和HEAD比较)

$ git diff --cached

6、 也可以显示分支之间的区别

$ git diff branch1..branch2

现在,试试显示master分支和feature分支的区别。

哪个分支显示的是绿色的行?

哪个分支显示的是红色的行?

7、用命令git reset --hard来回复工作目录和index

步骤3:使用gitk

1、 进入~/exercises/exercise-3目录

2、 切换到feature分支

$ git checkout feature

3、 运行gitk

4、 运行gitk --all

gitk和gitk --all有什么区别?

5、

gitk就像git log和git diff一样,能够显示指定文件和目录的历史信息。

同时,你可以指定你想知道的两次提交之间的区别。

用这样的格式:REF1..REF2,REF(reference)可以是一个分支,一个标记或一个SHA-1值。你可以把它理解成“从REF1到REF2”。

我们可以执行下面的命令看看test文件的修改:

$ gitk REF1..REF2 -- test

你看到了多少次提交?

练习4

在这个练习中,我们将学习如何修改一个作者错误的提交。我们还将把一次修改提交到Gerrit。

步骤1:修改一个作者错误的提交。这里我们已经做好了一个提交。

1、 进入目录~/exercises/exercise-4 2、 执行命令repo upload .,这将提交拟的修改到Gerrit。

当你看到询问是都提交时输入y并且按回车。

你是否看到了错误提示?为什么呢?使用git log来看一下你的提交的日志。

3、在你的提交中,邮件地址是wrong@,你需要修改你的提交并且重新做repo

upload。这可以用命令git commit --amend来实现。但是为了修改作者(包括邮件地址)你需要使用参数--author。

$ git commit --amend --author=”yourname@”

你会发现你上次的提交信息都还在,这是因为这实际上是在重写提交信息。保存退出就可以了,你不需要改写提交信息。

4、用git log来看看提交日志。

5、现在重新执行repo upload命令。

6、你可以通过repo upload给出的URL来连接到Gerrit去review你的修改。

步骤2:上传一个新的修改到一个已经存在的Gerritt提交上。

1、进入目录~/exercises/exercise-4

2、打开文件fix_commit_for_并且修改一些内容。

3、现在我们想把这次修改添加到一个包含上次修改的提交中。先运行git add来加入你的文件,然后运行下面的命令来使它包含到上次的修改中:

$ git commit --amend

4、检查你的修改,可以运行命令git log和git diff去检查。

5、现在你希望把你的修改过的提交作为一个新的修改upload到Gerrit上,这可以用--replace参数在实现:

$ repo upload --replace .

注意,括号中的数字是你的change id,如果change id丢了或是错误的,你需要填上或改正它。

6、在Gerrit中检查你的修改。

7、把你的修改设为Abandon。这里我们只是做练习,设置为Abandon状态并不是一个必须的步骤。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688703208a163827.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信