工程協作工具(一)git

西門一再吹雪發表於2021-01-02
【一】git安裝
 
1.window安裝
 
https://git-scm.com/downloads下載windows版本,安裝即可
 
 
開啟git bash
 
輸入初始化的使用者名稱和密碼
$ git config --global user.name "jiangzengkui"
$ git config --global user.email " 676047198@qq.com"
 
如果不初始化,則
【二】基本操作命令集
注意都是在git bash視窗裡操作的,不是dos
 
 
git init
.初始化  git init
cd到存放倉庫的目錄,執行 git init命令,生成一個.git的隱藏資料夾
git add
把檔案放入暫存區
git add .  當前目錄的所有未暫存的檔案暫存起來,*表示所有檔案
git  add a.txt b.txt、
 
  兩個檔案
git add documentation/*.txt 新增 documentation 目錄及其子目錄下所有 *.txt 檔案的內容
git commit -m
把暫存區的檔案提交到本地倉庫
git commit -m "這裡寫的是備註"
git log
顯示commit的歷史資訊
git reset
git reset --hard head^         回退到上一個版本
git reset --hard head^^        回退到上上個版本
git reset  --hard head~100      回退到之前100個版本
 
2.回滾到指定版本
git reset --hard  版本id  
版本id是commitId,寫前幾位即可
eg:
 $  git reset --hard  bc999ea9f0
 
注意回退是已經commit的版本,可以回退也可以前進
git reflog
顯示執行過得所有命令集,與關閉視窗無關,
找到一次操作的commitID就可以用git reset 回到這一步了
git status
檢視檔案沒有被 commit的檔案狀態git操作狀態(包含沒有add和commit的檔案)
eg:
  
兩個檔案
a1.txt檔案,表示是commit後又被修改過,狀態為:modiffied
index.html 表示是沒有任何操作,才新增的,狀態為:untracked
 
 
工作區/暫存區
git的規則是add進入暫存區stage,commit則進去版本庫
git diff
比較
檔案對比
1.  git diff  filepath 工作區與暫存區比較
  git diff 是所有檔案對比
  git  diff f1.txt  制定檔案對比
2. git diff HEAD filepath 工作區與HEAD ( 當前工作分支) 比較
3. git diff --staged 或 --cached  filepath 暫存區與HEAD比較
4. git diff branchName filepath  當前分支的檔案與branchName 分支的檔案進行比較
5. git diff commitId filepath 與某一次提交進行比較
git checkout
 
git reset HEAD <file> 
場景1:
把工作區的內容恢復到上個暫存區的狀態【沒有add】,就是丟棄工作區的修改
場景2:
當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改
分兩步,第一步用命令 git reset HEAD <file> ,就回到了場景1,第二步按場景1操作。
場景3:
已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考 版本回退 一節,不過前提是沒有推送到遠端庫。
git rm
刪除檔案
先git rm 檔名  在commit就可以了
 
git show
1.檢視最新的commit
git show
2.檢視指定commit hashID的所有修改:
git show commitId
3.檢視某次commit中具體某個檔案的修改:
git show commitId fileName
 
 
 
 
 
 
 
本地已有倉庫新增到遠端倉庫
 
場景: 先有本地庫,後有遠端庫的時候,如何關聯遠端庫。
 
在github上建立一個空遠端倉庫
 
獲得提示如下
 
1.建立一個本地新倉庫與遠端倉庫關聯
 
echo "# wetest" >> README.md
git init
git add README.md
git commit -m "first commit"
 
#和遠端的倉庫對接   jiangzengkui是賬號,wetest.git是具體倉庫地址
git remote add origin git@github.com :jiangzengkui/wetest.git
 
#把本地的推送到遠端的master分支上
由於遠端庫是空的,我們第一次推送 master 分支時,加上了 -u 引數,Git不但會把本地的 master 分支內容推送的遠端新的 master 分支,還會把本地的 master 分支和遠端的 master 分支關聯起來,在以後的推送或者拉取時就可以簡化命令。
 
 
 
origin master
 
以後本地修改後,要提交到遠端倉庫,用git push  origin master就可以了,不需要加 -u
2.如果本地已經有個倉庫,需要把本地倉庫和遠端一個空倉庫關聯
 
關聯遠端庫:git remote add origin(可修改) branch_Name(為空時預設為master) url
關聯之後可以用git remote -v 來檢查是否關聯成功
git remote add origin git@github.com:jiangzengkui/wetest.git
git push -u origin master
 
注意:本地工作區目錄名和遠端倉庫名沒有必然聯絡

小結

(1)要關聯一個遠端庫,使用命令 git remote add origin git@server-name:path/repo-name.git
(2)關聯後,使用命令 git push -u origin master 第一次推送master分支的所有內容;
此後,每次本地提交後,只要有必要,就可以使用命令 git push origin master 推送最新修改;
分散式版本系統的最大好處之一是在本地工作完全不需要考慮遠端庫的存在,也就是有沒有聯網都可以正常工作,
而SVN在沒有聯網的時候是拒絕幹活的!當有網路的時候,再把本地提交推送一下就完成了同步,真是太方便了!
 
$ git push origin
上面命令表示,將當前分支推送到 origin主機的對應分支。 
如果當前分支只有一個追蹤分支,那麼主機名都可以省略。 
$ git push 如果當前分支與多個主機存在追蹤關係,那麼這個時候 -u選項會指定一個預設主機,這樣後面就可以不加任何引數使用 git push。
$ git push -u origin master 上面命令將本地的 master分支推送到 origin主機,同時指定 origin為預設主機,後面就可以不加任何引數使用 git push了。
 不帶任何引數的 git push,預設只推送當前分支,這叫做 simple方式。此外,還有一種 matching方式,會推送所有有對應的遠端分支的本地分支。 Git 2.0版本之前,預設採用 matching方法,現在改為預設採用 simple方式。
 
 
從遠端倉庫克隆到本地倉庫
 
 
已經有遠端倉庫,需要clone到本地,形成本地倉庫
1.開啟遠端倉庫,獲得clone地址
 
2.執行方法 $ git clone 獲得的地址
 
 
則在本地git_data資料夾中建立了一個sex的倉庫
 
cd sex
進入本地倉庫,以後修改就可以用git push origin master 推送到遠端倉庫了
 

小結

要克隆一個倉庫,首先必須知道倉庫的地址,然後使用 git clone 命令克隆。
Git支援多種協議,包括 https ,但通過 ssh 支援的原生 git 協議速度最快。
 
 
分支與合併
 
 
git branch <name>
建立分支名
git branch 分支名
git checkout <name>
切換到分支
git checkout  -b <name>
建立並切換到分支
 
git merge <name>
在當前分支下,把指定分支名合併到當前分支
git branch -d <name>
刪除指定分支
git branch
檢視有哪些分支,當前分支加*
 
 
 

Git Bash執行命令後,一直出現冒號:,怎麼退出

按Q退出
 
 
常見錯誤:
 
原因:
Permission denied (publickey) 沒有許可權的publickey ,出現這錯誤一般是以下兩種原因
  • 客戶端與服務端未生成 ssh key
  • 客戶端與服務端的ssh key不匹配
找到問題的原因了,解決辦法也就有了,重新生成一次ssh key ,服務端也重新配置一次即可。
 
 
 
 
 
 
 
 
 

相關文章