Git筆記

Git
分佈式版本控制系統

安裝git

下載地址:https://git-for-windows.github.io
配置git個人信息:
開始菜單裏找到“Git”->“Git Bash”
個人姓名:git config –global user.name “Your Name”
個人郵箱: git config –global user.email “[email protected]

創建版本庫

什麼是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

創建一個空目錄

在此文件夾上點擊右鍵->git bash here->git init
出現 Initialized empty Git repository in /Users/michael/learngit/.git/,說明倉庫建好了
當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了。

3把文件添加到版本庫

在版本庫中新建一個文件
git add 文件 把文件添加到倉庫
git commit -m “****” 把文件提交到倉庫
掌握文件的狀態
修改文件
git status 查看倉庫當前的狀態
git diff 查看修改的內容(查看工作區和倉庫區的區別)
git add 和 git commit 把修改提交到倉庫
版本回退
查看版本歷史記錄

git log
git log 文件名
commit id 版本號

回退版本

  1. 回退到上一個版本

git reset –hard HEAD^
2. 回到的指定某個版本

git reset –hard 版本號
3. 記錄每一次命令

git reflog
工作區和暫存區
工作區

就是我們建的目錄
版本庫(Repository)

就是.git目錄
Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。

管理修改

案例:

第一次修改 -> git add -> 第二次修改 -> git commit

引出 git管理的是修改 不是文件

解決:第一次修改 -> git add -> 第二次修改 -> git add -> git commit
撤銷修改
修改工作區的修改

git checkout – 文件

命令git checkout – readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷。這裏有兩種情況

一種是文件自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是文件已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。

git checkout 就是讓文件回到最後一次git commit或git add的狀態

撤銷暫存區的修改

git reset HEAD file
git reset 還可以回退版本
刪除文件
rm 文件(僅僅刪除,沒有提交到版本庫)
git rm 文件名(刪除並提交到版本庫)
若誤刪了文件怎麼辦

使用rm命令刪除後,可以通過這個命令找回文件

git checkout – test.txt(其實就是把版本庫中的文件替換工作區的文件)
遠程倉庫
你的本地Git倉庫和oschina倉庫之間的傳輸是通過SSH加密的

註冊開源中國賬號

生成
ssh-keygen -t rsa -C “你的郵箱”
把key配置在oschina賬戶上

查看 SSH 公鑰:cat ~/.ssh/id_rsa.pub
測試是否遠程倉庫連接成功

ssh -T [email protected]
顯示:Welcome to Git@OSC, 楊卓Drow!(楊卓Drow:爲你的用戶名,表示配置成功)
添加遠程倉庫
在本地新建倉庫
git remote add origin [email protected]:zyangDrow/test222.git
git remote:添加遠程倉庫命令
origin:遠程倉庫別名
[email protected]:zyangDrow/test222.git:遠程倉庫地址
git remote -v
查看遠程倉庫信息
git push -u origin master
將本地庫的內容推送到遠程倉庫
origin:遠程倉庫別名
master:本地倉庫分支
-u:把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令
從遠程倉庫克隆
在碼雲上新建項目
在本地新建一個文件夾
git clone [email protected]:zyangDrow/test.git(項目地址)

分支管理

創建與合併分支
查看分支:git branch

創建分支:git branch

切換分支:git checkout

創建+切換分支:git checkout -b

合併某分支到當前分支:git merge

刪除分支:git branch -d

解決衝突

切換dev 並且修改文件,提交
切換master 修改同一文件 提交
git merge dev 出現衝突
打開文件 修改
提交
bug分支
場景:在dev分支工作一半,不能提交,但是收到一個需要在其他分支bug工作,必須在2小時內提交

Git還提供了一個stash功能,可以把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作。
首先確定要在哪個分支上修復bug,假定需要在master分支上修復,就從master創建臨時分支。
在臨時bug分支提交修復
在master分支合併
切換dev分支
git stash list 查看 找到 stash
git stash apply 恢復,git stash drop來刪除
git stash pop 恢復的同事把是stash內容也刪了
feature分支
場景:boss需要你開發新功能,這個時候你需要新建一個分支,當做好之後,準備往dev分支合併時,boss告訴你,這個新功能不能用了,需要刪除

git branch -D

多人協作

當你從遠程倉庫克隆時,實際上Git自動把本地的master分支和遠程的master分支對應起來了,並且,遠程倉庫的默認名稱是origin。
推送分支
推送分支:就是把該分支上的所有本地提交推送到遠程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上 git push roigin master
但是,並不是一定要把本地分支往遠程推送,那麼,哪些分支需要推送,哪些不需要呢?

master分支是主分支,因此要時刻與遠程同步;

dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠程同步;

bug分支只用於在本地修復bug,就沒必要推到遠程了,除非老闆要看看你每週到底修復了幾個bug;

feature分支是否推到遠程,取決於你是否和你的小夥伴合作在上面開發。

抓取分支
場景:工作夥伴需要在dev分支上開發,就必須創建遠程origin的dev等值到本地

在遠程創建分支之後,首先要git pull

git checkout -b dev origin/dev:新建dev分支並且與遠程dev分支連接
git branch –set-upstream dev origin/dev 將dev分支與遠程dev分支連接
多人協作的工作模式通常是這樣
首先,可以試圖用git push origin branch-name推送自己的修改;

如果推送失敗,則因爲遠程分支比你的本地更新,需要先用git pull試圖合併;

如果合併有衝突,則解決衝突,並在本地提交;

沒有衝突或者解決掉衝突後,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關係沒有創建,用命令git branch –set-upstream branch-name origin/branch-name。

標籤管理

就是爲了讓人容易記住的版本號

切換到需要打標籤的分支
git tag V1.0(默認標籤是打在最新提交你的commit上的)
git tag V1.0 commit_id
git tag 查看標籤
git show tag_name :查看標籤信息
git tag -d tag_name

忽略特殊文件

忽略一些不必須提交的文件
.gitignore配置文件:http://github.com/github/gitignore

在Git工作區的根目錄下創建一個特殊的.gitignore文件,然後把要忽略的文件名填進去,Git就會自動忽略這些文件。

忽略文件的原則是:

忽略操作系統自動生成的文件,比如縮略圖等;
忽略編譯生成的中間文件、可執行文件等,也就是如果一個文件是通過另一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如Java編譯產生的.class文件;
忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件
把.gitignore也提交到Git,就完成了!當然檢驗.gitignore的標準是git status命令是不是說working directory clean。

查看該文件不能添加所對應的規則:git check-ignore -v A.class
強制添加忽略文件:git add -f App.class
配置別名
git config –golbal alias.st status
cat .git/config:查看配置信息
Github
註冊用戶
使用QQ郵箱
若郵箱收不到郵件

進入郵箱反垃圾
郵件地址白名單:[email protected]
域名白名單:github.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章