2.基本概念
- git:分佈式版本管理工具
- github:一個網站,大型代碼託管平臺
- gitlab:基於git的代碼管理軟件
- code review:代碼評審 Code Review主要分兩類:一個就是技術專家人工review;第二個就是藉助程序自動檢查代碼。在 GitHub上你們能夠到Market Place找找質量相關的app,好比代碼靜態檢查等app,讓它在pull request的時候發揮做用,幫助團隊作review
- 集成分支:通常是master分支
- pull requests:是從本身的分支合併代碼到集成分支
- release項目的發佈
- jenkins的使用,至關於redis,須要本身搭建本地服務進行管理使用
- 暫存區,不是正式提交
3.github開源項目搜索技巧
- Advanced search
- 關鍵詞 in:readme stars:>1000
4.git的安裝和配置
- 安裝: git-scm.com/book/en/v2/…
- 配置用戶名和密碼: git config --global user,name 'user.name'/ git config --global user.email 'user.email'
- 查看配置:git config --global --list
5.git的基本命令
- 1.已有項目須要歸入git管理--cd 項目全部文件夾:git init
- 2.新建項目進行git管理 -- cd 某個文件夾/git init 項目名/cd 項目名
- 3.git add 文件名---將文件提交到暫存區
- 4.git commit -m "進行變動說明"
- 5.git status/git log
- 6.git add -u表示已經被git跟蹤的更改能夠一會兒所有放在暫存區提交
- 7.git add -u:將文件的修改、文件的刪除,添加到暫存區。 git add .:將文件的修改,文件的新建,添加到暫存區。 git add -A:將文件的修改,文件的刪除,文件的新建,添加到暫存區。 工做中通常是用到 git add . 或者 git add -A, git add -A相對於git add -u命令的優勢 : 能夠提交全部被刪除、被替換、被修改和新增的文件到數據暫存區,而git add -u 只能操做跟蹤過的文件 git add -A 等同於git add -all
- .git文件內容:HEAD:表示當前工做的分支config:配置文件,local用戶名 refs/heads:存放分支
- head會指定到某一個commit,包括指向新得分支得commit 10.git diff head head^ 當前head和上一次head的比較 11.指定不須要用git管理的文件----在倉庫中建立.gitignore文件
6.文件重命名
- 1.原來的作法,首先工做區重命名,而後提交暫存區,刪除暫存區原來的文件git rm 文件名
- 2.git reset --hard 暫存區工做目錄全部的變動將會清除
- 3.直接使用git mv readme readme.md
7.日誌操做
- 1.git log -n4 --oneline最近4次操做
- 2.git log --oneline --all 全部的
- 3.git log --oneline --all --graph 圖形化
- 4.本節的一些演示命令總結 • git log --all 查看全部分支的歷史 • git log --all --graph 查看圖形化的 log 地址 • git log --oneline 查看單行的簡潔歷史。 • git log --oneline -n4 查看最近的四條簡潔歷史。 • git log --oneline --all -n4 --graph 查看全部分支最近 4 條單行的圖形化歷史。 • git help --web log 跳轉到git log 的幫助文檔網頁
8.分支管理
- 1.git branch -v 查看版本分支
- 2.git branch -av 查看包括遠程分支
- 3.git checkout 分支名:切換分支
- 4.建立新分支:git checkout -b 分支名
- 5.切換分支:git checkout master 查看所有分支:git branch -av 刪除分支:git branch -d 分支名 (-D:強制刪除) 6.分支的做用:前端和後臺分爲不一樣的分支 7.圖形化管理 gitk ---author和committer不一樣之處在於:從master複製到tmp分支,會保留master的做者
9.提交修改
- 1.針對最後一次的提交修改message ----- git commit --amend
- 2.針對老舊的commit的message進行修改------ git rebase -i 要修改父節點的id
10.暫存區/工做區/head
- 1.暫存區和head比較:git diff --cached
- 2.工做區和暫存區比較:git diff 查看全部文件的差異 /git diff --文件名 查看指定文件 工做區和暫存區的差異
- 3.暫存區覆蓋工做區的修改----暫存區的內容都不要:git reset HEAD
- 4.暫存區覆蓋工做區的修改--git checkout
- 5.取消暫存區部分文件的更改--git reset HEAD --文件名
- 6.刪除最近幾回提交 --- git reset--hard hash值(hash值是要刪除提交上一次的hash值)
11.github的使用
- 1.建立分支,修改內容,提交請求,合併分支
- 2.公私鑰的建立--查看有沒有設置公私鑰-- ls -al ~/.ssh
- 3.在本地設置密鑰:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 4.公鑰:~/.ssh/id_rsa.pub ---私鑰:~/.ssh/id_rsa
- 5.遠端站點---git remote add github(站點名) github.com/git201909/g…
- 6.fetch:從遠端拉數據到本地 /push:將本地數據上傳到遠端
- 7.刪除遠端站點:git remote remove 站點名
- 8.從本地倉庫push到遠端倉庫---git push 站點名 --all
- 9.git pull 將遠端分支的內容拉到本地,而後與本地分支合併
- 10.將遠程代碼fetch到本地 git fetch 站點名 分支名
- 11.將遠端master分支合併到本地分支 git merge github(站點名)/master(分支名)
- 12.當本地master分支和遠端分支不同時,可是想要將本地master 分支 merge到遠端分支---git merge --allow-unrelated-histories github(站點名)/master(遠端分支名)
- 13.將本地master分支push到遠端分支---git push github(遠端站點名) master
- 14.git remote -v 查看遠程版本庫信息 git remote add githup 添加githup遠程版本庫 git fetch githup 拉取遠程版本庫 git merge -h 查看合併幫助信息 git merge --allow-unrelated-histories githup/master 合併githup上的master分支(兩分支不是父子關係,因此合併須要添加 --allow-unrelated-histories) git push githup 推送同步到githup倉庫 15.fast-forward:兩個分支合併時,target分支若是是source分支的祖先,那麼這兩個分支就是 fast-forword的關係
12.分支合併衝突問題
- 1.當兩我的同時對github上master分支進行修改的時候,修改不一樣文件---兩個用戶同時獲取拉取了master的代碼--一個用戶修改文件已經提交,另外一個用戶再次push的時候會出現提交異常
<1>首先:1.將遠端分支fetch下來--git fetch github <2>再次:2.合併分支 <3>最後:3.push分支到遠程前端
- 2.當兩我的同時修改了一個分支的同一個文件不一樣區域--一我的修改以後push,另一我的push的時候會發送衝突
<1>1.將遠端fetch下來,而且merge本地和遠端---git fetch github <2>git merge 遠程分支,將遠程分支和本地分支合併 <3>push到遠程:git push githubgit
- 3.當兩我的同時修改了同一分支的同一文件的同一區域
<1>github fetch github <2>merge遠程分支,合併分支的時候會發生衝突,解決衝突,修改以前修改的文件,而後提交github
git push -f 協同工做通常禁止使用web