我有一个非空目录(例如/etc/something),其中的文件不能被重命名、移动或删除。 我想检查这个目录到git到位。 我希望能够使用“git push”或类似的东西将这个存储库的状态推送到远程存储库(在另一台机器上)。

这是微不足道的使用Subversion(目前我们使用Subversion)使用:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

git等价于什么?

我可以“git克隆”到一个空目录,并简单地移动.git目录,一切工作吗?


当前回答

什么时候一个github存储库不是空的,像。gitignore和许可证

使用pull -allow-unrelated-histories和push -force-with-lease

使用命令

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

其他回答

这是2021年新的官方做法。导航到包含文件的目录。这假设存储库中没有文件。

git init
git add .
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.gi
git branch -M main    # New
git push -u origin main # New

有时我必须使用这个命令来设置上游。

git branch --set-upstream-to=origin/main main

然后用这个命令强制push。

git push -u origin main --force

假设你已经在<url>和一个空仓库上设置了一个git守护进程:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin main

我也遇到过类似的问题。我创建了一个新的存储库,不在我想要创建存储库的目录中。然后,我将创建的文件复制到我想要创建存储库的目录。然后使用刚才将文件复制到的目录打开现有存储库。

注意:我确实使用github桌面来制作和打开现有的存储库。

如果远程存储库不是空的(如果您在hub.jazz.net上使用IBM DevOps就是这种情况),那么您需要使用以下顺序:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

1月17日编辑: 请参阅下面的评论,确保你是正确的回购!

以下是我的解决方案:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master