如果我使用git存储更改,它是否只会存储未提交的文件,还是会存储那些没有被推送到git的内容?
答案 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