git stash会隐藏所有更改,还是只保留未提交的更改

时间:2016-07-05 02:04:25

标签: git

如果我使用git存储更改,它是否只会存储未提交的文件,还是会存储那些没有被推送到git的内容?

3 个答案:

答案 0 :(得分:2)

你的问题的答案是,Git会将尚未提交的所有内容存储到你当地的分支机构。

当您执行import ftplib import socket class FTP(ftplib.FTP): # KLUDGE, MANUAL BACKPORT OF source_address # => REMOVE WHEN MOVING TO PYTHON3 def __init__(self, *args, **kwargs): self.source_address = kwargs.pop("source_address", None) super(FTP, self).__init__(*args, **kwargs) def connect(self, host='', port=0, timeout=-999, source_address=None): if host != '': self.host = host if port > 0: self.port = port if timeout != -999: self.timeout = timeout if source_address is not None: self.source_address = source_address self.sock = socket.create_connection((self.host, self.port), self.timeout, self.source_address) self.af = self.sock.family self.file = self.sock.makefile('rb') self.welcome = self.getresp() return self.welcome def ntransfercmd(self, cmd, rest=None): size = None if self.passiveserver: host, port = self.makepasv() conn = socket.create_connection((host, port), self.timeout, self.source_address) try: if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply, resp except: conn.close() raise else: sock = self.makeport() try: if rest is not None: self.sendcmd("REST %s" % rest) resp = self.sendcmd(cmd) if resp[0] == '2': resp = self.getresp() if resp[0] != '1': raise ftplib.error_reply, resp conn, sockaddr = sock.accept() if self.timeout is not socket._GLOBAL_DEFAULT_TIMEOUT: conn.settimeout(self.timeout) finally: sock.close() if resp[:3] == '150': size = ftplib.parse150(resp) return conn, size 时,它实际上会进行两次临时提交。第一个包含您已暂存的文件(即通过对它们执行git stash)。第二个实际上包含您的工作目录文件。

当您执行git add时,Git将恢复工作目录。但是,如果您执行git stash apply,那么它也将尝试恢复索引(即您的暂存文件)。

因此git stash apply --index清除平板,并使您的阶段和工作目录处于最近提交时的状态。

答案 1 :(得分:1)

它将隐藏工作目录的脏状态,特别是已修改的跟踪文件以及已暂存但尚未提交的更改。

没有必要保存已提交的文件,因为它们已被提交。因此,如果通过“推送到git”表示已被推送到镜像/原始仓库的本地提交,它们也不会被保存(因为它们已经被提交)。

答案 2 :(得分:0)

来自git stash文档:

  

Stashing采用工作目录的脏状态 - 即修改后的跟踪文件和分阶段更改 - 并将其保存在一堆未完成的更改中,您可以随时重新应用这些更改。 Source