个性化阅读
专注于IT技术分析

深入Git开发:Git仓库之stash操作、移动、rename和删除操作详解

上一章Git教程请查看:Git push推送和update更新操作

这一章我们详细讨论git仓库的stash操作、移动mv操作、rename操作和删除rm操作。

1、stash操作

假设你正在为产品实现一项新功能,你的代码正在进行中,突然客户要求升级,因此你必须将新功能搁置几个小时。你不能提交部分代码,也不能放弃所做的更改,因此你需要一些临时空间,你可以在其中存储部分更改,并在以后提交它。

在Git中stash操作将获取已修改的跟踪文件、分段更改,并将其保存在未完成的更改堆栈中,你可以随时重新应用它们。

$ git status -s

现在你想切换新分支解决用户升级的问题,但是你不想提交你一直在进行的工作,这样就可以保存更改。要将新的存储区推入堆栈,请运行git stash命令。

$ git stash

【在主服务器上保存了工作目录和索引状态WIP:xx添加了my_strcpy函数

HEAD现在位于xx添加了my_strcpy函数】

现在你的工作目录很干净,所有更改都保存在堆栈中。让我们用git status命令验证它。

$ git status -s

现在你可以安全地切换分支并在其他地方工作,我们可以使用git stash list命令查看隐藏的更改列表。

$ git stash list

假设你已经解决了客户升级的问题,并且又回到了新功能中寻找未完成的代码,只需执行git stash pop命令,从堆栈中删除更改并将其放置在当前工作目录中即可。

$ git status -s

$ git stash pop

2、移动mv操作

顾名思义移动操作将目录或文件从一个位置移动到另一个位置,现在UserA决定将源代码移至src目录,修改后的目录结构将显示如下:

$ pwd

$ ls

$ mkdir src

$ git mv string.c src/

$ git status -s

为了使这些更改永久生效,我们必须将修改后的目录结构推送到远程仓库,以便其他开发人员可以看到这一点。

$ git commit -m "已更改目录结构"

$ git push origin master

在UserB的本地仓库中,执行拉操作之前,它将显示旧的目录结构。

$ pwd

$ ls

但是在pull操作之后,目录结构将得到更新。现在UserB可以看到src目录和该目录中存在的文件。

$ git pull

$ ls

$ ls src/

3、rename操作

到目前为止UserA和UserB都使用手动命令来编译他们的项目,现在UserB决定为其项目创建Makefile,并为文件“ string.c”指定一个适当的名称。

$ pwd

$ ls

$ cd src/

$ git add Makefile

$ git mv string.c string_operations.c

$ git status -s

Git在文件名前显示R,以表明该文件已被重命名。

对于提交操作,UserB使用了-a标志,该标志使git commit自动检测修改后的文件。

$ git commit -a -m 'Added Makefile and renamed strings.c"

提交后,他将所做的更改推送到仓库。

$ git push origin master

现在其他开发人员可以通过更新其本地仓库来查看这些修改。

4、删除rm操作

UserA更新了本地仓库,并在src目录中找到了已编译的二进制文件,查看提交消息后他意识到UserB添加了已编译的二进制文件。

$ pwd
/home/tom/project/src

$ ls

$ file string_operations

$ git log

VCS仅用于存储源代码,而不用于存储可执行二进制文件,因此UserA决定从仓库中删除此文件,为了进行进一步的操作,他使用了git rm命令。

$ ls

$ git rm string_operations

$ git commit -a -m "Removed binary"

提交后就可以将所做的更改推送到仓库。

$ git push origin master
赞(0)
未经允许不得转载:srcmini » 深入Git开发:Git仓库之stash操作、移动、rename和删除操作详解

评论 抢沙发

评论前必须登录!