gogs的使用


gogs

 

https://gogs.io   # go語言開發的git服務器;

https://www.percona.com/downloads/   #mysql咨詢和軟件包裝,比mysql性能強

 

linux_amd64.tar.gz   #gogs0.11.4

Percona-Server-5.5.45-37.4-r042e02b-el6-x86_64-bundle.tar

 

]# tar xf Percona-Server-5.5.45-37.4-r042e02b-el6-x86_64-bundle.tar

]# tar xf linux_amd64.tar.gz

]# ls

gogs                                                       Percona-Server-devel-55-5.5.45-rel37.4.el6.x86_64.rpm

gogs_0_11_4_linux_amd64.tar.gz                             Percona-Server-server-55-5.5.45-rel37.4.el6.x86_64.rpm

Percona-Server-5.5.45-37.4-r042e02b-el6-x86_64-bundle.tar  Percona-Server-shared-55-5.5.45-rel37.4.el6.x86_64.rpm

Percona-Server-55-debuginfo-5.5.45-rel37.4.el6.x86_64.rpm  Percona-Server-test-55-5.5.45-rel37.4.el6.x86_64.rpm

Percona-Server-client-55-5.5.45-rel37.4.el6.x86_64.rpm

 

]# yum -y install Percona-Server-shared-55-5.5.45-rel37.4.el6.x86_64.rpm Percona-Server-server-55-5.5.45-rel37.4.el6.x86_64.rpm Percona-Server-client-55-5.5.45-rel37.4.el6.x86_64.rpm   #有先后順序,shared要在前面

 

注:

Error: mysql-server conflicts with Percona-Server-server-55-5.5.45-rel37.4.el6.x86_64

Error: mysql conflicts with Percona-Server-client-55-5.5.45-rel37.4.el6.x86_64

如有以上報錯,卸載mysql即可,yum remove mysql-server mysql

 

]# /etc/init.d/mysql start

Starting MySQL (Percona Server)..                          [  OK  ]

]# ss -tanl | grep :3306

LISTEN     0      50                        *:3306                     *:*    

 

]# /usr/bin/mysql_secure_installation

……

 

]# mysql -uroot -p

Enter password:

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| log_db             |

| mysql              |

| tarena             |

| web02              |

| web03              |

| web09              |

+--------------------+

7 rows in set (0.04 sec)

 

 

]# useradd git

]# id git

uid=506(git) gid=506(git) groups=506(git)

 

]# tar xf linux_amd64.tar.gz

]# cd gogs

]# vim scripts/mysql.sql   # utf8mb4,該字符集在mysql5.5以下版本不支持

 

]# mysql -uroot -p < scripts/mysql.sql   #必須要在解壓的根路徑下執行該腳本

]# mysql -uroot -prootqazwsx

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| gogs               |

| log_db             |

| mysql              |

| tarena             |

| web02              |

| web03              |

| web09              |

+--------------------+

8 rows in set (0.00 sec)

 

mysql> GRANT ALL ON gogs.* TO 'gogs'@'%' IDENTIFIED BY 'gogs';

Query OK, 0 rows affected (0.00 sec)

 

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

 

mysql> select User,Password,Host from user;

+------+-------------------------------------------+-----------+

| User | Password                                  | Host      |

+------+-------------------------------------------+-----------+

| root | *247FDDD1F94735215EEDBA224C4434C291D64319 | localhost |

| root | *247FDDD1F94735215EEDBA224C4434C291D64319 | 127.0.0.1 |

| gogs | *461C3A96BAEF66E327658B3AFF86F8D71BEE3F99 | %         |

+------+-------------------------------------------+-----------+

3 rows in set (0.00 sec)

 

 

https://gogs.io/docs/advanced/configuration_cheat_sheet.html   #配置文件手冊

通用配置:

APP_NAME,應用名稱,可改為組織或公司名;

RUN_USER,運行應用的用戶名稱,建議使用git,如果在個人pc上運行gogs,需改為系統用戶名稱,如果沒有正確設置這個值,可能導致應用崩潰;

 

server服務器配置:

HTTP_ADDR,應用http監聽地址;

HTTP_PORT,應用http監聽端口;

DOMAIN,服務器域名,會影響ssh clone地址;

ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/,公開的完整url路徑;

 

