一個git使用教程
https://:.com/jlord/git-it-electron#what-to-install
一個在線Github的功能教學:https://lab.github.com/
看剛才改變的文件的區別。
git diff:
Add GitHub username to Git
添加你的用戶名到你的Git配置: (一次性的,所有倉庫都是這個名字)
再核查一下:
git config --global user.username
git remote add origin https://github.com/chentianwei411/hello-world.git
git push -u origin master
把master分支推到遠程倉庫origin。
-u的意思是設置upstream ❓不明白。
提示:
設置URL給一個遠程倉庫, 改變一個遠程倉庫url
git remote set-url <remoteName> <URL>
拉:
git pull <remoteName> <branchName>
推:
git push <remoteName> <branch>
增加一個遠程倉庫:
git remote add <remoteName> <URL>
本地和遠程斷開:
git remote remove <name> #默認遠程倉庫名字是origin
Fork and Clones
fork到你的GitHub賬號,然后clone到你的電腦,你的電腦可以鏈接2個遠程倉庫,自己的和fork別人的倉庫。
可以從別人的倉庫pull變化的代碼。也可以push request,請求合並。
- fork
- git clone <自己的url>
- 鏈接到原始的倉庫。別人的那個倉庫。git remote add upstream <別人的倉庫URL>
Branch
接着上面鏈接了遠程倉庫后,master變成了gh-pages❕
patchwork ⮀ ⭠ gh-pages git status
Github將自動服務和靜態主頁網頁在branch中,叫做gh-pages。這個免費的服務是GitHub Pages。既然你forked創建了一個網頁,它的主要branch是gh-pages,代替了master。
改一個分支的name:
git branch -m <newBranchName>
上傳一個變動:
git push origin add-chentianwei411
創建一個pull request
你做了一些改動,push到fork的app創建人,並在它的Github上創建一個pull request。對方會選擇是否pull. 當被pull后,在本地可以合並,並刪除舊分支,還可以刪除遠程的舊分支。
git merge <branchName>
git branch -d <dd>
git push <remoteName> --delete <branchName>
Pull form Upstream
最后,因為original 變化了。pull從original upstream
git pull upstream gh-pages
在http://jlord.us/patchwork/ 可以看到我的名字chentianwei411
https://help.github.com/articles/github-glossary/#repository
GitHub術語表Glossary
Blame:
描述一個文件中國年每一行最后的一次變更,包括修改,作者,時間。用於跟蹤記錄一個功能何時增加的,或者哪次提交導致了一個bug。
Diff
在兩個commit中的不同,變化。一般用於描述最后移除提交后,增加或移除的代碼。
Fetch
從最新的遠程倉庫下載變化但沒有merging them in。
Issue
是和這個倉庫相關的被建議的改進,任務,或者問題。Issue 可以被任何人創建(僅公共倉庫), 可以被倉庫的合作者管理。每個Issue都包括它自己的討論論壇,可以被標記和分配給一個user。
Pull request
are proposed changes to a repository submitted by a user。
下拉請求是提議的變化。它由一個使用者提交到一個倉庫。被倉庫的合作者接受或者拒絕。和Issue一樣,Pull request有自己的論壇。
SSH key
在一個在線服務上識別你自己的方法,使用編碼的信息。
Upstream
當談論一個分支或一個fork, 在原始倉庫中的主分支常常被認為是upstream上游。因為這里(主分支)是其他變化進入的主要位置。 The branch/fork 你正工作的地方則稱為downstream下游。
user
一個個人的GitHub賬號。
Git Page
特別的格式要求:
- _config.yml 是自動生成的關於theme的YAML格式文件
- 你需要一個文件使用YY-MM-DD-title.md的格式
- JeKyll使用標記語法。
- 具體要求都在這里:https://jekyllrb.com/docs/posts/
https://lab.github.com/courses/managing-merge-conflicts
學習merge conflicts的解決方法
可以在github.com user interface上解決,也可以在command line或其他本地的tools上解決。
How merge conflicts happen
版本控制讓你制造不斷增加的代碼或文件,保存到歷史記錄中。 Git操作就像一個線性賬單。
在GitHub Flow中,首先,基於base branch創建新的分支。然后,你會增加多個提交commit,這些提交只存在於你新建的當前分支中。最后, 你打開一個pull request提議,讓你增加的commit合並到base branch中去,合並這個分支並刪除這個分支。
版本沖突就發生在當base branch 被某人改變了,而你使用的是沒變之前的base branch。這通常發生在你合並分支之前,已經有他人把他們的分支merge到了base branch.
解決一個簡單的沖突:
2個user在一個repository中工作,他們都創建了分支,都在改同一個文件后,打開了pull requests。一個人的請求被merge到master分支,這不會發生問題,但另一個人的pull request則會被拒絕,顯示conflict.
- 點擊“Resolve conflicts”按鈕,位於頁面底部的“This branch has conflicts that must be resolved”框。
- 進入新頁面,看到紅色高亮的部分: <<<<<< update-config和>>>>>>>>master
- 刪除主分支上的不同代碼,位於========下面,>>>>>>master上面的代碼。
- 然后,移除merge conflict markers。
<<<<<<< update-config ======= >>>>>>> master
- 點擊右上角的“Mark as resolved”,會出現 ✅Resolved all conflicts
- 並原位置出現Commit merge 按鈕,點擊它。回到Conversation討論版。
⚠️,有時,解決一個合並沖突的最好辦法是增加兩個分支之外的內容代碼,甚至聯合所有來自不同分支的變化代碼。因此Git需要人為的檢查代碼並作出適當的調整。
提交合並后發生了什么?
在一個新的merge commit記錄中儲存這個沖突的解決辦法。這樣你和你的團隊可以繼續工作。
另類的解決沖突的辦法:
為了解決一個沖突, GitHub可以使用一個叫做reverse merge的辦法。即:把master合並到update-config分支上。而不是把沖突分支合並到master上。
這種方法可以讓你在分支上測試這個代碼,保證✅后,再合並到master。尤其是在master已經處於產品階段,必須讓它無bug的情況。
Resolve conflicts in the Advanced Conflicts pull request
- 總共2個文件,三個沖突。
- 其中,一個文件中有2處沖突。
- 合並沖突標記殘余,例如<<<<<。如果你的colleagues在本地解決了合並沖突,但忘記移除標記。
方法和上一節一樣。
More complicated merge conflicts:
需要在command line上解決。你可能遇到:
- 修改一個已經刪除的文件,在另一個分支上。
- 兩個分支上,明顯的文件改變,以至於Git對待它們為不同的文件。
- GUI resolution tools 圖形界面工具。