5

リモートのgitリポジトリ(--bareオプションで初期化したもの)を作成し、それにいくつかのソースファイルをプッシュしようとしています。

私はローカルのgitリポジトリと裸のリモートを持っています:

ubuntu@ip-LOCAL-IP:~/notebooks$ cat .git/config  
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
[remote "nbcsm"]
    url = ssh://ubuntu@ec2-RE-DA-CT-ED.compute1.amazonaws.com/home/ubuntu/notebooks/.git
    fetch = +refs/heads/*:refs/remotes/nbcsm/*

次のコマンドでローカルリポジトリを作成しました:1。2 git init . 3. git add *.ipynb `git commit-m"IPythonノートブックの最初のインポート"

次に、viを使用して* .ipynbファイルを編集し、を実行して、ローカルリポジトリがその中のファイルを追跡していることを確認しましたgit status。gitは変更されたファイルを認識します。

ただし、git push nbcsm masterプッシュを実行すると成功したように見えますが、リモートコンピューター/インスタンスのターゲットディレクトリが空です(つまり、リモートにプッシュしようとしているファイルが含まれていません)。

ubuntu@ip-LOCAL-IP:~/notebooks$ git push nbcsm master
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Counting objects: 11, done.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 2.49 KiB, done.
Total 9 (delta 5), reused 0 (delta 0)
To ssh://ubuntu@ec2-ec2-RE-DA-CT-ED.amazonaws.com/home/ubuntu/notebooks/.git
7a50f44..295a4fa  master -> master
ubuntu@ip-LOCAL-IP:~/notebooks$

ファイルがリモートにないことを確認します。

ubuntu@ip-LOCAL-IP:~/notebooks$ ssh ubuntu@ec2-ec2-RE-DA-CT-ED.compute-1.amazonaws.com
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual x86_64)

* Documentation:  https://help.ubuntu.com/

System information as of Tue Dec 18 16:46:23 UTC 2012

System load:  0.02              Processes:           63
Usage of /:   41.7% of 7.97GB   Users logged in:     0
Memory usage: 12%               IP address for eth0:REMOTE-IP
Swap usage:   0%

Graph this data and manage this system at https://landscape.canonical.com/

Get cloud support with Ubuntu Advantage Cloud Guest
http://www.ubuntu.com/business/services/cloud
*** /dev/xvda1 will be checked for errors at next reboot ***

ubuntu@REMOTE-IP:~$ sudo find /home/ubuntu/ -name "*.ipynb"  
/home/ubuntu/notebooks/Untitled0.ipynb
ubuntu@ip-REMOTE-IP:~$ 

ローカルリポジトリには、プッシュされていない約12個の*.ipynbファイルがあります。これは構文の問題ではなく概念的な問題であると確信していますが、O'Reilly Gitの本のRemoteの章を読み直して、困惑しています。

4

2 に答える 2

5

git pushフックスクリプトの1つを介して明示的に指示しない限り、リモートエンドの作業ディレクトリを更新しません。通常、リモートエンドでチェックアウトしたブランチがプッシュしているブランチの1つである場合、大声で文句を言い、プッシュを拒否します。ただし、その警告を無効にしてプッシュすることはできますが、それでも作業ディレクトリは更新されません。git reset --hard HEADリモートリポジトリ(またはgit checkout master同様のもの)で実行するか、post-receiveフックを設定してそれを実行することができます。ただし、リモートリポジトリをむき出しにする方がおそらく良いでしょう。おそらく、開発リポジトリがそこにプッシュでき、本番リポジトリがそこからプルできるように、3番目のリポジトリを導入することです。

編集:わかりました。リモートリポジトリがで作成されたとおっしゃっていたので、これは別の質問です--bare。リモートリポジトリがベアの場合、ベアリポジトリには作業ディレクトリが関連付けられていないため、「通常の」方法でファイルが表示されることを期待しないでください。代わりに、いくつかのサブディレクトリ(、、、、、など)とファイル(branches、、 )が表示されます。これらは通常、非ベアリポジトリで表示されます。ただし、データがそこにあることを確認するために、および他のコマンド(など)を実行できるはずです。hooksinfoobjectsrefsconfigdescriptionHEAD.gitgit loggit show HEAD:<some_file>

于 2012-12-18T18:12:05.797 に答える
1

git statusそのgitはファイルが変更されたことを確認します。

git statusファイルが変更されていないことを通知する必要があります。

git status
# On branch master
nothing to commit (working directory clean)

変更されたファイルがリストされている場合は、プッシュする前に、まずそれらのファイルを追加してコミットする必要があります。

git add .
git commit -m "my commit message"
git push -u  nbcsm master 

さらに、サーバー側でチェックアウトされているブランチを確認してください。

cd /home/ubuntu/notebooks
git branch

警告なしに非ベアリポジトリにプッシュすることはできません。
ただし、持っていなかったため、別のブランチがチェックアウトされている可能性があります。

于 2012-12-18T17:08:45.467 に答える