repository倉庫:

ROOT,用戶倉庫存儲根目錄,必須為絕對路徑,默認為~/<user name>/gogs-repositories;

 

database數據庫:

DB_TYPE,數據庫類型,可以是mysql/postgres/mssql/sqlite3;

HOST,數據庫主機地址與端口;

NAME,庫名;

 

security安全:

INSTALL_LOCK,用於指示是否允許訪問安裝頁面(該頁面可設置管理員賬號),非常重要;

SECURITY_KEY,全局的加密密鑰,務必修改該值確保服務器安全(會在每次安裝時自動生成隨機字符串);

 

 

]# mkdir -pv custom/conf/   #默認配置在conf/app.ini,該文件從v0.6.0開始被嵌入到二進制中,在不允許修改默認配置的情況下,只要創建custom/conf/app.ini自定義配置文件就可心

mkdir: created directory `custom'

mkdir: created directory `custom/conf/'

]# vim custom/conf/app.ini

APP_NAME = magedu

RUN_USER = git

RUN_MODE = dev   #dev開發者模式,鑒於性能和其它考慮建議使用prod模式

 

[server]

HTTP_ADDR = 0.0.0.0

HTTP_PORT = 3000

 

[database]

DB_TYPE = mysql

HOST = 127.0.0.1:3306

NAME = gogs

USER = gogs

PASSWORD = gogs

 

[security]

INSTALL_LOCK = false

SECRET_KEY = www.magedu.com.python.git:gogs

 

]# ./gogs web   #普通啟動,另守護進程scripts/init/centos/gogs

]# cp -r gogs/ /home/git/

]# cd gogs

]# cp scripts/init/centos/gogs /etc/init.d/

]# chmod +x /etc/init.d/gogs

]# chkconfig --add gogs

]# chkconfig --list gogs

gogs              0:off 1:off 2:on 3:on 4:on 5:on 6:off

]# chown -R git.git /home/git/

]# chown git.git /etc/init.d/gogs

]# /etc/init.d/gogs start   #本例使用此種方式啟動,若切為git用戶執行報錯為Starting Gogs: runuser: cannot set groups: Operation not permitted

 

http://10.113.129.2:3000/install

   1.jpg

數據庫用戶密碼;

2.jpg

域名,10.113.129.2;

應用URL,http://10.113.129.2:3000/;

立即安裝;

3.jpg

馬上注冊,要注冊一個用戶,注冊的第一個用戶直接成為管理員賬戶,ID=1;

4.jpg

jowin,jowin@gogs.com,jowin,創建賬戶;

注:admin賬戶不能創建,默認保留;

5.jpg

jowin/jowin,登錄;

 

創建第二個賬戶,chai/chai;

6.jpg

 

mysql> use gogs;

mysql> select id,name,email from user;

+----+-------+----------------+

| id | name  | email          |

+----+-------+----------------+

|  1 | jowin | jowin@gogs.com |

|  2 | chai  | chai@gogs.com  |

+----+-------+----------------+

2 rows in set (0.00 sec)

 

7.jpg

創建新的倉庫,可見性(私有),.gitignore,授權許可,創建倉庫;

如果要公開,需指明“授權許可”,GPL嚴苛,寬松的apache、mit等;

 

8.jpg

9.jpg

SSH,私服用;

 

解決gogs打開網頁慢:

禁用gravatar服務,使用本地頭像;

方式一:

gogs]# vim custom/conf/app.ini

[picture]

DISABLE_GRAVATAR        = true

ENABLE_FEDERATED_AVATAR = true

]# /etc/init.d/gogs restart

Shutting down Gogs:                                        [  OK  ]

Starting Gogs:                                             [  OK  ]

方式二:

在install的安裝界面,禁用Gravatar服務;

 

 

 

git

 

由來:

linux內核代碼需要版本管理工具維護代碼;

2002年開始,使用的是bitMover公司的BitKeeper(商用軟件),與linux社區崇尚的自由軟件相悖;

2005年,Andrew Trigdgell對BitKeeper的協議進行逆向工程,BitKeeper作者決定收回無償使用權,磋商無果,linus又找不到合適的版本管理工具,決定自行開發分布式版本管理工具;一個月后,linux內核代碼被git接管;

