不會點git真不行啊.
基本使用:
// 進入項目根目錄, 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真不行啊.