Git 是目前世界上最早進的分佈式版本控制系統git
Git的做用是源代碼管理github
Git的誕生shell
做者是 Linux 之父:Linus Benedict Torvalds
vim
當初開發 Git 僅僅是爲了輔助 Linux 內核的開發(管理源代碼)服務器
Git
會在根目錄下建立一個.git
隱藏文件夾,做爲本地代碼倉庫ssh
Git操做流程: Git服務器(拉取代碼) --> 本地倉庫 --> 客戶端(提交) --> 本地倉庫 --> Git服務器
對於添加
、修改
、刪除
文件的操做,都發生在工做區中分佈式
暫存區指將工做區中的操做完成小階段的存儲,是版本庫的一部分測試
倉庫區表示我的開發的一個小階段的完成,倉庫區中記錄的各版本是能夠查看並回退的網站
可是在暫存區的版本一旦提交就再也沒有了。版本控制
# 安裝git sudo apt-get install git # 查看安裝版本 git --version # 建立本地倉庫,會在建立倉庫目錄下生成.git目錄 cd $HOME/gittest/ git init --初始化本地倉庫 # 配置我的信息,會記錄在.git目錄下config git config user.name '張三' git config user.email 'zhangsan@163.com' # 新建文件,查看文件狀態 git status --新建文件在工做區 # 添加項目中全部文件 git add . 或者 # 添加指定文件 git add login.txt --添加後文件在暫存區 # 提交到倉庫區 git commit -m '版本描述' # 若是文件修改可用添加和提交合並命令 git commit -am "版本描述" # 查看歷史版本 git log 或者 git reflog 注意:git reflog 能夠查看全部分支的全部操做記錄(包括commit和reset的操做),包括已經被刪除的commit記錄,git log 則不能察看已經刪除了的commit記錄
# 查看版本 git refog # 回退到最新版本的前一個版本 git reset --hard HEAD^ # 回退到以前具體的一個版本 git reset --hard 版本號
HEAD
表示當前最新版本HEAD^
表示當前最新版本的前一個版本HEAD^^
表示當前最新版本的前兩個版本,以此類推...HEAD~1
表示當前最新版本的前一個版本HEAD~10
表示當前最新版本的前10個版本,以此類推...# 只修改了內容沒有add添加 git checkout 文件名 --至關於同步了git服務器的代碼
add
到暫存區# 第一步:將暫存區代碼撤銷到工做區 git reset HEAD 文件名 # 第二步:撤銷工做區代碼 git checkout 文件名
Github
網站上建立遠程倉庫在Github
網站上註冊一個用戶並建立一個測試項目。
Github
網址: https://github.com/
# 點擊code下選擇https網址進行復制 例如: https://github.com/ceshi/info.git
# 配置全局git配置文件路徑:~/.gitconfig vim ~/.gitconfig --寫入如下內容設置name和email [user] name = ceshi email = 747479317@qq.com 解釋: name 是github用戶名 email 是github註冊時的郵箱 # 或者使用如下命令設置name和email cd $HOME git config --global user.name "github用戶名" git config --global user.email "github註冊時的郵箱" # 查看是否設置成功 git config --global --list # 生成ssh key祕鑰 ssh-keygen -t rsa -C "github註冊時的郵箱" 執行後一直回車,出現選擇時輸入Y,而後一直回車到最後。 # 生成祕鑰文件, 複製文件內的內容即爲key值 cat ~/.ssh/id_rsa # 登錄github選擇 Settings --> SSH and GPG keys --> new SSH key - Title --隨便寫一個名字 - Key --粘貼上面生成的key值 點擊 Add SSH key 添加一個key值
$HOME/manager/
$HOME/zhangsan/
經理的工做
立項:克隆遠程倉庫+配置身份信息+建立項目+推送項目到遠程倉庫
1.克隆遠程倉庫的命令
cd $HOME/manager/ # 克隆遠程倉庫到本地,網址爲6.1複製的github建立的測試倉庫網址 git clone https://github.com/ceshi/info.git
2.配置經理身份信息
cd $HOME/manager/info git config user.name '經理' git config user.email 'manager@163.com'
cd $HOME/manager/info mkdir test vim test/ceshi.py --寫一個測試文件
# 工做區添加到暫存區 git add . # 暫存區提交到倉庫區 git commit -m '立項' # 推送到github遠程倉庫 git push 此時test/ceshi.py這個項目文件就推送到github測試項目上了。
github
密碼有效期# 每次 push 都須要輸入github帳號與密碼 # 設置記住密碼(默認15分鐘): git config --global credential.helper cache # 若是想本身設置時間,能夠這樣作(1小時後失效): git config credential.helper 'cache --timeout=3600' # 長期存儲密碼: git config --global credential.helper store
張三的工做
獲取項目:克隆項目到本地、配置身份信息
1.克隆項目到本地
cd $HOME/zhangsan/info # 克隆遠程倉庫到本地,網址爲6.1複製的github建立的測試倉庫網址 git clone https://github.com/ceshi/info.git
2.配置張三身份信息
cd $HOME/zhangsan/info git config user.name '張三' git config user.email 'zhangsan@163.com'
cd $HOME/manager/info # 修改測試文件 vim test/ceshi.py # 將修改提交到本地倉庫區 git commit -am '經理修改1' # 將本地倉庫區代碼推送到遠程倉庫 git push
cd $HOME/zhangsan/info # 從遠程倉庫同步代碼 git pull # 修改測試文件 vim test/ceshi.py # 將修改提交到本地倉庫區 git commit -am '張三修改1' # 將本地倉庫區代碼推送到遠程倉庫 git push
這樣就實現了張三和經理協同開發
總結
git pull
git commit -am '版本描述'
git push
pull
,編輯完再commit
,最後推送是push
cd $HOME/manager/info # 修改測試文件 vim test/ceshi.py # 將修改提交到本地倉庫區 git commit -am '經理修改2' # 將本地倉庫區代碼推送到遠程倉庫 git push
cd $HOME/zhangsan/info # 直接修改測試文件,沒有git pull從遠程服務器拉取文件 vim test/ceshi.py # 將修改提交到本地倉庫區 git commit -am '張三修改2' # 將本地倉庫區代碼推送到遠程倉庫 git push --報錯提示須要先pull # pull時提示有文件衝突(張三的本地倉庫內有文件跟遠程倉庫有衝突) git pull --從遠程倉庫拉取文件時報錯有衝突
# 此時衝突就產生了,須要修改ceshi.py文件解決衝突 # 方案:保留全部代碼 或者 保留某一人代碼 vim test/ceshi.py # 解決完衝突代碼後,依然須要add、commit、push
pull
在修改,修改完當即commit
和push
當某一個大版本完成以後,須要打一個標籤
做用:
經理打標籤
cd $HOME/manager/info # 打本地倉庫v1.0版本 git tag -a 標籤名 -m '標籤描述' 例: git tag -a v1.0 -m 'version 1.0' # 經理推送標籤到遠程倉庫 git push origin 標籤名 例: git push origin v1.0
# 刪除本地標籤 git tag -d 標籤名 # 刪除遠程倉庫標籤 git push origin --delete tag 標籤名
分支做用:
1. 經理建立新分支
cd $HOME/manager/info/ # 查看當前分支 git branch # 建立並切換到dev分支 git checkout -b dev # 設置本地分支跟蹤遠程指定分支(將分支推送到遠程) git push -u origin dev
2. 經理在dev分支開發新程序
cd $HOME/manager/info # 查看當前文件狀態 git status # 從遠程倉庫同步文件 git pull # 修改測試文件1 vim test/ceshi1.py # 將修改提交到本地倉庫區 git commit -am '經理修改3' # 將本地倉庫區代碼推送到遠程倉庫 git push
3. 分支合併
# 切換到原分支 git checkout master # 將dev分支代碼合併到master(合併分支默認在本地倉庫完成) git merge dev # 經理推送合併分支操做到遠程倉庫 git push
4. 張三同步合併和的分支代碼
cd $HOME/zhangsan/info/ # 查看當前分支 git branch # 在master分支,從服務器拉取合併分支後的代碼 git pull