2008年,基於web使用git進行版本控制的軟件托管服務的網站github上線;

2016年5月9日,11年后,BitKeeper開源,發布在了github上;

 

]# yum -y install git

]# git --version

git version 1.7.1

 

 

概念:

10.jpg

remote,遠程版本庫,網絡上的另一個版本庫,可以和本地庫交互;私服;

repository,倉庫、版本庫,git初始化后,會在當前目錄生成一個.git目錄,這就是版本庫;

workspace,工作空間、工作區,.git所在的目錄就是工作區,一般是項目的根目錄;寫源碼的地方,代碼的編輯環境,有.git目錄;

index,索引,介於工作區和版本庫之間,暫存修改的;索引庫,待提交,可理解為緩存,臨時的區域;

 

remote--pull-->workspace

remote--pull|fetch-->repository

 

pull和push不對應:

pull,遠程私服到本地的repository和workspace都有作用;

push,僅本地的repository到遠程私服;

 

push和fetch是對應的;

 

 

操作:

]$ git init   #初始化一個版本庫,多了.git目錄,不要隨便動,這個目錄一般是項目的根目錄,這個路徑以后歸git管

Initialized empty Git repository in /home/python/magedu/projects/cmdb/.git/

]$ vim index.html

<h1>test</h1>

]$ git add index.html   #添加文件,單個文件添加,這一步是把文件的當前變化增加到索引中,也就是以后這個文件需版本庫來跟蹤管理,注意這步不是提交,沒有添加進來git就不關心,此時文件還可繼續修改,還可添加新的被跟蹤文件,一定要add才能把這些改變加入到索引中

]$ git add .   #添加文件,批量添加,點表示當前目錄

]$ git status   #查看狀態,Untracked file列出未跟蹤的文件

# On branch master

#

# Initial commit

#

# Changes to be committed:

#   (use "git rm --cached <file>..." to unstage)

……

 

file status lifecycle:

11.jpg

 

git的文件分類:

tracked,追蹤的,已經加入版本庫的文件;

untracked,未追蹤的,未加入到版本庫的文件;

ignored,忽略的,git不再關注的文件,如一些臨時文件;.gitignore文件中,目錄以/結尾,行起始的!是取反;

 

py的忽略文件模板:

https://github.com/github/gitignore/blob/master/Python.gitignore

其它語言的忽略文件模板:

https://github.com/github/gitignore/

 

]$ vim .gitignore

*.ipynb   #notebook

__pycache__/

.*   #點開頭的文件

 

]$ vim index.html

<h1>test duplicate</h1>

]$ git status

……

# Changed but not updated:

#   (use "git add <file>..." to update what will be committed)

#   (use "git checkout -- <file>..." to discard changes in working directory)

#

#       modified:   index.html

]$ git add .

]$ git commit -m 'first commit'   #提交代碼,-m <msg>填寫本次日志消息,必須寫,寫的明明白白清清楚楚,可中文,工作中程序員應該對每一次提交寫明做了什么改動

[master (root-commit) 3ff2c45] first commit

 134 files changed, 5131 insertions(+), 0 deletions(-)

……

]$ git status   #自最近commit成功后無變化

# On branch master

nothing to commit (working directory clean)

 

git的提交,分兩步:

暫存變更,add作用是把新文件或文件新的改動添加到一個暫存區stage(index),即加入到index中;

提交變更,commit提交的是暫存區的改動,而不是物理文件目前的改動(workspace中的文件更改),提交到當前分支,默認是master分支

$ git commit index.html -m 'second commit'   #兩步合一步,$git commit -a -m '...',-a,--all,把所有追蹤的文件的改動自動暫存再commit

注:

此處兩步提交與分布式的兩階段提交不同;

 

]$ vim example.html

<h1>example</h1>

]$ git commit --amend   #增補,如第一次提交后,忘記加入1個文件,將此次改動提交到上一次(第1次提交的)狀態

[master 8c9565b] first commit

 135 files changed, 5132 insertions(+), 0 deletions(-)

……

 

]$ git log   #每一次commit都有一個ID與之綁定,不重復的ID

commit 8c9565b77da25c4be6c9b9fdbc2f13a93897d007

Author: chaizaowen <chaizaowen@ane56.com>

