1. 程式人生 > >不會點git真不行啊.

不會點git真不行啊.

har tid 解決 create 之前 技術分享 bsp 案例 rebase

基本使用:

技術分享圖片
// 進入項目根目錄,
git init // 接管你的項目文件夾,

git status // 查看狀態. 綠色已接管,紅色未管理

git add . // 添加管理當前目錄所有文件及子目錄
git add 1.py // 管理單個文件

git commit -m ‘這是我創建的第一個版本‘
技術分享圖片

後續動作修改完代碼後,再次執行

技術分享圖片
git add .
git commit -m ‘這是第二個版本:修改了xxxx‘

git status 
git log //查看版本記錄

// 回滾到指定版本. 指定版本標識
git reset --hard 9bbb0ef17234d40c941fec0f0408d994b52a5060 
// 回滾之後, git log 只能看到該版本及之前的版本.

git reflog // 查看包括回滾的歷史記錄


// 如果開發新功能時進行到中途, 之前的版本中出現了問題, 需要修改.
git stash // 暫存新開發的部分. 然後再修改原有部分,
git add .
git commit -m ‘修改了原版中aaa.html文件‘

git stash pop // 取回暫存的內容,自動檢測合並
// 取回的內容如果與二次修改的有沖突,則需要手動解決。

git stash list // 查看"暫存區"的所有記錄
git stash clear // 清空"暫存區"
git stash pop // 取回暫存區第一個記錄
git stash apply 0 // 取回"暫存區"指定的記錄 編號0
git stash drop 0 // 刪除"暫存區"指定記錄
技術分享圖片


分支 branch
master永遠保留正確代碼

技術分享圖片
git branch // 查看分支
git branch dev1 // 創建新分支dev1 即拷貝當前所有代碼到新分支
git checkout dev1 // 進入dev1分支

git checkout master // 回到主分支 
git branch bug // 創建新分支bug, 然後修復bug完畢.

git checkout master // 切回master
git merge bug // 把bug分支合並過來. 
git branch -d bug // 再刪除分支

git checkout dev1 // 回到dev1分支,繼續開發新功能.
技術分享圖片

代碼托管
公有: github / 碼雲
自建: gitlab

技術分享圖片
// 下載代碼
git clone https://github.com/frx9527/NodeJsDemo.git


// 建立遠程對應關系
git remote add origin https://github.com/frx9527/NodeJsDemo.git
git push -u origin master // 上傳代碼 master分支

git checkout dev1 
git push origin dev1 // 上傳dev1分支

// 換了電腦
git pull origin master // 拉取遠程master
git branch dev1 // 一定要先創建本地分支,再拉取
git pull origin dev1 // 拉取dev1分支 
技術分享圖片

案例: 公司開發的分支dev忘記提交. 回家開發其它部分

技術分享圖片
touch 1.txx
git add .
git commit -m "開發1.txt"
// 忘記push 

// 回到家中
git pull origin dev // 沒有成功
touch 2.txt
git add .
git commit -m "開發2.txt"
git push origin dev // 提交 家中 代碼

// 第二天回公司,此時倉庫中有2.txt 公司電腦有1.txt
git pull origin dev // 拉取倉庫代碼, 處理合並.
touch 3.txt // 開發3.txt
git add .
git commit -m "開發3.txt"
git push origin dev // 入庫

// 回家
git pull origin dev // 也可以分解成下面二步操作:
git fetch origin dev // 遠程庫下載到版本庫
git merge origin/dev // 合並到工作區 會出現分岔

// 使用下面的方式則不會分岔
git fetch origin dev // 遠程庫下載到版本庫
git rebase origin/dev // 合並到工作區但沒有分岔, 保持提交記錄整潔.
技術分享圖片


協同開發
允許他人操作程序
- 合作者 Collaborators
- 創建組織

多個分支:
- user1:

技術分享圖片
git clone https://github.com/frx9527/NodeJsDemo.git
git branch dev 
git checkout dev 
git pull origin dev // 下載分支

git branch user1 // 創建新分支
git checkout user1 
...
git checkout dev // 寫完之後切回dev 
git merge user1 // 合並user1的內容

git push origin dev // 提交分支
技術分享圖片

- user2:

技術分享圖片
git clone https://github.com/frx9527/NodeJsDemo.git
git branch dev 
git checkout dev 
git pull origin dev // 下載分支

git branch user2 // 創建新分支
git checkout user2 
...
git checkout dev // 寫完之後切回dev 
git merge user2 // 合並user2的內容

// 以上步驟同user1 如果user1先提交了,後面的人將提交不成功.

git pull origin dev // 先拉取代碼,解決沖突. 
git push origin dev // 最後提交分支

// 為了避免過多沖突,盡量1天合並一次. 
技術分享圖片

代碼檢查 review
誰來 review ?
- 組長
- 帶領者

如何 review ?
創建review分支:


github
Fork 按鈕, 即copy一份別人代碼到自己倉庫.
// 然後操作自己庫的那份代碼. clone, 修改, commit , push等,
// 完成修改之後, github 上 New pull request, 填寫相關說明, Create pull request
// 對方github上即會收到消息提醒, 進入 pull request 即可看到別人的提交
// 對方可以查看/確認合並等.

避免反復輸入密碼
HTTPS:
https://username:[email protected]/frx9527/NodeJsDemo.git

SSH:
[email protected]/frx9527/NodeJsDemo.git
// 需要事先ssh-keygen , 並將id_rsa.pub 內容添加到github的settings中

.gitignore文件
git中用來忽略檢測某些文件, 可以手動添加內容. 指定文件或類型

github中可以搜索gitignore文件, 可以看到官方提供的ignore規則文件.
github新建倉庫時選項: Add.gitignore 可以選擇對應的類型.

添加版本號顯示:
// 通常在 push之後進行
git tag -a v1.0 -m "這是第一版" // 本地創建Tag
git push origin --tags // 推到github

// 其它命令
git show v1.0 // 查看
git tags -n // 查看本地Tag
git tag -l ‘v1.4.2.*‘ // 查看本地Tag,模糊匹配
git tag -d v1.0 // 刪除Tag
git push origin :refs/tags/v0.2 // 更新遠程tag
git checkout v.10 // 切換tag
git fetch origin tag V1.2

git pull origin --tags
git clone -b v0.1 // 拉取指定版本


git push origin :dev // 刪除遠程dev分支

參考: https://www.cnblogs.com/wupeiqi/p/7295372.html

拉取時提示unmerge, 如果堅持以服務器為準,可以 reset本地,然後pull

git log       # 獲取歷史commit
 
git reset --hard 327366     # 回到327366這個commit  本地的修改將丟失

git checkout .
git pull

本地的修改不要了,重新強制下載

git fetch --all  
git reset --hard 
git pull

刪除上一次遠程倉庫的提交,修改上次提交的代碼,做一次更完美的commit。

技術分享圖片
# 刪除上一次遠程倉庫的提交,修改上次提交的代碼,做一次更完美的commit。

git reset commitId  # (註:不要帶 –-hard)到上個版本

git stash           # 暫存修改

git push --force    #  強制push,遠程的最新的一次commit被刪除

git stash pop      # 釋放暫存的修改,開始修改代碼

git add . -> git commit -m "massage" -> git push 你的分支
技術分享圖片

更多內容,可以參考:https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6

不會點git真不行啊.