用過至少三種git軟件。沒有一款好用的,曾經(jīng)被迫使用sourceTree。感覺還不如Xcode集成的,個人還是推薦使用命令行操作。至于分支圖建議網(wǎng)頁瀏覽。
git命令:
git clone 地址? 下載項目(地址在你當前位置,通過cd切換你想去的目錄)
rm -fr .git? 刪除Xcode git依賴
#代碼提交
git pull? ? // 從remote拉取最新的代碼
git add 文件名? ? //提交該文件代碼到暫緩區(qū)
git add .? ? // 提交所有代碼到暫緩區(qū)
git commit -m “”? ? // 生成一條提交記錄
git commit -a -m “”? ? ?// 組合提交
git push? ? ?// 推送代碼到遠端
git push origin devel? ? ?// 推送本地代碼到遠端某個分支
#代碼操作
git checkout 文件名? ? ? // 撤銷該文件的修改
git checkout .? ? ? ? ?// 撤銷所有文件修改
git reset 文件名? ? // 把該文件從暫緩區(qū)還原回來,通常用于不想提交某個文件
gi reset HEAD? ? // 回退所有內(nèi)容到上一個版本
git reset HEAD a.py? ? //?回退a.py這個文件的版本到上一個版本
git reset --soft HEAD~3? ? //?向前回退到第3個版本
git reset 057d? ? //?回退到某個版本提交
git reset --soft?057d? ? // 回退到某次提交,并保留本地代碼。通常用于合并commit
git reset --hard 057d? //回退到某次提交,不保留本地代碼。強制回退,本地代碼會被銷毀
git revert HEAD? ? // 回退到上一次提交的狀態(tài),按照某一次的commit完全反向的進行一次commit
git revert?057d? ? // 撤銷057d這次的提交記錄
git stash [save message]? ? //?保存代碼到緩存區(qū),對當前的暫存區(qū)和工作區(qū)狀態(tài)進行保存。
git stash list? ? // 列出所有保存的進度列表
git stash pop?[--index]?// 從緩存區(qū)把最近一次保存的代碼提取到本地
git log --grep? ? // 在提交日志中查找關(guān)鍵字,查找某次提交基線
#分支相關(guān)
git branch test? 創(chuàng)建本地分支
git checkout -b develop 創(chuàng)建本地分支develop并切換到該分支
git checkout -b develop 057d 創(chuàng)建本地分支基于某次提交
git push -d origin develop? 刪除遠程分支develop
git branch -D develop 刪除本地分支develop
git branch —all? 查看全部分支(遠程)
git pull -p? 拉取分支
git merge develop? 合并develop分支到當前分支
git rebase 也是合并分支但是合并后會自動把分支的提交按照時間線對齊, 顯得提交歷史很干凈。但是一旦rebase出現(xiàn)沖突,你需要按照提交的次數(shù)不停的去解決沖突。git merge則只需要解決一次沖突。
git rebase?--continue
git rebase?--abort
git rebase的過程中,可能會出現(xiàn)沖突(conflict)。此時git會停止rebase并會讓你去解決沖突,解決完沖突后,需要使用git add 命令去更新暫緩區(qū),然后繼續(xù)git rebase?--continue,繼續(xù)進行分支合并。
你也可以用git rebase --abort來終止rebase,并且分支會回到rebase開始前的狀態(tài)。
#git命令縮寫
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.cp cherry-pick
#常見問題
1. pull之前,本地代碼可能會有沖突。此時需要先把改變的工作放到本地緩存區(qū)。通過git stash 的形式保存代碼到緩存區(qū),pull后再git stash pop 解決沖突后提交代碼。
2.commit代碼的時候出現(xiàn)沖突,可能需要merge代碼,此時會出現(xiàn)兩條提交記錄,如果不想要,可以通過git reset --soft 的形式回退到remote ci,然后重新ci合并提交。