Git常見相關知識與命令

安裝git程序

ContOSgit

         Yum install –y epel-releasegithub

         Yum install –y gitshell

Ubuntu編程

         Sudo apt-get install git服務器

Windows上安裝app

         https://git-scm.com/download/winssh

安裝完成之後還須要最後一步設置spa

         git config --global user.name "Qiang"//好比Qiang.net

         git config --global user.email "zqwang121@sina.com"//寫入到你的郵箱3d

 

建立版本倉庫並推送文件

Mkdir /home/gitroot   //建立目錄

Cd /home/gitroot     //進入目錄

Git init //用命令初始化。讓這個目錄編程git能夠管理的倉庫

Ls –a //能夠看到.git目錄

Echo –e 「QIANG」>1.txt //建立一個文件1.txt

Git add 1.txt //把1.txt添加到倉庫中

Git commit –m 「add new file 1.txt」 //add完了必需要conmit纔算真正把文件提交到git倉庫裏

Echo –e 「QIANG QIANG」>> 1.txt //更改1.txt

Git status //查看當前倉庫中的狀態,好比是否有改動文件

Git checkout --1.txt//將倉庫中的1.txt覆蓋本地的1.txt

Git diff 1.txt /能夠對比1.txt本次修改了什麼內容,相比倉庫裏面的版本

 

上傳當前目錄下全部文件

1.       git add .

2.       git commit -m "updata all"

3.       git push

 

版本的變動

屢次更改1.txt 並進行git add,git commit操做

Git log //能夠查看全部提交git倉庫的倉庫記錄操做

Git log –pretty=oneline 一行一行顯示

經過git log能夠查看到過去提交的全部版本,因此根據這個log能夠指定回退某個版本

Git reset –hard d03da70182c1e78d04df1d7eee2f6a972ae4f82b //能夠回退該版本,這裏是長字符串,能夠簡寫(前5個字符)

Git reflog //能夠顯示全部的版本

 

文件恢復

當修改1.txt 發現修改的不對,想修改上一次提交的狀態

Git checkout –1.txt//恢復到上一次提交的狀態

若是1.txt修改完成,保存後,git add 1.txt了 可是沒有git commit,再想回退到上一次提交是的狀態,可使用

Git reset HEAD 1.txt

而後再

Git checkout –1.txt

 

文件刪除

Echo 「QIANG」 >2.txt

Git add 2.txt

Git commit –m 「add new file 2.txt」

Rm –f 2.txt

Git status

Git rm 2.txt

Git commit –m 「delete 2.txt」//完全刪除2.txt

 

建立一個遠程的倉庫

1.先註冊一個免費的倉庫https://github.com/或https://git.oschina.net/

2.權限認證,添加key

  github :Setting->SSH and GPG keys->new SSH key->title和key輸入進去

  oschina:我的資料->SSH公鑰->添加公鑰->標題和公鑰輸入進入

  生成密鑰對:ssh-keygen

  Liunx: Cat /root/.ssh/id_rsa

Cat /root/.ssh/id_rsa.pub //公鑰

  Windwos:Cat c:/Users/Cmd/.ssh/id_rsa

Cat c:/Users/Cmd/.ssh/id_rsa.pub

添加成功收到郵件

3.建立一個建立連接倉庫

  3.1 Mkdir /home/gitroot   //建立目錄

3.2 Cd /home/gitroot     //進入目錄

3.3 Git init             //用命令初始化。讓這個目錄編程git能夠管理的倉庫

3.4 git remote add origin 倉庫地址

   git remote add origin git@git.oschina.net:zhiqiangwang/Qiang.git

3.4.1 origin是你的倉庫的別名 能夠隨便改,但請務必不要與已有的倉庫別名衝突

3.4.2倉庫地址通常來說支持

3.5 Echo –e 「QIANG」>Qiang.txt //新建Qiang.txt

3.6 git add Qiang.txt

3.7 git commit –m 「add Qiang.txt」

3.8 git push –u origin master //把本地的Qiang倉庫推送到遠程Qiang

    或者git push origin master或者git push origin master -f(強制推送)

3.9 Echo –e 「QIANG QIANG」>>Qiang.txt //在Qiang.txt後面追加QIANG QIANG

3.10 git add Qiang.txt

3.11 git commit –m 「update Qiang.txt」

3.12 git push //把本地的Qiang倉庫再次推送到遠程Qiang

 

 

克隆一個遠程的倉庫

  Git clone git@git.oschina.net:zhiqiangwang/Qiang.git

 

分支管理

  Git branch 查看分支

  Git branch wang 建立分支

  git checkout wang 切換wang分支

 