Date:   Fri Jul 13 15:23:52 2018 +0800

 

    first commit

]$ git log 8c9565b   #7位ID即可,若前7位區分不出可多幾位

commit 8c9565b77da25c4be6c9b9fdbc2f13a93897d007

Author: chaizaowen <chaizaowen@ane56.com>

Date:   Fri Jul 13 15:23:52 2018 +0800

 

    first commit

]$ git log HEAD   #HEAD類似指針,指代當前分支最后一次commit;HEAD^指代上一次提交;HEAD^^指代上上一次提交;HEAD~n上n次提交

commit 8c9565b77da25c4be6c9b9fdbc2f13a93897d007

Author: chaizaowen <chaizaowen@ane56.com>

Date:   Fri Jul 13 15:23:52 2018 +0800

 

    first commit

 

]$ vim example.html

<h1>example duplicate</h1>

]$ git diff   #查看各種差異

diff --git a/example.html b/example.html

index 57b8eef..70946fa 100644

--- a/example.html

+++ b/example.html

@@ -1 +1 @@

-<h1>example</h1>

+<h1>example duplicate</h1>

]$ git add example.html

]$ git diff --cached

diff --git a/example.html b/example.html

index 57b8eef..70946fa 100644

--- a/example.html

+++ b/example.html

@@ -1 +1 @@

-<h1>example</h1>

+<h1>example duplicate</h1>

 

注:

HEAD類似指針,指代當前分支最后一次commit;

HEAD^指代上一次提交;

HEAD^^指代上上一次提交;

HEAD~n上n次提交

 

查看各種差異:

#git diff   #查看被跟蹤文件未暫存的修改,比較暫存區和工作區;

#git diff --cached   #查看被跟蹤文件暫存的修改,比較暫存區和上一次commit的差異;

#git diff HEAD   #查看被跟蹤文件,比較工作區和上一次commit的差異,HEAD指代最后一次commit;

 

檢出和重置:

#git checkout   #列出暫存區可被檢出的文件;

#git checkout file   #從暫存區檢出文件到工作區,就是覆蓋工作區文件,可指代檢出的文件,但不清除stage;用於在workspace中改的不好,把暫存區的文件覆蓋到工作區重新編輯;

#git checkout commit file   #檢出某個commit的指定文件到暫存區和工作區;

#git checkout .   #檢出暫存區的所有文件到工作區;

#git reset   #列出將被reset的文件;

#git reset file   #重置文件的暫存區,和上一次commit一致,工作區不影響;

#git reset --hard   #硬重置,重置暫存區和工作區,與上一次commit保持一致,謹慎使用;

 

注:

checkout關注的是workspace,從暫存區(index)或版本庫(repository,commit)到workspace;

 

#git reflog   #顯示commit的信息,只要HEAD發生變化,就可在這里看到;

#git reset commit   #重置當前分支的HEAD為指定commit,同時重置暫存區,但工作區不變;

#git reset --hard [commit]   #重置當前分支的HEAD為指定commit,同時重置暫存區和工作區,與指定commit一致;

#git reset --keep [commit]   #重置當前HEAD為指定commit,但保持暫存區和工作區不變,HEAD指針在動;

 

移動和刪除:

#git mv src dst   #改名,直接把改名的改動放入暫存區;

#git rm file   #會同時在版本庫和工作區中刪除文件,真刪除,謹慎操作;

#git rm --cached file   #將文件從暫存轉成未暫存,從版本庫中刪除,但不刪除工作目錄的該文件,即文件恢復成不追蹤的狀態;

注:以上都算是改動,必須commit才算真改動;

 

 

push到服務器:

 

用http協議push到遠程:

]$ git config --global user.name 'chai'   #生成用戶級別的文件~/.gitconfig

]$ git config --global user.email 'chaizaowen@ane56.com'

]$ cat ~/.gitconfig   #配置此文件是個好的習慣

[user]

        name = chai

        email = chaizaowen@ane56.com

[color]

        ui = true

[http]

        postBuffer = 524288000

 

]$ git remote add origin http://chai@10.113.129.2:3000/chai/cmdb.git   #遠程版本庫名origin,這是個習慣用法,將建立origin和后面url的映射,這些信息保存在.git/config文件的[remote "origin"]段中,.git/config是版本庫級別配置文件,這里的設置具有最高優先級;origin名字可改,一般不改,約定是這個名字

]$ cat .git/config

