1. 程式人生 > >git學習篇-01

git學習篇-01

git

一:什麽是git
分布式版本控制系統。保存某一時刻,某些文件內容快照的系統。
其中有集中式的版本控制系統,例如:SVN. 集中式將文件的內容/版本信息/修改信息都保存在一個中央服務器中。使用者將特定版本的文件內容拷貝到本地進行操
作,問題在於單點故障,當服務器或者網絡出現問題,那麽所有的版本都訪問不了,並且對比,提交代碼都進行不了。svn保存的是每一次的變化。
分布式的版本控制系統,例如:git. 使用者將整個系統代碼都復制到本地倉庫中,相當與中央服務器在某個特定時間的一個完整備份。這樣遠程服務器就起到了一個保
存與交換代碼的作用。是目前使用最廣的一個分布式版本控制系統。git會給每一個版本一個完整快照。版本之間切換較快。
二:git工作流。
三種狀態:已修改(工作區),已暫存(暫存區),已提交(本地倉庫)。
git的一大特色是分支開發。沖突的情況減少
一般的開發流程:
創建倉庫(/從遠程倉庫克隆)--》創建並切換到特定分支--》創建/修改文件--》提交工作區文件到暫存區--》提交暫存區文件到本地倉庫--》切換到主分支--》
合並特性分支到主分支--》推送本地倉庫到遠程倉庫。
三:舉例
項目中將遠程服務器的內容克隆下來:
git clone git@。。。。。。。。。。。。 //這樣就克隆到本地
cd gittest //進入這個文件夾,默認在master分支上。
git branch //在master分支上。一般沒有這個權限,需要切換到自己的分支
git checkout -b dev4//這樣就創建了一個新的分支。
git branch //切換到自己剛建立的分支。
vim new //新建文件 --》add 1
git status //查看狀態。
git add new //由工作區換到暫存區
git commit -m ‘new‘ //由暫存區到本地倉庫
git push -u origin dev4 //由本地倉庫推送到遠程服務器。
git diff //查看不同分支之間的差別。
四:當當前分支與master分支有沖突的時候。
需要合並到分支。
git merge origin master //確保將master的內容合並到分支。沒有問題後再 git push.
五:讓部分文件不上傳
方式是:vim .gitignore(有模板,將不想上傳的文件夾寫道裏面)
六:git常用的命令
1.git init :創建空的本地倉庫,或者對存在的倉庫進行初始化。
創建文件夾,進入,git init.
建立好一個空的本地倉庫以後可以與遠程的倉庫進行關聯:
git remote add origin 倉庫地址。
git remote 既可以查看關聯的遠程倉庫
git remote -v 可以查看詳細的信息。
重命名關聯的遠程倉庫:
git remote rename origin o
刪除關聯的遠程倉庫:
git remote remove o
2.git clone 克隆遠程倉庫
3.git remote 管理遠程庫。
首先在gitlab上建立好遠程庫,復制地址,然後在本地鏈接:git remote add origin 地址
git remote --help
4.git reflog 記錄所有操作記錄。只存在於使用者的本地倉庫。會記錄提交以及其他操作比如換分支。
5.git log 本地以及遠程倉庫都有。查看提交歷史。只記錄提交。
6.git status 查看狀態,自己感覺更像是一種監聽。如果這之間新建過文件,再次git status時會提示,可以進行 git add 文件 是將文件由工作區轉到暫存區。
然後就可以提交,git commit -m ‘一種記錄的消息‘ 文件,會提示push到服務器。
7.git config:配置
git config --add user.name .....//加名字
git config --add user.email ....//加郵箱
利用git config -e進行查看更改內容。
8.git diff //默認顯示工作區與暫存區工作的差異
git diff --staged //比較暫存區與本地倉庫的差異
9.git add //由工作區提交到暫存區
10.git commit //暫存區提交到本地倉庫
11.git push //本地倉庫提交到服務器
git push -u origin branch2 //這個不是很理解,目的是設置為跟蹤來自origin的遠程分支branch2.
git log 中記錄著很多東西,可以進行相互比較。方式是:git diff 不同提交的碼
git diff 不同的分支
切換分支命令:git checkout 分支名。
12.git pull //拉取遠程倉庫到本地倉庫並合並到本地倉庫。git branch 查看當前分支。相當與先fetch,然後再merge。
13.git fetch 是將遠程服務器的文件復制到本地倉庫,對本地工作區的文件沒有影響。
git merge :是將本地倉庫中的文件合並到本地工作區中。意思就是說沒有merge前,本地倉庫中的數據與本地工作區的數據有可能是不一樣的,但是merge以後
就統一了。
沖突情況下的合並取消:
git merge --abort
14.git branch :顯示所有的分支,並且標註出當前所屬的分支。新建分支:git branch 分支名。
刪除分支:git branch -d 分支名
查看分支的詳細信息:git branch -v
新建一個分支然後就進入這個分支:git checkout -b branch44
將本地文件還原為本地倉庫:
git checkout --hello.py
將某文件還原為上一次的提交:
git checkout HEAD~ hello.py
還原為最近的一次提交:
git checkout HEAD hello.py
15.git reset:重置HEAD到指定的狀態(HEAD為當前的分支)
git reset --mixed HEAD~ //默認是--mixed,是將本地倉庫的上一個版本復制到暫存區,而不會修改工作區的內容。
git reset --hard HEAD~ //將本地倉庫的內容復制到暫存區與工作區中,這個需要註意。刪除不可逆。
git reset --soft HEAD~ //只是將指針指到了上一個版本,不會復制到任何地方。
git diff --cached//查看暫存區與本地倉庫的區別。
16.git revert 版本號 ://撤銷一些已經存在的提交
17.git cherry-pick//用於把某次提交的內容合並到當前分支。
18.git rebase//用於把一個分支的修改合並到當前分支。

git學習篇-01