分支合併

  Git merge wang //把wang分支合併到master

  合併常見的問題

1. 若是master分支和wang分支都對Qiang.txt進行編輯,當合並時提示衝突,許先解決衝突才能夠繼續合併

2.  解決衝突的方法就是在master分支下,編輯Qiang.txt,改成wang分支裏面的Qiang.txt的內容,而後提交Qiang.txt,在進行合併

3.  若是master分支更改的內容是咱們想要的,能夠編輯Qiang.txt內容,改成想要的而後提交,切換到wang分支,而後合併 master分支到wang分支便可。Merge後面跟的分支名字必定是最新的分支

4.  Git branch –d wang //刪除分支

5.  Git branch –D wang /若是分支沒有合併,強制刪除

 

使用分支的原則

 Master分支是很是重要的,線上發佈代碼的時候纔用到這個分支

 Dev分支就是專門用於開發的,重要發佈線上以前纔會把dev分支合併到master

 開發人員應該才dev的基礎上在分支成我的分支,我的分支裏面開發代碼,而後合併到dev分支

在dev分支合併bob分支命令就是

 Git checkout dev //先切換dev分支

 Git merge bob

 

現場保留

在wang 分支編輯wang.txt

去zhi分支修復bug,因此須要先git add wang.txt

而後 git stash保留現場

再切換zhi分支修復,修復完bug以後,在切回wang分支

Git stash list能夠查看咱們保留過的現場

Git stash apply 恢復現場

Git syash apply stash@{0} 恢復到指定現場

 

遠程分支

git remote –v //查看遠程庫信息

git ls-remote origin//查看遠程分支

推送本地分支wang到遠程分支 wang並創建關聯關係

a.  遠程已有wang分支而且已經關聯本地分支wang且本地已經切換到wang

git push

b.  遠程已有wang分支但未關聯本地分支wang且本地已經切換到wang

git push -u origin /wang

c.  遠程沒有有wang分支並,本地已經切換到wang

git push origin wang: wang

刪除本地分支

git branch –d|-D wang

刪除遠程分支

git push origin  :wang

git branch -m | -M oldbranch newbranch 重命名分支,若是newbranch名字分支已經存在,則須要使用-M強制重命名,不然,使用-m進行重命名。

 

標籤管理

標籤類是於快照功能,給一個版本庫打一個標籤,記錄某個時刻的狀態,也能夠隨時恢復該狀態

1.  git checkout master 先切換master上

2.  git tag v1.0 給master打上一個標籤v1.0

3.  git tag 查看全部的標籤

4.  git log –-pretty=oneline –-abbrev-commit//查看歷史commit

5.  git tag v0.9 d03da//針對歷史commit打標籤

6.  git tag –a –m 「tag just v1.1」 d03da//能夠對標籤進行描述

7.  git tag –d v0.8刪除標籤

8.  git push origin v1.0//推送到指定標籤遠程

9.  git push --tag origin//推送全部標籤

10. git tag –d//刪除本地標籤

11. git push origin : refs/tags/v1.0刪除遠程標籤

 

搭建git服務器

1.  Yum install git

2.  添加git用戶,並設置shell爲/usr/bin/git-shell,目的是爲了避免讓git用戶遠程登陸

Useradd –s /usr/bin/git-shell

3.  Cd /home/git

4.  建立authorized_keys文件,更改屬主,屬組合權限,用於存客戶端機器上的公鑰

5.  Mkdir.ssh

6.  ssh-keygen //使用該命令生成密鑰對

7.  touch authorized_keys

8.  cat /home/git/id_rsa.pub>>/home/git/.ssh/authorized_keys.

9.  Chown –R git.ssh或者Chown 600 .ssh/authorized_keys

10. 定義存儲git倉庫的目錄 /data/gitroot

Mkdir /data/gitroot

Cd /data/gitroot

11. Git init –bare sample.git //建立一個裸倉庫,裸倉庫沒有工做區,由於服務器上的git倉庫純粹爲了貢獻,因此不讓用戶登陸到服務器上改工做區,而且服務器上的git倉庫經過以.git結尾

12. Chown –R git.git sample.git

以上操做是在git服務器上作的,平時git服務器不西藥開發人員登陸去修改代碼,他僅僅是充當一個服務器的角色,就像github同樣,平時都是在咱們本身的pc上作的

在客戶端上克隆遠程倉庫

Git clone git@ip:/data/gitroot/sample.git

此時能夠進入sample目錄下,這個就是咱們克隆遠程倉庫。進入到這裏面進行開發,而後push到遠程

 

全棧工程師技術QQ交流羣:368683534

相關文章
相關標籤/搜索