GIThtml
Gogspython
Go語言開發的Git服務器。mysql
MySQL安裝。git
一、傳文件。web
二、解包tar xf Percona-Server-5.5.45-37.4-r042e02b-el6-x86_64-bundle.tarsql
三、安裝 yum 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數據庫
四、檢查:chkconfig chkconfig mysql onvim
五、啓動service mysql startcentos
六、配置 mysql_secure_installation (其中禁止root遠程登陸原則No其他所有是y)bash
七、ps anx |grep mysql 查看啓動
八、登陸數據庫mysql -uroot -p
九、查看數據庫 show database;
用戶:
一、useradd git用戶
二、登陸用戶git
三、傳文件到git的家目錄
四、tar xf gogs0.11.4_amd64.tar.gz 解包
五、Cd gogs文件夾
六、mkdir custom/conf -p 建立文件
七、 cp ../app.ini ./custom/conf/ 拷貝文件
八、打開app.ini文件。
mysql登陸:
一、rant all on gogs.* to 'gogs'@'%' identified by 'gogs';給文件受權
二、mysql -u gogs -p 利用gogs登陸。
利用git用戶登陸
mysql -u root -p 和gogs是兩套系統
mysql -u root -p
mysql -u root -p < gogs/scripts/mysql.sql 輸入重定向。
mysql -u root -p
mysql> show databases; 從新查看。
use gogs 導入庫。
show tables; 建立了數據庫
退出到git gogs文件夾裏面。
./gogs web 啓動
啓動服務:第二個窗口。
cd scripts/
cd init
cd centos
利用root帳號拷貝文件:
cp /home/git/gogs/scripts/init/centos/gogs /etc/init.d
cd /etc/init.d
chmod +x gogs
[root@localhost init.d]# chkconfig gogs on
[root@localhost init.d]# chkconfig -list gogs
service gogs start 啓動
建立log文件
[git@localhost centos]$ cd
[git@localhost ~]$ cd gogs
[git@localhost gogs]$
q啓動
[root@localhost ~]# cd /etc/init.d
[root@localhost init.d]# service gogs start
Starting Gogs:
192.168.142.128:300鏈接
首次登錄:
進行安裝程序,須要設置域名和應用URL。
點擊當即安裝,註冊第一個用戶,默認第一個用戶爲管理員帳戶。
建立一個倉庫。
雷納斯。做者。
2008年,web的方式把git放在了網站服務器上。Gitup。
1)下載對應操做系統的Git客戶端版本
2)Linux上安裝,yum install git
3)Windows 上面安裝 git --version 查看版本號
遠程倉庫 本地倉庫 工做區
Repository倉庫、版本號
git 初始化後,會在當前目錄生成一個.git目錄,這就版本庫。
Workspace 工做空間,工做區。
.git 所在的目錄就是工做區,通常是項目的根目錄。
Index 索引
介於工做區和版本庫之間,暫存修改的
Remote遠程版本庫
網絡上的另外一個版本庫,能夠和本地庫交互。
#### git init 初始化。
在目錄中增長一個.git目錄,不能自行修改這個目錄裏面的文件,
這個目錄通常是根目錄。
利用vim建立文件並增長文件內容。
單個添加文件:git add index.htm
這一步是把文件的當前變化增長到索引中,也就是之後這個文件須要版本庫來跟蹤管理,不是提交。此時文件還能夠繼續修改,還能夠添加新的被跟蹤文件,必定要add才把這個改變加入索引中。
批量增長文件:git add .
.號,表明當前目錄,這條命令就地櫃添加到當前目錄及其子目錄的全部文件。
只要是目錄,就會遞歸添加到該目錄下的文件和子目錄。
追蹤的Tracked,已經加入到版本庫的文件。
爲追蹤的UNtracked,未加入到版本庫的文件。
忽略的ignored,git不在關注的文件,例如一些臨時文件。
.gitignore文件中,目錄以/結尾,行起始的!是取反。
.gitignore 內容以下:*.ipynb __pycache__/ .*
忽略的文件不須要本身寫,Python的已經有了。
Commit 提交更改到版本庫。 -m填寫本第二天志消息,必須寫,工做中,須要註明每一次提交都作了什麼修改。
更改文件後再次提交:顯示的是modified: index.htm
git commit -m "2 No2 commit"
Git的提交,分爲兩個步驟。
暫存變動:add的做用是把新文件或者新的文件的改動添加到一個暫存區stage,也就是加入到index中。
提交變動:commit提交的是暫存區中的改動,而不是物理文件目前的改動,提交到當前分支,默認是master分支。
兩步合爲一步:git commint -a -m
改動一批文件,一個個名詞很麻煩,使用git commit -a
-a ,--all 會把全部跟蹤的文件改成自動暫存,而後commit。
增長一個文件,
touch about.htm
git commit --amend
-amend 修改
git log 查看版本庫裏面提交的歷史記錄。
git diff 工做區和暫存區
git diff HEAD 工做區和本地倉庫,比較工做區和上一次commit的差別。HEAD指代最後一的commit。
git diff --cached 跟蹤文件的暫存修改,比較暫存區和上一次commit的差別。
HEAD,指代最後一次commit
HEAD能夠看作是一個遊標,指向當前分支最後一次提交。
HEAD^上一次。
上n次,表示爲HEAD~n
命令 |
說明 |
Git checkout |
列出暫存區 |
Git checkout file |
從暫存區檢出文件到工做區,就是覆蓋工做區文件,可指定檢出的文件,可是不清楚stage |
Git checkout commit file |
檢出某個commit的指定文件到暫存區和工做區 |
Git checkout |
檢出暫存區的全部文件到工做區 |
Checkout用於切換分支,或恢復工做區文件。
checkout會重寫工做區,這個命令仍是比較危險的。
[root@localhost ~]# echo >about.htm 清空文件
[root@localhost ~]# git checkout about.htm 從暫存區檢出到工做區
[root@localhost ~]# git checkout HEAD about.htm 從最後一次commit檢出覆蓋暫存區和工做區
[root@localhost ~]# git diff
[root@localhost ~]# git diff --cached
[root@localhost ~]# git diff HEAD
[root@localhost ~]# 三條命令顯示結果一致了
命令 |
說明 |
Git reset |
列出被reset的文件 |
Git reset file |
重置文件的暫存區,和上一次commit一致,工做區不影響 |
Git reset-hard |
重置暫存區與工做區,與上一次commit保持一致 |
[root@localhost ~]# echo "welcome about<html>" > about.htm 文件更改內容
[root@localhost ~]# git add about.htm 添加到暫存區
[root@localhost ~]# git reset about.htm 使用最後一次提交覆蓋暫存區
Unstaged changes after reset:
M about.htm
[root@localhost ~]# cat about.htm 內容不變
welcome about<html>
[root@localhost ~]# git add about.htm
[root@localhost ~]# git reset --hard 重置暫存區與工做區爲上一次commit
HEAD is now at 1ed76cf No3 commit
[root@localhost ~]# cat about.htm 工做區內容恢復未改變以前。
welcome about
命令 |
說明 |
Git reflog |
顯示commit信息,只要是HEAD發生變化,就能夠看到 |
Git reset commit |
重置當前分支的HEAD爲指定commit,同時重置暫存區,可是工做區不變 |
Git reset -hard [commit] |
重置當前分支的HEAD爲指定commit,同時重置暫存區和工做區,與指定commit |
Git reset --keep [commit] |
重置當前HEAD爲指定commit,但保持暫存區和工做區不變 |
重置的時候,使用hash值只要能惟一肯定一個commit就能夠了。
reset操做 要慎重。
Git mv src dest 更名,直接把更名的改動放入暫存區。
Git rm file 會同時在版本庫和工做目錄中刪除文件。
Git rm -cached file 將文件從暫存區轉成未暫存,從版本庫中刪除,但不能刪除工做目錄的該文件,即文件恢復不追蹤狀態。 都是算是改動,commit纔算是真改動。
###建立一個新的文件
[root@localhost ~]# echo "python" > python.htm
[root@localhost ~]# git add python.htm
[root@localhost ~]# git commit -m "add python"
[master 50e12c9] add python
Committer: root <root@localhost.localdomain>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
If the identity used for this commit is wrong, you can fix it with:
git commit --amend --author='Your Name <you@example.com>'
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 python.htm
[root@localhost ~]# git log
commit 50e12c9e4dd5928dbaf14b647bccd954293ff5e6
Author: root <root@localhost.localdomain>
Date: Tue May 22 09:21:17 2018 +0800
add python
commit 1ed76cf5c048bfeef64916ffa4d66abdc81fd55f
Author: root <root@localhost.localdomain>
Date: Tue May 22 08:58:00 2018 +0800
No3 commit
commit ab76fd902da7168e69b2ca1152373c9c571e7045
Author: root <root@localhost.localdomain>
Date: Mon May 21 20:11:18 2018 +0800
2 No2 commit
commit 584479710780dc2069751636c1d27f2233abfc4b
Author: root <root@localhost.localdomain>
Date: Mon May 21 20:05:51 2018 +0800
1 No1 commit
###2mv
[root@localhost ~]# git mv python.htm python.py
[root@localhost ~]# git commit -m "my python"
[master 30cd6ee] my python
Committer: root <root@localhost.localdomain>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
If the identity used for this commit is wrong, you can fix it with:
git commit --amend --author='Your Name <you@example.com>'
1 files changed, 0 insertions(+), 0 deletions(-)
rename python.htm => python.py (100%)
###3rm
rename python.htm => python.py (100%)
[root@localhost ~]# echo "print("hello python")" > python.py
[root@localhost ~]# git add python.py
[root@localhost ~]# git diff -cached
error: invalid option: -cached
[root@localhost ~]# git diff --cached
diff --git a/python.py b/python.py
index fdc793e..a280d44 100644
--- a/python.py
+++ b/python.py
@@ -1 +1 @@
-python
+print(hello python)
[root@localhost ~]# git rm --cached python.py
rm 'python.py'
[root@localhost ~]# git diff --cached
diff --git a/python.py b/python.py
deleted file mode 100644
index fdc793e..0000000
--- a/python.py
+++ /dev/null
@@ -1 +0,0 @@
-python
[root@localhost ~]# git commit -m "delete python"
[master 501fec3] delete python
Committer: root <root@localhost.localdomain>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
If the identity used for this commit is wrong, you can fix it with:
git commit --amend --author='Your Name <you@example.com>'
1 files changed, 0 insertions(+), 1 deletions(-)
delete mode 100644 python.py
[root@localhost ~]# ls
about.htm
anaconda-ks.cfg
Desktop
Documents
Downloads
git-2.16.3-intel-universal-mavericks.dmg
gogs.script
index.htm
install.log
install.log.syslog
Music
Percona-Server-5.5.45-37.4-r042e02b-el6-x86_64-bundle.tar
Percona-Server-55-debuginfo-5.5.45-rel37.4.el6.x86_64.rpm
Percona-Server-client-55-5.5.45-rel37.4.el6.x86_64.rpm
Percona-Server-devel-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-shared-55-5.5.45-rel37.4.el6.x86_64.rpm
Percona-Server-test-55-5.5.45-rel37.4.el6.x86_64.rpm
Pictures
Public
python.py
Templates
Videos
[root@localhost ~]# git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .ICEauthority
# .Xauthority
# .abrt/
# .bash_history
# .bash_logout
# .bash_profile
# .bashrc
# .cache/
# .config/
# .cshrc
# .dbus/
# .esd_auth
# .gconf/
# .gnome2/
# .gnote/
# .gnupg/
# .gtk-bookmarks
# .imsettings.log
# .local/
# .mysql_history
# .pulse-cookie
# .pulse/
# .tcshrc
# .viminfo
# Percona-Server-5.5.45-37.4-r042e02b-el6-x86_64-bundle.tar
# Percona-Server-55-debuginfo-5.5.45-rel37.4.el6.x86_64.rpm
# Percona-Server-client-55-5.5.45-rel37.4.el6.x86_64.rpm
# Percona-Server-devel-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-shared-55-5.5.45-rel37.4.el6.x86_64.rpm
# Percona-Server-test-55-5.5.45-rel37.4.el6.x86_64.rpm
# anaconda-ks.cfg
# git-2.16.3-intel-universal-mavericks.dmg
# gogs.script
# install.log
# install.log.syslog
# python.py
nothing added to commit but untracked files present (use "git add" to track)
[root@localhost ~]#
本地搭建私服,模仿GitHub
配置本地用戶名和郵箱:
[root@localhost ~]# git config --global user.name "myself"
[root@localhost ~]# git config --global user.email "myself@qq.com"
[root@localhost ~]#
[root@localhost ~]# cat ~/.gitconfig
[user]
name = myself
email = myself@qq.com
關聯遠程版本庫:
[root@localhost ~]# git remote add origin http://192.168.142.128:3000/myself/test.git
[root@localhost ~]# cat ~/.gitconfig
[user]
name = myself
email = myself@qq.com
[root@localhost ~]# cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = http://192.168.142.128:3000/myself/test.git
fetch = +refs/heads/*:refs/remotes/origin/*
遠程版本庫名origin,這是一個習慣用法,將創建origin和後面的URL映射,這些信息都保存在.git/config 文件中的[remote "origin"]中。
推送數據:
[root@localhost ~]# git push -u origin master
error: The requested URL returned error: 401 Unauthorized while accessing http://192.168.142.128:3000/myself/test.git/info/refs
fatal: HTTP request failed
通信失敗解決辦法:vi .git/config
裏面url裏面加入一個用戶名。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = http://myself@192.168.142.128:3000/myself/test.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[root@localhost ~]# git push -u origin master
Xlib: extension "RANDR" missing on display "localhost:10.0".
error: The requested URL returned error: 401 while accessing http://myself@192.168.142.128:3000/myself/test.git/info/refs
fatal: HTTP request failed
[root@localhost ~]# git push -u origin master
Xlib: extension "RANDR" missing on display "localhost:10.0".
Counting objects: 16, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (16/16), 1.21 KiB, done.
Total 16 (delta 3), reused 0 (delta 0)
To http://myself@192.168.142.128:3000/myself/test.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
輸入密碼就能鏈接到遠程倉庫了。私有的倉庫必須登陸,只能用戶本身看。
-u 第一次推送的時候加上,之後就不須要-u參數,可使用git origin master或者git push就能夠了。
touch README.md
git init
git add README.md
git commit -m "first commit"
http://192.168.142.128:3000/myself/test.gitgit remote add origin
git push -u origin master
http://192.168.142.128:3000/myself/test.gitgit remote add origin
git push -u origin master
建立公鑰和私鑰
git config --global user.name "myself"
git config --global user.email "myself@qq.com"
$ cat ~/.gitconfig 查看添加的信息。
[root@localhost ~]# ssh-keygen -t rsa -C "myself"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
56:2a:7f:69:70:38:cf:32:75:cd:c7:ad:d3:4d:22:d3 myself
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . |
| + + ..|
| . S o + E =|
| + B o o *.|
| + * o o|
| = . |
| |
+-----------------+
[root@localhost ~]# ls .ssh
id_rsa id_rsa.pub
Windows 下:
git config --global user.name "myself"
git config --global user.email "myself@qq.com"
$ cat ~/.gitconfig 查看添加的信息。
WCL@Lenovo-PC MINGW64 /c (master)
$ ssh-keygen -t rsa -C "myself@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/WCL/.ssh/id_rsa):
Created directory '/c/Users/WCL/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/WCL/.ssh/id_rsa.
Your public key has been saved in /c/Users/WCL/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:95Fv6r5DOyTl8h5Bh7luOhYOZnrmxUf0RmSxRNuiNSQ myself@qq.com
The key's randomart image is:
+---[RSA 2048]----+
| E.B. |
| O + |
| = O .|
| o.O o |
| S .oB o |
| +o+++= |
| + ooB*.o |
| . o.++=+ |
| +...=*+ |
+----[SHA256]-----+
WCL@Lenovo-PC MINGW64 /c (master)
$ cd ~/.ssh
WCL@Lenovo-PC MINGW64 ~/.ssh (master)
$ ls
id_rsa id_rsa.pub
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCz2m7NkCWNxnFhsqxM2yJBnyKmzJAF1tY8T2Wwnqg+5aXZfH1JC7uYncXQY+yFomCDWlSGUeC6A9Ca5bufFa/zNTwKSj/VfM7IdFQm5/l9PO+cYsT+jyDnzrnWRPE0w1E+No4YCeASlMh19ywAcjCmlAKZNBQHiyGagcb3Xdi4whoM4fMLyuK/7oCZwJyBlAKySCXO946wnNR1U60yDgn7bIAnLWasE1at39u8B4D6A7Vq7CXOAeW9h4rHLwPO1Z0Lq2F8QM2qAfbKL7Jyj3SgLnyVhi2nassPXXypVfG43voW3l/rXQcoAl9D2UIqtmVmRAHOj2rRE16nENHn9N0d myself@qq.com
在用戶設置裏面的ssh祕鑰裏面增長祕鑰:
ssh遠程鏈接庫:
git@192.168.142.128:myself/test.git
$ git clone git@192.168.142.128:myself/test.git
Cloning into 'test'...
The authenticity of host '192.168.142.128 (192.168.142.128)' can't be established.
RSA key fingerprint is SHA256:4baHBvpJvWzXDTKFpbpih5hmcsUhExyKXJroD9PCVAU.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.142.128' (RSA) to the list of known hosts.
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 16 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (16/16), done.
Resolving deltas: 100% (3/3), done.
克隆成功
Gib私服建立cmdb項目版本庫。
建立一個Python的倉庫:
或者ssh的地址:git@192.168.142.128:myself/cmdb.git
增長祕鑰:
從版本控制工具中獲取項目,選擇git。
選擇項目目錄,填寫遠程版本庫地址,test測試一下:
成功,並直接用pycharm打開項目。
存儲:Stash:應用場景。
命令 |
說明 |
git stash |
暫存最後一次提交後的變化,放入棧中 |
git stash pop |
從棧中取出剛纔保存的變化,併合並。 |
利用stash暫存。
恢復之前的代碼。
應用場景:
須要緊急中斷當前的工做完成其餘的工做。
開發中,當前手中的工做未完成,須要中斷當前工做來完成其餘請求,例如修復bug等。
已完成的工做內容提交不合適,須要大的調整,緊急請求也得作,就須要stash。存儲未完成的工做。
多人協做完成,項目中不一樣的獨立的功能,這些功能能須要好幾天才能完成,定製版本,每每須要一個不一樣的定製需求。
代碼中,至少有一個分支,就是主幹分支。
圖中節點表示每一次提交。
項目每每是並行多人開發的,都在主分支上克隆,而後修改叫,那麼主分支就存在大量衝突,甚至不完善的代碼提交。
引入分支
分支名:
分支名在版本庫中必須惟一。
不能以 - 號開頭。
可使用/,可是不能以其結尾,被他分隔的名稱不能以.開頭。
不能使用兩個連續的..
不能包含任何空白字符,git的特殊符號。
建立分支
須要知名從什麼分支上建立什麼名字的分支。
分支合併:
目前的合併,只是本地庫內的,須要push到遠程庫裏面去。
能夠繼續檢索到dev分支,開發完成後繼續合併。
Fast Forward
不一樣公司,不一樣的項目規模,不一樣的管理水平都有着不一樣的git工做流方式。
使用git通常至少兩個分支:master和develop
Master 主分支 穩定的代碼。
Develop開發分支
輔助分支
Feature 分支 具體功能開發分支
Release 分支