[core]

        repositoryformatversion = 0

        filemode = true

        bare = false

        logallrefupdates = true

[remote "origin"]

        url = http://chai@10.113.129.2:3000/chai/cmdb.git

        fetch = +refs/heads/*:refs/remotes/origin/*

 

]$ git push -u origin master   #此步會有輸入密碼的對話框,使用http得有賬號密碼,第一次遠程推送時加-u,update,可將很多信息更新上去,之后再提交就不加-u,直接$git push origin master甚至$git push即可

Counting objects: 149, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (128/128), done.

Writing objects: 100% (149/149), 46.05 KiB, done.

Total 149 (delta 7), reused 0 (delta 0)

To http://chai@10.113.129.2:3000/chai/cmdb.git

 * [new branch]      master -> master

Branch master set up to track remote branch master from origin.

 

注:

$git push -u origin master有如下報錯

No protocol specified

(gnome-ssh-askpass:3373): Gtk-WARNING **: cannot open display: :1.0

切至root下執行#xhost +,授予其他用戶訪問當前屏幕的權限,即可打開輸入密碼的對話框;

 

]$ vim about.html

]$ git add about.html

]$ git commit -m 'add about.html'

[master 43f8e47] add about.html

 1 files changed, 1 insertions(+), 0 deletions(-)

 create mode 100644 about.html

]$ git push   #需輸密碼

Counting objects: 4, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 276 bytes, done.

Total 3 (delta 1), reused 0 (delta 0)

To http://chai@10.113.129.2:3000/chai/cmdb.git

   d973a21..43f8e47  master -> master

12.jpg

 

13.jpg

倉庫設置,“該倉庫為私有的”前勾去掉,更新設置,再次web頁面打開,刷新;

私有的倉庫,必須登錄,只能用戶自己看,為了方便,修改為公有的;

 

14.jpg

點ID號,可看出改了哪些內容;

 

 

用ssh協議push到遠程:

這個操作實在window中的任意想要clone到的一個文件,右鍵單擊git Bash Here,然后再輸入的命令

]$ cd

]$ ssh-keygen -t rsa -C 'chai@ane56.com'   #如果在win下,用gitbash,原命令行沒有ssh-keygen命令

]$ cat .ssh/id_rsa.pub   #將此內容放至gogs web頁的“增加SSH密鑰”

 

15.jpg

用戶設置,SSH密鑰,增加密鑰;

 

]$ pwd

/home/python

]$ mkdir my_gogs

]$ git clone git@10.113.129.2:chai/cmdb.git

Initialized empty Git repository in /home/python/my_gogs/cmdb/.git/

The authenticity of host '10.113.129.2 (10.113.129.2)' can't be established.

RSA key fingerprint is 5c:a7:44:96:bc:20:5a:dc:51:62:76:9b:42:1c:8b:c0.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '10.113.129.2' (RSA) to the list of known hosts.

remote: Counting objects: 152, done.

remote: Compressing objects: 100% (123/123), done.

remote: Total 152 (delta 8), reused 148 (delta 7)

Receiving objects: 100% (152/152), 46.27 KiB, done.

Resolving deltas: 100% (8/8), done.

[python@tmsapp my_gogs]$ ll -h

total 4.0K

drwxr-xr-x 10 python python 4.0K Jul 13 17:27 cmdb

 

 

 

pycharm中用git:

 

在win上做好SSH;

gogs上SSH密鑰,粘貼id_rsa.pub里內容;

16.jpg

 

File-->Close Project-->Checkout from Version Control,選Git;

17.jpg

Git Repository URL,Parent Directory,Directory Name,Test,Clone;

18.jpg

New-->Python File,app.py,Yes,編輯該文件;

19.jpg

20.jpg

VCS-->Git-->Add,同gitbash里$git add app.py;

21.jpg

VCS-->Commit

22.jpg

23.jpg

VCS-->Git-->Push-->Push;

24.jpg

25.jpg

私服查看;

26.jpg

 

 

 

stash存儲:

#git stash   #暫時存儲最后一次提交后的變化,放到棧中;

#git stash list

#git stash pop   #從棧中取出剛才保存的變化,並合並;

 

應用場景:

開發中,當前手中的工作沒有完成,需要中斷當前工作來完成其它請求,如修復bug,已完成的工作內容提交不合適,可能還需要大的調整,但是緊急請求又不能不做,就需要stash存儲未完成的工作(上次提交后做的修改);

 

例(在pycharm中操作):

當前正在寫dispatcher.py,發現之前提交的app.py有問題,當前正在開發的半成品如何處理?用stash;

27.jpg

VCS-->Git-->Stash Changes,Message(edit dispatcher)-->Create Stash,執行后,工作區回到了上次提交的樣子; 

28.jpg

29.jpg

 

 

 

 

修改app.py,提交

30.jpg

31.jpg

 

VCS-->Git-->UnStash Changes-->Apply Stash

32.jpg

33.jpg

 

例(命令行下操作):

34.jpg

35.jpg

 

 

 

branch分支:

多人協作一起開發,開發項目中不同的獨立的功能,這些功能可能需要好幾天才能完成,又或者定制版本,往往需要一個不同的定制需求;

 

代碼中至少有一個分支,稱主干分支或主分支master,默認都在主分支上開發;

36.jpg

圖中圓圈,即節點,表示每一次提交;

 

項目往往是並行多人開發的,都在主分支上克隆,然后修改提交,那么主分支就會存在大量的沖突,甚至有一些不完善代碼提交,主分支就亂如麻,不可維護了;

再次,如果一次提交后,需要發布一個版本,這個版本以后獨立維護、開發,而主分支還需要繼續發展,怎么辦?引入分支;

 

分支名:

在版本庫中必須唯一;

不能以-開頭;

可用/開頭,但不能以/結尾,被它分割的名稱不能以.開頭;

不能使用兩個連續的.,如..;

不能包含任何空白字符,git的特殊符號;

 

37.jpg

 

38.jpg

 

創建分支:

需要指明從什么分支上創建什么名字的分支;

39.jpg

上圖,均在master分支上,三種顏色重疊表示與私服同步且在主分支上;

 

Version Control-->右鍵某一次的commit-->New Branch,New Branch name(dev),勾選Checkout branch(檢出分支就立即切換到dev分支);

40.jpg

41.jpg

 

修改app.py,commit and push

42.jpg

43.jpg

在私服上查看;

44.jpg

 

dev開發完成,需將功能合並到master,切換回到master,檢出master;

Version Control-->右鍵最近一次的master上的提交(origin&master)-->Branch 'master'-->Checkout

45.jpg

VCS-->git-->Merge Changes,Branches to merge中選dev,Strategy中選No fast forward-->Merge

46.jpg

47.jpg

48.jpg

目前的合並,只是本地,再push到私服

49.jpg

 

50.jpg

 

fast forward、no fast forward:

51.jpg

ff,默認,合並后為一條線;

no fast forward,有交叉;

 

 

 

gitflow工作流:

不同公司,不同的項目規模,不同的管理水平有着不同git工作流方式;

最佳實踐,使用git一般至少2個分支,master和develop;

master,生產環境都來主干分支上拿數據部署,也可以使用鈎子自動完成;

develop,開發分支,開發人員都是檢出這個分支開發;

 

 

 

win下Git GUI

52.jpg

 

 

 

注意:

函數不可以分前后,一般一個類交給某個人開發,除非這個類很大,由不同的人開發不同的方法;

最多的是模塊化開發;

要有設計文檔,如不同功能的類不可以同名;

大的項目最多拉3、4條分支;不建議拉多個分支;真正在開發時一般兩條線,master&dev;

拉分支應由具有相應權限的人開;

開發人員都從dev分支上拉取,不能在master上拉取;達到某個里程碑再合並到master上;

master分支用於運維人員發布拉取;

commit時要保證是有效代碼,不可以在分支上reset等回退之類的操作;

要會拉分支-->合並-->commit&push;

剛開始開發時要clone,clone會把.git目錄帶回來;不可以初始化,如果重新git init,git log中沒內容;

 

 ©著作權歸作者所有:來自51CTO博客作者chaijowin的原創作品,如需轉載,請注明出處,否則將追究法律責任


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM