在git中,我有一个bitbucket远程设置,在本地中,我有一个带有文件的新文件夹。如何将遥控器中的所有文件拉到本地,而不删除遥控器中没有的文件
答案 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
别名或通过签出远程分支来查看它们。