Git将文件复制到服务器

时间:2019-01-04 11:30:34

标签: git

在git中,我有一个bitbucket远程设置,在本地中,我有一个带有文件的新文件夹。如何将遥控器中的所有文件拉到本地,而不删除遥控器中没有的文件

2 个答案:

答案 0 :(得分:1)

方案1:这些是未跟踪的文件
您可以pull。您所有未跟踪的文件都不会被替换

Git是一个版本控制系统。它跟踪您要求它跟踪的文件。因此,即使您没有设置用于git跟踪的文件,即使您从远程git pull也不会替换该文件。

这是一个演示bash脚本,实际上将重新创建您的场景。

#!/bin/bash

#from your home (~/) directory 
mkdir temp && cd temp

#Init a git bare repo (this is your remote)
git init --bare remote.git

#create local working tree 1 (this is user 1)
mkdir local_1 && cd local_1
git init
git remote add origin ~/temp/remote.git
touch file1
git add file1
git commit -m "first commit"
git push --set-upstream origin master
cd ..

# create local working tree 2 (this is user 2)
git clone remote.git
mv remote local_2 && cd local_2
touch file2

#make a new commit in local_1 and push it
cd ../local_1
touch file3
git add file3
git commit -m "second commit"
git push

#come back to local_2
cd ../local_2
#Pull and update your branch
git pull
#let's see if you still have file2 in your working tree.
ls file2
#yes you do!

运行此命令后,您会发现file2目录中仍然存在local_2

方案2 :这些是跟踪文件。
如果文件已更改,拉动将导致冲突。因此,您只需要进行合并工作即可。

答案 1 :(得分:0)

我几乎从不使用git pull,而总是使用git fetch <remote>(例如git fetch origin)。这将从远程获取文件,而无需修改本地工作文件。然后,您可以通过执行以下操作来进一步检查:

git log --decorate --oneline --graph -20

我实际上将其别名为git tree-您可以使用以下方式设置别名:

git config alias.tree llog --decorate --oneline --graph -20'

使用git fetch <remote>提取文件后,您就可以使用我提供的git tree别名或通过签出远程分支来查看它们。