2012-11-23 7 views
15

正確にはgit initとは何ですか?コンピュータごとに、またはgitを使用するプロジェクトごとに1回行う必要がありますか?私はgit cloneで私のプロジェクトをダウンロードしてそれを稼働させましたが、現在はC:/Users/myUser/gitに私のプロジェクトを保存しています、それは特定のフォルダですか、私はそれを変更できますか?git initの理解

私はそのフォルダについてよく分かりませんが、ローカルのgit repoや何かのようですが、それを管理しているのか、そのパスを使っているのか、説明してください。

これは私が間違っています、まっすぐな事実を取得する必要があるなら、私を修正し、私が理解です:

  1. git initは、「ユーザー」の下のgitフォルダがローカルレポと毎回iは、すべてのプロジェクト
  2. のためでありますgit commitを実行すると、そのフォルダが更新されます。
  3. git pushを実行すると、そのローカルリポジトリからリモートリポジトリに移動します。
  4. 私は「HEAD」に更新したい場合は、あなたがいくつかの詳細を逃しているのに、私はちょうどgit pull

答えて

30

これは実際には多くの疑問と誤解です。私はそれらをすべて扱うことができるとは思わないので、私は直接尋ねられるものに対処するつもりです。

  1. のgit initはすべてのプロジェクト

    ほぼ正しいです。 git initは、gitの下にないプロジェクトでgitを使い始めるために使われます。すでにgitの下にあるプロジェクトの場合は、git cloneを使用してください。

  2. "ユーザー" の下のgitフォルダが

    ほぼ正しいローカルレポです。フォルダは実際には.gitではなく、gitです。これは、ドットで始まるすべてのファイルとフォルダが隠されているとUnix規則から来ています。

    第2に、フォルダはユーザーフォルダの下にありません。あなたのプロジェクトフォルダの下にあります。したがって、フォルダC:/Users/myUser/は1つのプロジェクトです。これがあなたの意図でない場合は、あなたのUserフォルダに誤ってgit initを実行している可能性があります。

    各プロジェクトは、プロジェクトのルートディレクトリにある.gitフォルダを1つ持ち、プロジェクトのリポジトリです。これは、gitがsvnやcvsと比べて非常に速い理由の1つです。リポジトリ全体は、ネットワークトラフィックなしでローカルハードディスク上で処理されます。

  3. 私はGitのプッシュを行うと、それはだけコピーするgit cloneを使用して作成した通常のレポですリモコンを(持っているレポ取引について、そのローカルレポからとり、およびリモート

    修正するために置きますリモートレポ)。

    リモートリポジトリは、別のマシン上にある必要はありません。プロジェクトをローカルフォルダから別のフォルダに複製してから、新しいフォルダの変更を元のフォルダに戻すことができます。

    git cloneコマンドは、リモートに接続するために必要な設定を自動的に設定します。リモートに接続するにはgit initで手動でレポを設定することもできます。 .gitフォルダは、プロジェクトのリポジトリを管理し、それ

    "管理" 何

  4. 。 Gitはサーバー*として動作しません。その代わりに、.gitフォルダは、すべてのgitコマンドが通信するローカルの「サーバ」として機能します。基本的には、gitコマンドを実行すると、.gitフォルダの内容が編集されます。

    注:リモートリポジトリは、サーバーに接続できるようにサーバーを実行します。しかし、技術的には実際にはgitサーバではありません。 gitがダウンロードしてアップロードできるファイルサーバです。私は私のプロジェクトフォルダに午前と `gitのcommit`を書くとき

+0

だから、それは私のプロジェクトフォルダにもあり' .git'フォルダに私の新しいデータを転送しますか?あるいは 'git push'が外部リポジトリにファイルを送るので、ファイルをどこにコミットしますか? – Jaanus

+0

@Jaanus:そうです。 'git commit'は、最新のチェンジセットを' .git'フォルダのHEADにステージングから保存します。 'git push'はリモートリポジトリと' .git'フォルダを同期させ、 'git pull'は' .git'フォルダをリモートリポジトリと同期させます。 – slebetman

3

あなた 4理解は、多かれ少なかれ正しいん。

git initは、リポジトリを初期化(つまり作成)します。各プロジェクトは独自のリポジトリに存在する必要があります。

git cloneを使用してプロジェクトをダウンロードした場合は、git initを再度実行する必要はありません。

プロジェクトを悪影響を及ぼすことなく別のディレクトリにコピーすることができます。そのパスはおそらくデフォルトで選択されていました。必ずディレクトリ全体を移動してください。 gitが実行する必要があるメタデータは、プロジェクトのディレクトリの隠しファイルに格納されます。

プロジェクトを他の人と一緒に作業しているときや、ブランチを使用しているときは、押したり引っ張ったりする作業が複雑になることがあります。ここで話題の完全な紹介を書くのは本当に賢明ではありませんので、より完全な説明についてはPro Gitとお読みください。

2

git initは、独自の新しいリポジトリを最初から作成した場合のみです。これは、ディレクトリを空のgitリポジトリに変えます。

git cloneを使用して既存のリポジトリを新しいリポジトリに複製する場合、git initは必要でもなくてもかまいません。

-1
#!bin/bash 
DATE=`date +%m%d%Y.%H%M%S` 
TARGET="$1.$DATE" 
DIR=`pwd` 


function batch_convert() { 
for file in `ls $1` 
do 
if [ -d $1"/"$file ] 
then 
batch_convert $1"/"$file 
else 
dos2unix $1"/"$file 
#echo $1"/"$file 
fi 
done 
} 

################## 

echo $TARGET 
cd $DIR/DCW 
git pull 
cd ../ 
batch_convert DCW 
cp -R DCW tmp/$TARGET 
cd tmp/$TARGET 
find . -type d -name "*git*"| xargs -n20 rm -rf 



for db in `cat $DIR/tmp/$TARGET/Dblist` ; do 
     echo "********** DB IS $db *******" 
     for dbfolder in `find * -maxdepth 0 -type d` ;do 
    echo `ls -a` 
     echo "***** DBFolder is $dbfolder *****" 
    if [ ! $dbfolder = $db ];then 
    cp -R $dbfolder $db 
    find $db -name "*.ctl"| xargs -I '{}' mv '{}' $db/${db}.ctl 
    fi 
    done 
done 
cd ../ 
tar -cf $TARGET.tar $TARGET 
+0

これは素晴らしい答えかもしれませんが、説明やコメントを付けて、これが何をしているのか、どのようにgitの問題に対処しているのか分かりません。具体的には何が起きていますか、なぜこの回答が提出されたのですか?どうもありがとう。 – zipzit

関連する問題