linux下Git创建本地和远程仓库

来源:互联网 发布:奥哲网络 编辑:程序博客网 时间:2024/06/01 09:21

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.c

wangwengang@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.)
-n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览,所以一般用这个参数先看看要删除哪些文件,防止误删,确认之后,就去掉此参数,真正的删除文件。

-f:强制删除。

 我们想把文件从 Git仓库中删除(亦即从暂存区域移除),但仍然希 望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者 一堆.a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached选项即可:

git rm -r --cached *.tmp/

0 0
原创粉丝点击