我有一个远程git repo和一个本地克隆。假设我丢失了我的本地.git目录,随后添加并删除了一些文件到本地工作目录。
在某些时候,我想重新启动本地仓库,将它连接到远程,并最终将我的本地工作目录完全按原样推送到遥控器(也就是说,我想要添加所有/删除的文件在遥控器中相同)
我将如何做到这一点?
这是我目前的解决方案,我不喜欢(并且可能不适用于所有情况)。
git init
git remote add origin [some_url]
git add。 #添加工作目录中的所有文件
git commit -m“添加文件”
(此时,我目前的想法是:
分支,
将遥控器取入其中,
'git diff master branch> my_patch'
将该补丁应用于分支
从分支推送到远程,
拉入主人,
并杀死分支。)
显然,我的想法非常复杂和丑陋。有什么想法吗?
答案 0 :(得分:9)
这样的事情(假设你是从丢失的.git时刻开始的)?
# Make the current directory a git repository.
# This puts you on a master branch with no commits.
git init
# Add a reference to the remote repository.
git remote add origin urlurlurl
# Fetch the remote refs.
git fetch
# Without touching the working tree, move master branch
# from nowhere onto the remote master.
git reset origin/master
# Stage all changes between the new index and the current tree.
git add -A
# Make a commit of these changes.
git commit -m "New working tree as a patch on remote master"
答案 1 :(得分:3)
我认为没有必要在你的案例中创建一个新分支。这是我的答案: 在当前本地破损的仓库中执行以下操作:
git init
git add .
git commit -m 'add files' #create the local master branch
git remote add myproj [some_url]
git fetch myproj
git branch -r #check the remote branches
git diff master..myproj/master #view the diffs between your local and remote repos
#now you are sure there is no conflict,
#so you merge the remote to your local master branch
git pull myproj master
git push myproj #push your local master branch to remote
#now your upstream and downstream is sync'ed
答案 2 :(得分:1)
这是我目前的解决方案(假设我已经在包含当前文件的目录中,但是没有得到git repo)
git clone -n [git_url] tmp_git_dir
mv tmp_git_dir/.git .
rm -rf tmp_git_dir
git add .
git commit -a -m "commit message"
这看起来更简单,并会根据需要自动添加和删除文件。我认为它也更有效率。
我想知道 - 有没有办法将git repo克隆到当前目录中(基本上我只想在当前目录中使用.git目录,所以我不需要执行mv和rm)?
答案 3 :(得分:0)
很抱歉,如果我误解了你,但我认为你只是想做标准拉动和推动? Have a read of this。 Git会为您处理任何合并,如果有冲突,您可以轻松地对它们进行排序。