『壹』 Git常用命令
1.1 配置環境
當安裝Git後首先要做的事情是設置用戶名稱和email地址。這是非常重要的,因為每次Git提交都會使用該用戶信息。該用戶信息和GitHub上注冊的遠程倉庫的相關信息沒有任何關系。
git config --global user.name "你的名字"
git config --global user.email "你的郵箱"
git config --list
配置信息保存在用戶目錄下的.giitconfig文件中
1.2 獲取Git倉庫
要使用Git對我們的代碼進行版本控制,首先需要獲得Git倉庫
獲取Git倉庫通常有兩種方式:
執行步驟如下:
1、在電腦的任意位置創建一個空目錄作為我們的本地Git倉庫
2、進入這個目錄中,點擊右鍵打開Git bash 窗口
3、執行命令git init
可以通過Git提供的命令從遠程倉庫進行克隆,將遠程倉庫克隆到本地的命令形式為:
git clone 遠程Git倉庫地址
1.3 工作目錄、暫存區以及版本庫概念
版本庫:.git隱藏文件就是版本庫,版本庫存儲了很多配置信息、日誌信息和文件版本信息等
工作目錄(工作區):包含.git文件夾的目錄就是工作目錄,主要用於存放開發的代碼
暫存區:.git文件夾中有很多文件,其中一個index文件就是暫存區,也可以叫做stage。暫存區是一個臨時保存修改文件的地方
1.4 Git工作目錄下文件的兩種狀態
Git工作目錄下的文件存在兩種狀態:
Unmodified 未修改狀態
Modified 已修改狀態
Staged 已暫存狀態
這些文件的狀態會隨著我們執行Git的命令發生變化
1.5 本地倉庫操作
git status 查看文件狀態
也可以使用git status -s使輸出信息更簡潔
git add 將未跟蹤的文件加入暫存區,將已經修改的文件加入暫存區也是通過這個命令
git reset 將暫存區文件取消暫存
git commit -m 「你的說明」 將暫存區文件提交到本地倉庫
git rm 刪除文件 說明:這種操作是直接將文件加入到暫存區裡面,直接提交到本地倉庫生效,而直接刪除的話沒有進入到暫存區,需要先把文件加入到暫存區之後,再提交到本地倉庫。
將文件添加至忽略列表
一般我們總會有些文件無需納入Git的管理,也不希望他們總出現在未跟蹤文件列表。通常這些都是自動生成的文件,比如日誌文件,或者編譯過程中創建的臨時文件等。在這種情況下,我們可以在工作目錄中創建一個名為.gitnore的文件(文件名稱固定),列出忽略的文件模式。下面是一個示例:#代表注釋
由於windows無法創建不含文件名的文件,因此我們需要在bash窗口中用如下命令創建。
git log 查看日記記錄
1.6 遠程倉庫操作
如果想查看已經配置的遠程倉庫伺服器,可以運行git remote 命令。它會列出指定的每一個遠程伺服器的簡寫。如果已經克隆了遠程倉庫,那麼至少可以看見origin,這是Git克隆的倉庫伺服器的默認名字
git remote -v 可以查看對遠程倉庫詳細一點的說明
git remote show origin 可以查看對origin更詳細的遠程倉庫的說明
運行git remote add 添加一個遠程Git倉庫,同時指定一個可以引用的簡寫
如果你想獲得一份已經存在了的Git倉庫的拷貝,這時需要用到 git clone 命令。Git克隆的是Git倉庫伺服器上的幾乎所有數據(包括日誌信息、 歷史 記錄等),而不僅僅是復制工作所需要的文件。當你執行git clone 命令的時候,默認配置下Git倉庫中的每一個文件的每一個版本都將被拉取下來。
如果因為一些原因想要移除一個遠程倉庫,可以使用git remote rm
注意:此命令只是從本地移除遠程倉庫的記錄,並不會影響到遠程倉庫
git fetch 是從遠程倉庫獲取最新版本到本地倉庫,不會自動merge
說明:如果使用fetch命令,拉取的文件會放到版本庫裡面,不會自動整合到工作區,如果需要整合到工作區,需要使用 git merge 遠程倉庫別名/遠程倉庫分支
git pull 是從遠程倉庫獲取最新版本並merge到本地倉庫
注意:如果本地倉庫不是從遠程倉庫克隆,而是本地創建的倉庫,並且倉庫中存在文件,此時再從遠程倉庫中拉取文件的時候會報錯(fatal:refusing to merge unrelated histories),解決此我呢提可以在git pull 命令後加入參數 --allow-unrelated-histories
git push
1.7 Git分支
幾乎所有的版本控制系統都是以某種形式支持分支。使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。Git的master是一個特殊分支。它跟其它分支沒有區別。之所以每一個倉庫都有mater分支,是因為git init默認創建它,並且大多數人都懶得去改動它。
# 列出所有本地分支
$ git branch
#列出所有遠程分支
$ git branch -r
#列出所有本地分支和遠程分支
$git branch -a
git branch 分支名稱
git checkout 分支名稱
git push 遠程倉庫別名 遠程倉庫分支
git merge 分支名稱 說明:在當前分支下合並其他分支
注意:如果兩個分支存在同樣的文件名且同行的內容不一樣,那麼會產生矛盾,需要自己手動修改產生矛盾後的文件,然後添加到暫存區然後提交。
git branch -d 分支名稱
如果要刪除的分支中進行了一些開發動作,此時執行上面的刪除命令並不會刪除分支,可以將命令中的-d參數改為-D
如果要刪除遠程倉庫中的分支,可以使用命令git push origin -d branchName
1.8 Git標簽
像其他版本控制系統一樣,Git可以給 歷史 中的某一給提交打上標簽,以示重要。比較有代表性的是人們會使用這個功能來標記發布結點(v1.0、v1.2等)。標簽指的是某個分支某個特定時間點的狀態。通過標簽,可以很方便地切換到標記時的狀態。
#新建一個tag
$ git tag [tagName]
$ git tag
#新建一個分支,指向某個tag
$ git checkout -b [branch] [tag]
#刪除本地tag
$git tag -d[tag]
#刪除遠程tag
$git push origin :refs/tags/[tag]
『貳』 linux git clone命令什麼意思
git是一種開源的分布式版本控制系統。
網站中文學習鏈接:https://git-scm.com/book/zh/v2
git clone 命令是客戶端從git伺服器上克版隆項目倉庫權,然後接著開發項目內容,存到這個項目倉庫中,簡單來說就是從git伺服器上克隆項目倉庫,然後接著開始開發。
用法:git clone git@192.168.1.1/project/project.git
其中git是git伺服器上創建的項目倉庫用戶
192.168.1.1是git伺服器地址
project是git伺服器上的項目倉庫存儲目錄
project.git是git伺服器上項目倉庫存儲目錄下存放元數據和版本數據目錄
『叄』 Git 指令,看這個就夠了,趕緊收藏,方便查閱
1.初始化Git本地倉庫:
git init
2.Git添加遠程倉庫:
git remote add origin 你的遠程倉庫地址>
3.Git 克隆遠程倉庫:
git clone 需要克隆的遠程倉庫地址>
4.添加文件到Git倉庫:
git add 需要添加的文件>
或:
git add . (PS:"add ." 表示把當前路徑下的所有文件都添加到Git倉庫)
5.把文件提交到Git倉庫(PS:提交之前,需要先添加):
git commit -m"你的提交說明>"
6.把本地提交的文件推送到遠程倉庫:
git push -u origin 你的分支>
如果之前提交有時間使用 "-u",則可以使用:
git push
7.查看所有分支:
git branch
PS:如下表示有兩個分支,master分支和dev分支,*表示當前分支
*master
dev
8.創建新分支:
git branch 分支名稱>
9.切換分支:
git checkout 分支名稱>
10.創建分支且切換到新分支:
git checkout -b 分支名稱>
PS: 等價於
git branch 分支名稱>
git checkout 分支名稱>
11.刪除分支:
git branch -d 分支名稱>
12.合並指定分支到當前分支:
git merge 指定分支名稱>
13.Git 變基:
git rebase 指定分支名稱>
14.基於最新的提交創建標簽:
git tag 標簽名稱>
15.刪除指定標簽:
git tag -d 指定標簽名稱>
16.列出所有的本地標簽:
git tag
17.查看所有的提交 歷史 :
git log
18.查看指定文件的提交 歷史 :
git log -p 指定文件>
19.以列表方式查看指定文件的所有提交 歷史 :
git blame 指定文件>
20.隱藏工作現場, 工作內容暫不提交:
git stash
PS:在臨時需要處理緊急bug,當前代碼又不想提交的情況下,使用該條指令較為方便
21.恢復之前隱藏的工作現場:
git stash apply
PS:恢復工作現場之後,stash的內容並不會刪除
22.刪除工作現場(在恢復工作現場之後使用):
git stash drop
23.恢復工作現場並刪除stash內容
git stash pop
24.版本回退到上一個版本:
git reset --hard HEAD^
PS:^的個數表示回退版本的個數,例如回退3個版本:
git reset --hard HEAD^^^
25.版本回退到指定版本:
git re set --hard 指定版本號>
PS:可以通過git log 可以查看版本號,回退是,指定版本號可以不寫全,寫前幾位即可
26.查看遠程版本庫信息:
git remote -v
28.查看指定遠程版本庫信息:
git remote show 指定版本庫>
29.從遠程倉庫獲取代碼:
git fetch 遠程倉庫>
30.下載遠程倉庫代碼並合並到本地:
git pull 遠程倉庫> 遠程分支>
31.上傳所有標簽:
git push --tags
32.狀態查詢:
git status
『肆』 如何在Linux下使用Git
Git是一款開源分布式版本控制系統,能夠幫助Linux管理內核開發,那麼Linux要如何使用Git,下面就是Linux使用Git的方法:
*初始化git倉庫,使用git init命令
*添加文件到git倉庫分兩步:
1、使用git add filename ;可分多次使用,添加多個文件到暫存區
2、使用git commit -m 「說明」 ;完成提交到分支
*查看工作區狀態,使用git status 命令;如果提示有修改可使用git diff filename 查看修改內容
*HEAD指向當前版本,HEAD^表示上一個版本,HEAD^^上上一個版本……HEAD~100指向之前第100個版本。
*回退版本:使用git log查看提交歷史;使用git log --pretty=oneline 精簡顯示
使用git reset --hard commit_id 回退到版本號為commit_id的版本
*回退版本之後如果想再看改回來,可以使用git reflog 查看歷史命令,找出想改回的版本號,再使用git reset hard commit_id 返回即可。
*注意:git跟蹤並管理的是修改,而不是文件,如果一個文件修改並add之後,再次修改,如果不再次add就提交的話,只會提交第一次的修改。
*撤銷修改:
1、如果文件還在工作區,即沒有add也沒有commit,則使用git checkout -- filename 還原到伺服器版即可;
2、如果已經add到暫存區,首先使用git reset HEAD filename從暫存區取回工作區,再按照1進行操作即可;
3、如果已經提交到版本庫,則按照版本回退的方式進行修改即可;
4、如果已經push到遠程倉庫,就麻煩了
*刪除使用以下命令:
1、git rm filename 從工作區刪除
2、git commit -m 」說明「 更新分支中文件進行刪除
將在工作區的文件刪除之後,可以使用git checkout -- filename 從分支中取回,但是只能恢復文件到最新版本,最後一次提交之後的修改則不能恢復。
*分支:
1、創建分支
git checkout -b branchname 創建並切換到改分區,相當於一下兩個命令:
git branch branchname 創建分支
git checkout branchname 切換到分區
2、查看當前指向的分支:git branch 會列出所有分支,當前指向的分支之前多了個*
3、切換分支就是git checkout branchname
4、合並分支:git merge branchname 合並branchname到當前分支
5、刪除分支:git branch -d branchname 刪除branchname分支
注意:創建、合並、刪除分支都非常快,git鼓勵使用分支完成某個任務,合並後刪除分支,和直接在master分支上進行工作是一樣的效果,但是過程更加安全; 這些之所以快是因為在這些過程中我們只是修改了指向分支的指針,如創建一個branch就是創建了一個指向分支的指針,然後修改HEAD指向該指針;即HEAD指向分支,分支就是提交。
*沖突解決:
git無法自動合並分支時,就必須首先解決沖突;解決沖突之後,再提交,即完成了合並
使用git log --graph 可以查看分支合並圖。
*保存工作現場 git stash 保存之後就可以進行其他工作 而不影響上次的修改
恢復工作現場:
1、git stash apply 恢復時並不刪除stash中內容
2、git stash pop 恢復時會刪除stash中的內容
*遠程庫信息產看使用git remote (-v)加上-v顯示信息更加詳細
*分支推送到遠程庫:即將所有本地的提交推送到遠程庫
git push origin(遠程庫名) master (要推送的分支)
*抓取分支:git pull ; git clone
*協作模式:
1、使用git push origin branchname 推送自己的修改
2、如果推送失敗,因為遠程分支比本地更新,先使用git pull 合並
3、如果合並有沖突,解決沖突,在本地提交
4、再推送
注意:如果使用git pull 合並時提示 」no tracking information「說明本地分支沒有和遠程分支建立鏈接關系,使用以下指令建立關系:git branch --set -upstream branch origin/branchname
*在本地創建與遠程對應的分支:git branch -b branchname origin/branchname 本地與遠程分支的名稱最好一致
*創建標簽
1、打標簽git tag name 默認標簽打在最新提交的commit上,如果想打在其他版本上,找到commit_id即可
2、顯示標簽:git log -pretty=oneline --abbrev -commit
git tag tag_name commit_id
3、查看標簽:git tag 顯示所有標簽
4、查看標簽信息:git show tag_name
5、創建帶有說明的標簽: git tag -a tag_name -m 」信息「;-a表示標簽名,-m指定說明文字
*操作標簽:git tag -d tag_name 刪除標簽
推送標簽到遠程庫:git push origin tag_name
一次推送所有標簽到遠程庫:git push origin --tag
上面就是Linux使用Git的方法了。
『伍』 GIT如何拉取主版本中的最新代碼到自己空間的分支
如果本地分支已經關聯遠程的主版本,直接pull即可
否則,可用
git pull origin 遠程主分支名:本地分支名
進行拉取
『陸』 kali linux如何使用GIT clone
在linux下搭建git環境
1、創建Github賬號,https://github.com
2、Linux創建SSH密鑰:
[plain] view plain
01.ssh-keygen ##一直默認就可以了
3、將公鑰加入到賬戶信息Account Settings->SSH Key
4、測試驗證是否成功。
[plain] view plain
01.ssh -T [email protected]
02.Hi someone! You've successfully authenticated, but GitHub does not provide shell access.
同步github到本地
1、復制項目到本地:
[plain] view plain
01.git clone git://github.com:xxxx/test.git ##以gitreadonly方式克隆到本地,只可以讀
02.git clone [email protected]:xxx/test.git ##以SSH方式克隆到本地,可以讀寫
03.git clone https://github.com/xxx/test.git ##以https方式克隆到本地,可以讀寫
04.git fetch [email protected]:xxx/xxx.git ##獲取到本地但不合並
05.git pull [email protected]:xxx/xxx.git ##獲取並合並內容到本地
本地提交項目到github
1、本地配置
[plain] view plain
01.git config --global user.name 'onovps'
02.git config --global user.email '[email protected]' #全局聯系方式,可選
2、新建Git項目並提交到Github。
[plain] view plain
01.mkdir testdir & cd testdir
02.touch README.md
03.git init #初始化一個本地庫
04.git add README.md #添加文件到本地倉庫
05.git rm README.md #本地倒庫內刪除
06.git commit -m "first commit" #提交到本地庫並備注,此時變更仍在本地。
07.git commit -a ##自動更新變化的文件,a可以理解為auto
08.git remote add xxx [email protected]:xxx/xxx.git #增加一個遠程伺服器的別名。
09.git remote rm xxx ##刪除遠程版本庫的別名
10.git push -u remotename master #將本地文件提交到Github的remoname版本庫中。此時才更新了本地變更到github服務上。
分支版本操作
1、創建和合並分支
[plain] view plain
01.git branch #顯示當前分支是master
02.git branch new-feature #創建分支
03.git checkout new-feature #切換到新分支
04.vi page_cache.inc.php
05.git add page_cache.inc.php
06.git commit -a -m "added initial version of page cache"
07.git push origin new-feature ##把分支提交到遠程伺服器,只是把分支結構和內容提交到遠程,並沒有發生和主幹的合並行為。
2、如果new-feature分支成熟了,覺得有必要合並進master
[plain] view plain
01.git checkout master #切換到新主幹
02.git merge new-feature ##把分支合並到主幹
03.git branch #顯示當前分支是master
04.git push #此時主幹中也合並了new-feature的代碼
git命令使用思維圖:【非常有料】