1。首先创建一个本地仓库,如下:
client客户端:
wangwengang@jacky:~$ mkdir Test
wangwengang@jacky:~$cd Test
wangwengang@jacky:~/Test$ git init
Initialized empty Git repository in /home/wangwengang/Test/.git/
wangwengang@jacky:~/Test$ vim hello.cwangwengang@jacky:~/Test$ gcc hello.c -o hello
wangwengang@jacky:~/Test$ git add *
wangwengang@jacky:~/Test$ git commit -a -m "add hello.c hello"
我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。
2。创建远程仓库
server服务器端,主机地址:192.168.1.1:
srv64:/srv/gitdir/qt-repo# mkdir Test
srv64:/srv/gitdir/qt-repo# cd Test/
srv64:/srv/gitdir/qt-repo/Test# git --bare init
Initialized empty Git repository in /srv/gitdir/qt-repo/Test/
srv64:/srv/gitdir/qt-repo/Test#
当远程仓库创建成功后,把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
client客户端:
wangwengang@jacky:~/Test$git remote add origin root@192.168.1.1:/srv/gitdir/qt-repo/Test/
wangwengang@jacky:~/Test$ git push -u origin master
root@192.168.4.253's password:
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 3.07 KiB, done.
Total 5 (delta 0), reused 0 (delta 0)
To root@192.168.4.253:/srv/gitdir/qt-repo/Test/
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
wangwengang@jacky:~/Test$
3。其他主机克隆
others其他主机:
wangwengang@jacky:~$
git clone root@192.168.1.1:/srv/gitdir/qt-repo/Test Test_clone
Cloning into 'Test_clone'...
root@192.168.4.253's password:
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (8/8), done.
Resolving deltas: 100% (1/1), done.
wangwengang@jacky:~$ cd Test_clone/
wangwengang@jacky:~/Test_clone$ ls
hello hello.c
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,像是日志或者编译过程中创建的等等。我们可以创建一个名为 .gitignore的文件,列出要忽略的文件模式,例如我们要去掉.o和.d文件:
wangwengang@jacky:~/Test$vim .gitignore
*.o
*.d
注意:.gitignore必须与.git在同級目录下,“.gitignore”文件里面的内容就是
wangwengang@jacky:~/Test$ mkdir aa
wangwengang@jacky:~/Test$ cd aa
wangwengang@jacky:~/Test/aa$ vim a.o
wangwengang@jacky:~/Test/aa$ vim a.d
wangwengang@jacky:~/Test$ git add aa/
wangwengang@jacky:~/Test$ git commit aa/ -m "add aa/"
error: pathspec 'aa/' did not match any file(s) known to git. //此时会提示没有文件可以提交,因为aa.d aa.o都被过滤掉了
wangwengang@jacky:~/Test$ cd aa/
wangwengang@jacky:~/Test/aa$ ls
a.d a.o
wangwengang@jacky:~/Test/aa$ vim aa.c //增加一个.c文件
wangwengang@jacky:~/Test$ git add aa/
wangwengang@jacky:~/Test$ git commit aa/ -m "add aa/"
[master 6c3b2cc] add aa/
1 file changed, 1 insertion(+)
create mode 100644 aa/aa.c //由此可以看到只有aa.c文件被create成功了
wangwengang@jacky:~/Test$
这一步最好是在添加文件到服务器之前做,否则后续当文件都添加到远程仓库之后再处理就比较麻烦了,只能通过删除来控制
使用 git rm -r -n *.tmp/*”)
参数解释:
-r:递归移除目录,(Allow recursive removal when aleading directory name is given.)
-f:强制删除。
git rm -r --cached *.tmp/
这篇博客详细介绍了如何在Linux环境下创建本地Git仓库,然后将本地仓库内容推送到远程Git服务器,并从远程仓库克隆到其他主机。同时,还讲解了如何使用.gitignore文件忽略特定文件类型。
655

被折叠的 条评论
为什么被折叠?



