學習聖思園張龍老師的Git課程。html
使用Mac編程的好處,不是由於Mac長得好看git
若是你尚未用Git,就不要寫代碼了。程序員
GitHub倉庫的使用。github
新員工入職的時候,會讓他先用一週的時間去學習Git。web
Mac(優雅的開發環境,Terminal)正則表達式
不要使用GUI入門Git。要使用命令行。shell
安裝Git編程
bashcentos
每個Linux和Mac自帶的解釋器。(可是功能不是很強大)
強大的叫:zsh.
增強版本: oh my zsh (自行安裝)緩存
清屏命令:clear
or ctrl+L
建立命令:touch xxx.txt :=增刪改等。
查看命令:man cp
vi的基本使用。
必需要掌握的:Terminal操做
做爲一個JAVA程序員,應該大部分都是在Windows使用JAVA開發,可是但願不要僅僅侷限於JAVA。否則對成長很不友好。
學習方法:知道一,更知道二,更知道三。
開發Git來管理Git
不會Git,就別開發代碼了。
Git文件:已經被版本庫管理的文件
已修改:在工做目錄修改Git文件
已暫存:(indea-staged)對已經修改的文件執行Git暫存操做,將文件存入暫存區
已提交:將已經暫存的文件執行Git提交操做將文件存放版本庫
pic1
Git的文件狀態以下
Pic2
pic3
Linux
Mac
Windows
須要自行了解 SSH
GUI:source tree & GitHub Desktop
ssh-keygen -t rsa ## 三次回車,跳過密碼
得到版本庫
git init git clone
查看信息
git help git log git diff
版本管理
git add git commit git rm
遠程協做
git pull git push
其餘經常使用指令
git status ##查看狀態 git log ##查看commit記錄 git checked -- xxx.txt ##丟棄已經修改的 git reset HEAD xxx.txt ##回到修改前的狀態 git commit -m 'commit message' ##簡要信息顯示並commit echo 'welcome' > xxx.txt ##重定向welcome 到這個文件的輸出 git add . ##當前目錄全部文件都add git log -3 ## 最近三條的log git help config ## 獲取配置 git config --help ## 幫助文檔 man git-confgi ##幫助文檔
配置username && email**
/etc/gitconfig (幾乎不會使用,針對於整個操做系統的)
git config --system
~/.gitconfig (很經常使用,針對於當前用戶的全部配置)
git config --global
.git/config (針對於特性項目)
git config --local
Git的提交ID(commit id)是一個摘要值,這個摘要值其實是個sha1計算出來的
刪除(兩種方式)
git rm 和 rm的區別 git rm : 1.刪除文件 2.而且將刪除的文件歸入到暫存區當中(stage,index) 若想恢復刪除的文件須要執行兩個動做 1. git reset HEAD test2.txt ,將待刪除的文件從暫存區恢復到工做區 2. git checkout -- test2.txt ,將工做區中的修改丟棄掉 rm: 將文件刪除文件,這時候被刪除的文件沒有歸入暫存區當中 注意: 這時候若是直接commit,是提示沒有修改記錄的。 想要歸入暫存區的話,須要使用 git add xxx.txt 把這個文件的刪除再加入暫存區。
重命名文件(兩種方式)
git mv name1.txt name2.txt (歸入暫存區的修更名字操做) 回退: git reset HEAD name1.txt git checked -- name1.txt 也可使用操做系統的mv指令,關係和刪除是相同的
日誌修改
git commit --amend -m 'new message' ##把上次保存的commit消息替換掉
熟練使用命令行,是提高開發效率的第一步。
操做的時候自動過濾制定的文件。放置在項目的根目錄下
支持全文件名/正則表達式/後綴名/通配符
setting.properties ##刪除指定文件 *.b ##後綴名 !a.b ## !除了什麼 /TODO ##僅僅忽略項目根目錄下的TODO文件, stu/TODO 這種是不忽略的 /*/TODO ##僅僅刪除二級目錄下的TODO文件 /**/TODO ##刪除全部目錄下的TODO文件 doc/*.txt ##忽略doc目錄下的.txt文件,可是 doc/a/a.txt 是不會被忽略的 doc/**/*.txt ##忽略doc目錄下的全部*.txt build/ ## 忽略build目錄下的全部文件 #xxxx ## 表明註釋
查看分支
git branch ## 查看分支
建立分支
git branch new_branch ##建立分支
切換分支
git checkout new_branch ##切換分支
刪除分支
git branch -d new_branch ## 刪除分支, ## 可是不能刪除當前所處的分支。 ## 刪除 未被合併的 - 使用大寫的 D ## 刪除 已經被合併的 - 使用小寫的 d ## 是爲了保護你的誤操做。
建立分支的同時,切換到新分支
git checkout -b new_branch
合併分支(先修改,再合併)
git merge new_branch ##合併指定分支合併到當前分支
顯示分支的操做
git branch -v ##顯示當前分支最後一次提交的信息(commitId 和 message) git log git log -3
分支:一個commit對象鏈:一條工做記路線。
每個分支,會記錄上一次的commitID。(工做記路線,時間線)。
HEAD指向的是當前分支
HEAD信息存放在:.git
目錄下的HEAD
文件中
git reset HEAD filename ##以前使用過的恢復指令
master指向提交
Fast-Forward 快進 (沒有衝突文件的合併)
若是可能,合併分支時Git會使用fast-forward模式
在這種模式下,刪除分支時會丟掉分支信息
合併時加上 --no-ff
參數會禁用fast-forward,這樣會多出來一個commit id
git merge --no-ff dev
查看日誌
git log - -graph
出現衝突:conflict. 兩個分支修改同一個文件的同一行
git add file
. 告訴git,你已經解決衝突git commit
再次保存. (master上面會出現一個merge的commit記錄)建立分支,無非是建立了一個指針。
問題:爲何修改文件以後須要add
一下,而後才能commit。(已明白,添加修改到暫存區。)
git commit -am 'commit message' ##添加全部修改文件到暫存區。而後commit。 合二爲一
git reset --hard HEAD^ ##返回到上次提交 git reset --hard HEAD^^ ##返回到上兩次提交 git reset --hard HEAD~1 ##回到第一個提交 git reset --hard HEAD~n ##回到第第n個提交 git reset --hard commitID ##回退到指定commit git reflg ##查看操做日誌
git checkout -- <file> ## 丟棄指定文件在該空間下的改變 ## 丟棄的是未被放在緩存區的改變 ## 修改的是工做區,修改的是最後一次的修改 git reset HEAD <file> ## 將以前添加到暫存區(stage、index)的內容,從暫存區移除到工做區
git checkout 最多見的是用在分支的切換上
git checkout -b test ## 建立並切換到新分支 git checkout master ## 切換到master分支 git checkout commitid ## 檢出到指定commitID
分支的更名
git branch -m master master2 ##修改分支master爲master2
問題:有修改完的代碼:如何切換分支。
如何完成臨時保存?
##保存現場 git stash ## 保存當前工做區的全部修改。 git stash save 'message' ##保存到臨時保存去。而且加註釋 git stash list ## 查看保存區的臨時修改 ##恢復現場 git stash pop ##將上次的臨時保存的工做區取出來,而且將臨時保存的分支給刪除掉 git stash apply ##將臨時工做區的內容取出來,可是不刪除臨時保存的分支 git stash drop stash@{0} ## 刪除指定的保存區的存儲內容
標籤不依賴於分支
輕量級標籤
git tag v1.0.1 ## 建立輕量級標籤
建立一個帶有標註性的標籤
git tag -a v1.0.2 -m 'desc message' ##建立帶有註釋的標籤
查看版本庫中的全部標籤
git tag git tag -l 'v1,0' git tag -l '*2' git tag -1 'v*'
刪除標籤
git tag -d v1.0.1
git blame 標籤的使用
顯示上一次對文件修改的做者信息和時間等
git blame <file>
diff標籤的使用 (差別性查詢)
1.先介紹 Mac自帶的diff 比對命令
diff ## 系統自帶的命令 diff a b ## 比較文件a 和 b的區別 diff -u a b ## 詳細的介紹a和b的區別
diff 屬性介紹
--- 原始文件 +++ 目標文件 @@-1,3 +1,3 @@ ` ` Hello world ## 沒有符號表示兩個文件都有的 `-` 表示第一個文件須要刪除這一行 就能夠生成a `+`表示第一個文件須要添加的這一行 就能夠生成b 因此:- 表明第一行,+ 表明第二行
git diff 命令詳解
git diff ## 默認比較:暫存區和工做區的差異 git diff commit_id ## 工做區和特定的commit_id的差異 git diff HEAD ## 工做區與當前分支的最新提交的代碼的比較 git diff --cached ## 暫存區和版本庫中的比較 git diff --cached commit_id ## 暫存區和版本庫中指定版本的比較
也許你如今用以爲學這些沒有用,可是是否是瞭解了這些多的東西,是否是更能擴大你的思惟呢?
你以爲沒用,多是由於你沒有見過實際的服務器環境
push 推送
pull 拉取,同時會執行合併merge
遠程版本庫:GitHub
內網遠程版本庫:GitLab
介紹:開源的社交平臺。免費免費使用,代碼須要開源。
推薦:學習好使用GitHub以後,就會發現新的世界
git remote add origin ip.... ## 添加遠程地址 git push -u orgin master ## 將本地的master提到遠端, 而且 -u 是master與倉庫裏的關聯
遠程分支:origin
git branch -a ## 查看分支(包括遠端分支) git branch -av ## 查看分支並顯示最後一次commitID
分支,指針,指向commit地址
git status 能夠查看當前分支和遠端分支的版本對比
本地不能直接對遠端分支進行操做,若是切換到遠端分支,就是對遠端分支所指向的commit點來顯示給你。
拉取遠程倉庫地址:
git clone ...地址 git clone ...地址 新項目名
fast forward : 快進
快進是沒有衝突的時候的一種狀態
git add的三個功能:
衝突解決步驟:
dd ## 刪除一行 :2,4d ## 刪除2-4行 vi操做 1.跳到文本的最後一行:按「G」,即「shift+g」 2.跳到最後一行的最後一個字符 : 先重複1的操做即按「G」,以後按「$」鍵,即「shift+4」。 3.跳到第一行的第一個字符:先按兩次「g」, 4.跳轉到當前行的第一個字符:在當前行按「0」。
GUI(在熟悉Git命令和參數以前,儘可能不要使用GUI)
GUI(圖形工具)
Gitk(圖形工具)
GItHub Desktop (圖形工具)
Git合併原則:Git遵循着一個三方合併的原則
CommitID的生成策略是:SHA1
本質:字符串的替代
git config --global alias.br branch ## 使用br代替 branch 存在 ~/.gitconfig 文件裏面 經常使用的: git config --global alias.st status git config --global alias.co checkout git config --global alias.unstage 'reset HEAD' git config --global alias.ui '!gitk' ## 調用外部命令
refspec 本質:本地的分支和遠程分支上的對應關係
建立遠端分支 新版本 git push --set-upstream origin develop ## 將本地的分支推送到遠程,而且創建對應關係 舊版本: git push -u origin test ## 將本地的推送到遠程,而且創建對應關係 建立本地分支和遠端分支名字不一樣的分支 git push --set-upstream origin develop:develop2 ## 源分支:遠端分支 上述分支創完遠端分支以後,本地分支不能直接push到遠端分支那個上面 (建議同名)。 git push origin HEAD:develop2
關聯遠端分支 新版本 git checkout -b develop origin/develop ## 建立一個develop分支追蹤遠端的develop分支 舊版本: git checkout --track origin/develop ## 建立一個develop分支追蹤遠端的develop分支
刪除遠端分支 舊版本: git push origin :develop ## 推送一個空的分支到遠端分支。 新版本: git push origin --delete develop ## 刪除遠端分支
幾個重要的點:
git push 的完整寫法:git push origin srcBranch:destBranch
pull 操做的完整命令:git pull origin srcBranch:destBranch
HEAD標記:HEAD文件是一個指向你當前所在分支的引用標識符,該文件內部並不包含SHA1值,而是一個指向另一個引用的指針
當執行git commit 命令時,Git會建立一個commit對象,而且將這個commit對象的parent指針設置爲HEAD所指向的引用的SHA-1值
咱們對於HEAD修改的任何操做,都會被reflog給記錄下來
查看遠程HEAD
vi .git/ORIG_HEAD ##查看遠程HEAD vi .git/FETCH_HEAD ##查看拉取的HEAD
遠端分支重命名:只能先刪除遠端分支,而後從新推送遠端分支
本地分支:本地遠程分支:遠程倉庫的分支
Git的高級命令(咱們經常使用的全部命令都是高級命令)和底層命令(Git的基礎)
底層命令
git symbolic-ref HEAD ## 讀取文件的底層命令 git symbolic-ref HEAD refs/heads/develop ##
在遠端倉庫中: released就是表明的標籤
git tag ## 查看全部的標籤 git tag v1.0 ##建立輕量級標籤 git tag -a v2.0 -m 'v2.0 released' ## 建立嗲註釋的標籤 git show v1.0 ##查看指定標籤的信息 git tag -l '?2*' ##模糊查詢標籤
將標籤推到遠程倉庫
git push ## 默認不會推送標籤,只會推送分支 git push origin v1.0 ##推送指定標籤到遠程 git push origin v1.0 v2.0 v3.0 ##批量推送指定標籤 git push origin --tags ## 一次性推送全部的標籤 推送標籤的完整語法 git push origin refs/tags/v7.0:refs/tags/v7.0
獲取遠程標籤
git pull ##拉取的時候會獲取全部的標籤 拉取指定標籤 git fetch origin tag v7.0 ## 拉取指定的標籤
刪除遠端標籤
1. 在遠端倉庫直接點擊刪除按鈕。 2. 推送一個空的源標籤推送到遠程,就刪除了。(方法和分支相似) git push origin :refs/tags/v6.0 ##經過本地命令刪除遠端標籤 git push origin --delete tag v5.0 ## 方法2:經過本地命令刪除遠端標籤 git tag -d v5.0 ##刪除本地tag標籤
在缺省狀況下,refspec會被git remote add 命令所自動生成。Git會獲取遠端上refs/heads下的全部引用,而且將他們寫到本地的refs/remotes/origin目錄下,因此若是遠端上有一個master分支。能夠經過如下方式去查詢遠端分支的歷史記錄。
- git log - git log origin/master - git log remotes/origin/master - git log refs/remotes/origin/master (最全面的寫法)
.config文件裏面的信息
git fetch = +refs/ ## 這個加號,若是加上是 就算不能快進也能夠拉取代碼
refs文件 (refspec的縮寫),存放的是全部遠端分支
關於已經被刪除的分支
A 在本地刪除遠端分支,B 在本地的遠端分支還在
B這個時候拉取是不行的,會提示 沒法拉取原單分支。
git remote prune ## (裁剪:刪除本地多餘的 遠端分支)
git gc
會用的不多,大部分會在底層自動執行
做用:打包,壓縮 ,對對象進行壓縮
手動執行以後的效果:目錄下的refs文件就會都不見了(被壓縮到 packed refs文件裏面了)
Objects/ 目錄:就是每次壓縮的時候所存放的目錄
關於Git的全部操做和文件,都存放在.git的目錄裏面
使用 git rm
刪除文件,包括本地和Git跟蹤
使用git rm --cached
刪除緩存區的文件,不刪除本地文件
刪除遠端倉庫
git remote rm origin ## git remote show origin ##展現遠端倉庫信息
關於重命名文件
使用 git mv hello.txt hello2.txt
至關於:
1. mv hello.txt hello.txt 2. git rm hello.txt 3. git add hello2.txt
關於重命名遠程倉庫
git remote rename origin origin2
Git 裸庫: 沒有工做區的倉庫(通常在服務器端使用Git裸庫)
建立裸庫:git init --bare
出現的原因:開發項目的時候,這個項目依賴於其餘項目。須要把子項目的源碼也依賴到當前開發的項目當中
添加子模塊
git submodule add 子模塊的地址 mymodule ## 拉取子模塊的代碼到 mymodule文件中
添加完以後會自動生成兩個文件: .gitmodules 和 mymodule文件夾
此時兩個文件就已經相互包含了。在GitHub倉庫裏面也可以識別。
父項目獲取子模塊的最新代碼
git pull
git submodule foreach git pull
子模塊修改以後,須要在父模塊進行提交子模塊的修改
其餘人如何克隆
方法一:
git clone
直接克隆父模塊的時候,子模塊是空的git submodule init
進行初始化git submodule update --recursive
方法二:
使用 git clone 倉庫地址 存放地址 --recursive
一步完成
刪除子模塊
git rm --cached mymodule
rm -rf mymodule
.gitmodule 文件
(步驟同上)使用git subtree
查詢subtree的使用幫助文檔
功能和以前介紹的git submodule
同樣,可是submodule存在着很致命的弊端。在主工程中修改子工程的代碼。可能會形成不少不少的問題。submodule也沒有提供刪除操做。因此在後續版本中添加了git subtree
git subtree
的使用也比較簡單,也很容易的實現父模塊和子模塊的雙向修改。官方推薦使用subtree替換submodule.
如何使用
準備兩個倉庫,父模塊和子模塊
添加一個新的遠程庫。(subtree-origin)
添加子模塊到父模塊:
git subtree add --prefix=subtree subtree-origin master --squash #功能描述:添加遠端倉庫`subtree-origin` 的`master分支`到本項目的 `subtree`目錄下 #PS:`--squash `合併壓縮以前的全部commit爲一個。
subtree和submodule的區別
submodule是使用指針指向子模塊的目錄
subtree是將代碼真真正正的放在父模塊中
修改子模塊以後如何更新
git subtree pull --prefix=subtree subtree-origin master --squash
在父模塊修改完子模塊以後,如何同時提交兩個倉庫
git push
默認只是推送父模塊一個項目git subtree psh --prefix=subtree subtree-origin master
推送子模塊遇到問題:最好深刻底層的去了解爲何會發生這樣的問題,而後解決。
備註:git push --set-upstream origin master
推送當前分支到遠端分支
或者:git push -u origin master
推送當前分支到遠端分支
vi操做 1.跳到文本的最後一行:按「G」,即「shift+g」 2.跳到最後一行的最後一個字符 : 先重複1的操做即按「G」,以後按「$」鍵,即「shift+4」。 3.跳到第一行的第一個字符:先按兩次「g」, 4.跳轉到當前行的第一個字符:在當前行按「0」。
添加subtree
git subtree add -P subtree subtree-origin master --squash git subtree add --prefix subtree subtree-origin master --squash git subttee add --prefix=subtree subtree-origin master --squash #上述三種方式等價 使用 git subtree查看幫助可以看的到
在子模塊修改subtree以後,在父模塊獲取
(注意:squash 要使用的全局都使用)
git subtree pull -P subtree subtree-origin master --squash
在父模塊修改subtree以後,在父模塊提交substree
git subtree push -P subtree subtree-origin master
直接push全部的內容到父模塊
git push
父模塊提交過以後,在子模塊修改,再在父模塊拉取代碼,就會出現衝突
從理解上,應該不會衝突。可是產生衝突了
使用 git status
查看衝突位置
解決衝突,上傳。可是會提示什麼都沒有修改
這時候再去修改subtree項目的文件,push
而後再去父模塊拉取代碼,此次就會成功了。
問題:爲何有時候會出現衝突?有時候不會出現衝突?
根本緣由還在:squash這個參數。
由於使用了squash,致使三方合併的commit記錄尋找不到。因此就會出現衝突
可是:squash 不論用不用,在子模塊修改完第二次以後,在父模塊修改的第一pull就會出現問題。
因此:要麼全程都使用squash,要麼全程都不使用squash
**substree spilt **
拆分子模塊 git substree spilt
以前裏面攜帶的commit記錄,也會攜帶出來
用的很少,也有不少不方便的地方。好比:同時修改了子模塊和父模塊,是沒辦法區分子模塊的
--squash
合併壓縮以前的全部commit爲一個。
合併壓縮以前的全部commit爲一個提交。(以前的每一個commit記錄都會消失)
主倉庫中是看不到squash
以前的commit的,因此容易致使出現修改子模塊的時候出現問題。
做用:防止subtree的commit記錄污染了父模塊的記錄
引發的問題: 合併commit記錄以後,致使三方合併不可以正常進行
爲何使用和不用squash均可能會衝突?(使用圖形化界面能夠合理的看出來緣由)
找到衝突的根本緣由(合併的時候沒有共同的祖先)
三方合併的時候,雖然A B 有一個共同祖先,可是A的上面還有一個祖先。
往上追溯的時候,會發現他們的根本根源是沒有交集的。因此在合併的時候不知足三方合併,因此就可能出現衝突。
總結:若是一開始就是用了squash
的話,請一直使用,若是不使用的話,就都不要使用。
學習重要且常見的命令和參數
對於技術的理解越深刻,你對其餘技術的瞭解學習的也就越快
張龍老師應該是全網目前將的最系統,最深刻,最完整的課程
Git會伴隨你的開發生涯。
功能描述:將這個分支上的commit記錄,應用到另一個分支上。很簡單可是頗有用。
如:develop改了c1,c2, 可是c1 c2 應該上master的。最笨的辦法就是手動拷貝出來,而後刪除本地的提交,提交在其餘地方。
cherry-pick
就是爲了解決這種問題而存在的。
主要應用在本地分支上。
語法:
git cherry-pick commitid ## 將指定的commitID的記錄,放入到當前分支上。
若是有兩個commitid,是否可以直接只截取最後一條,而不是按照以前commit的順序去提交?
能夠,可是會衝突。正常解決衝突就行了。
若是按照順序,就不會用衝突。
在源分支上的 commit,仍是存在的。 使用 checkout去恢復。
充分利用Git提供的解決方案去解決咱們的問題
rebase:變基 (衍合):改變分支的根基
要完成的功能相似於merge的功能,從某種程度上結果相同,可是執行原理徹底不一樣。
在A分支上,執行git rebase B
效果圖如上
注意:
git add
添加,而後執行 git rebase --continue
git rebase -- abort
命令終止rebase,分支會恢復到rebase到開始前的狀態rebase的最佳實踐
不要對master分支執行rebase,不然會引發不少問題
通常來講,執行rebase的分支都是本身的本地分支,沒有推送到遠程版本庫
由於若是你已經上傳,絕對不要使用git rebase,別人可能已經拉取了你的分支。歷史應該是快照,不該該被修改。
rebase是會修改歷史記錄的。
若是已經合併到遠程,請老老實實的使用git merge合併就行。
rebase是先將要變基的內容,以補丁的形式打包。而後添加到指定基礎的分支的後面。
在執行git gc的時候,會清理掉補丁。 補丁存放在rebase-apply 目錄下
在出現衝突的時候
Git merge:歷史發生,就不能修改
Git rebase:歷史能夠被修改,只顯示最好的
因此:視狀況而定,因人而異
基於groove的腳本語言來編寫和配置的
優點:兼容Maven
1.下載 2.配置
文檔:很好,涉及了方方面面 點擊跳轉
DSL:領域特定語言。須要對groove語言有所瞭解
應用:
不要將本身的目光放在你當前的項目組,放眼去望。不要閉門造車
.gitignore
ESC(彈性計算服務)
github 服務器在國外,相對慢
gitlab 安裝在Linux上面。 阿里雲ECS(彈性計算服務)雲服務
不少不少的創業型公司,都在使用雲服務器,都不會去購買本身的服務器。由於便宜。
官網:www.aliyun.com
購買雲服務器
SSH - 鏈接購買的 Linux系統,(centOS 7 )
Linux服務器的使用
命令操做
Linux學,不要怕,去積累,慢慢學。沒別的辦法。
國內大部分公司都在使用GitLab來託管代碼
GitLabCE 社區版 (大部分使用這個)
GitLabEE 企業版
安裝和配置必要的依賴
開啓防火牆 HTTP/SSH (在ESC上可能會出現防火牆的問題)
執行腳本的時候,下載GitLab源的時候就會出問題。(須要手動下載rpm文件-對應centos7)
而後經過 scp 的方式,將本地下載的GItLab包上傳到阿里雲的ECS上
由於中國GMW禁用。
GitLab是Ruby語言寫的
訪問IP登陸。 設置登陸限制,是否容許註冊等等。
通常內網是不容許本身註冊的。
GitLab的功能是很是很是強大的。(項目,用戶,組的管理)
30多講和周邊內容的介紹和學習,成爲了一個能使用Git進行平常開發和託管-合格的使用人員
本地操做 - 命令行
add mv rm 基本操做
.gitignore 忽略文件
git branch :檢出,合併,切換,推拉
git stash:暫存
git remote操做
github
遠程協做模型、分支最佳實踐
別名,alias設定
GUI工具,git gui, gitk
git refspec : push pull 分支映射的一些操做
.git目錄下的文件和做用
git gc
git裸庫,submodule ,subtree
git cherry-pick
git rebase
idea
greadle/getty
git/idea/gradle
ECS
gitlab
markdown
gitbook.com (電子書出版領域的標準) Word是最low的方式
記錄本身可以用到的功能的命令
git init ## 初始化倉庫 git remote add origin address ##建立遠端地址 git remote remove name ## 刪除遠端地址 git commit -m 'message' ## 提交一次commit git rm test.txt #刪除一個已經存到緩存區的文件 git add . ## 提交一次修改 git reset HEAD test.txt ## 將已經保存到暫存區的內容撤回到工做空間 git branch develop ##建立分支 git checkout develop ##切換分支 git checkout -b new_dev ##建立並切換到Dev git checkout - ##切換到上一次所在的分支 git config alias.co 'checkout' ## 定義別名 git merge branchname ## 合併指定分支到當前分支 git stash ##將暫時修改未提交的內容,暫存到一個分支 git stash pop ##返回上次暫存的一些內容 git checkout -- test.txt ##將指定文件返回到最初始未修改的狀態 git tag ##查看標籤 git tag v1.0 ##建立標籤 git tag -d v1.0 ##刪除指定標籤 git checkout v1.0 ##切換到指定標籤 git blame <file> ##查看指定文件的修改人員信息詳情
.gitignore 文件的配置規則
gitbook的使用