由於工作的需要,自己常常需要對同樣的**拉不同的分支,做不同的測試,最後要合併其中乙個分支。剛看時使用svn,發現自己必須在本地或者伺服器上建立不同的分支,而且拉很多分支的時候這個就很痛苦。
後來發現git--分布式的版本控制工具,自己便在本地使用它做為版本管理。發現它不論在拉分支(git可以隨意拉很多分支),合併,提交都很是方便。
現在總結下git的使用。
基本使用
git config --global user.name "your name"
git config --global user.email "your email"
git init
git add
#當前目錄下的所有檔案
git add .
git add
git checkout
git checkout -b
git branch
git branch
git log
git log -p
git diff
git commit -m "your comment" /* 針對用git-add新增過新檔案的情況使用 */
git commit -a -m "your comment" /* 針對無新檔案新增的情況使用 */
git pull
git push
git reset --hard 等同於 git reset --hard head(見後面描述)
7) 軟恢復(只恢復git索引,不改變其它任何檔案修改內容和git status資訊)
git reset --soft 等同於 git reset --soft head(見後面描述)
8) 預設恢復 (恢復git索引和git status狀態,不改變任何修改檔案的內容)
git reset --mixed等同於git reset等同於git reset head 等同於git reset --mixed head
9) head, head^, head^^, head^分別表示當前提交,倒數第二次提交,倒數第三次提交,以及倒數第n次提交
git reset --hard head^
git reset --soft head
10) 檢視某次修改
git show head等同於git show
git show head^
git show head^^
git show head^
10) 檢視所有修改記錄
git log
11) 轉殖git
git clone src_git target_git
15) 刪除分支
git branch -d delete_branch
16) 合併分支
git merge src_branch
17) 同步clone的git倉庫
git fetch origin
git merge origin/master
18) 遠端git訪問
git pull remote_git [local_git]
19) 更新遠端git
git push remote_git current_branch
例如:git remote add origin git:
上面的命令就會增加url位址為'git: ',名稱為origin的遠端伺服器,以後提交**的時候只需要使用 origin別名即可
掌握提高
git rebase:
用下面兩幅**釋會比較清楚一些,rebase命令執行後,實際上是將分支點從c移到了g,這樣分支也就具有了從c到g的功能
將當前的工作目錄完全回滾到指定的版本號,假設如下圖,我們有a-g五次提交的版本,其中c的版本號是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我們執行了'git reset
bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那麼結果就只剩下了a-c三個提交的版本
git stash:
將當前未提交的工作存入git工作棧中,時機成熟的時候再應用回來。
基礎命令:
$git stash
#do your work
$git stash pop
高階:
git tag:
可以將某個具體的版本打上乙個標籤,這樣你就不需要記憶複雜的版本號雜湊值了,例如你可以使用'
git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20
'來標記這個被你還原的版本,那麼以後你想檢視該版本時,就可以使用 revert_version標籤名,而不是雜湊值了
svn(subversion)是當前使用最多的版本控制工具。與它相比較,git
最大的優勢在於兩點:易於本地增加分支和分布式的特性。
下面兩幅圖可以形象的展示git與svn的不同之處
對於易於本地增加分支,圖中git本地和伺服器端結構都很靈活,所有版本都儲存在乙個目錄中,你只需要進行分支的切換即可達到在某個分支工作的效果。而 svn則完全不同,如果你需要在本地試驗一些自己的**,只能本地維護多個不同的拷貝,每個拷貝對應乙個svn伺服器位址。舉乙個實際的例子,以前我所在 的小組使用svn作為版本控制工具,當我正在試圖增強乙個模組,工作做到一半,由於會改變原模組的行為導致**伺服器上許多測試的失敗,所以並沒有提交代 碼。這時候上級對我說,現在有乙個很緊急的bug需要處理, 必須在兩個小時內完成。我只好將本地的所有修改diff,並輸出成為乙個patch文 件,然後回滾有關當前任務的所有**,再開始修改bug的任務,等到修改好後,在將patch應用回來。前前後後要完成多個繁瑣的步驟,這還不計中間** 發生衝突所要進行的工作量。可是如果使用git, 我們只需要開乙個分支或者轉回到主分支上,就可以隨時開始bug修改的任務,完成之後,只要切換到原來的分支就可以優雅的繼續以前的任務。只要你願意,每 乙個新的任務都可以開乙個分支,完成後,再將它合併到主分支上,輕鬆而優雅。
git成長之路(一)
git常用命令 github與pycharm的結合使用 使用環境 windows10 global user.name global user.email 建立使用者名稱和使用者的email 隨便設定,為了標識是誰在進行 操作 git init到你制定的資料夾下,初始化資料夾 git status檢...
git 命令記錄貼
記錄下最近使用git的場景。問題 1 將乙個完整的專案發布到已建立好的git位址 碼雲 執行步奏 1 配置自己的公鑰 2 檢查是否連線成功 ssh t git git.oschina.net welcome to git osc,張輝 3 初始化專案資料夾 git init 4 同步線上版本庫 gi...
職場成長(一)
職場雖然不如官場,但是同樣需要注意很多細節點,有時候乙個不小心,你的職業生涯就到此結束,平時對自己要求高一些總沒壞處。走路的姿勢很重要,往往可以體現乙個人的整體形象,切勿一些奇怪的走姿 大爺步 外八步 內八步 大搖大擺 匆匆忙忙 蹦蹦跳跳。上班期間最好不要穿奇裝異服,比如 古裝 cosplay 男扮...