Git Fun

記錄一下git常用操作

設(shè)置user的name和email

  • 設(shè)置name: $ git config --global user.name "YourUserName"
  • 設(shè)置email:git config --global user.email "YourUserName@email.com"

生成ssh秘鑰

  1. 進(jìn)入.ssh文件夾: cd ~/.ssh
  2. 生成秘鑰:$ ssh-keygen -t rsa -C “YourUserName@email.com”, 連按三個(gè)回車,密碼這會(huì)設(shè)置為空
  3. 創(chuàng)建秘鑰后會(huì)生成兩個(gè)文件id_rsa和id_rsa.pub,將*.pub文件打開并且復(fù)制內(nèi)容到github或者gitlab的ssh配置上

獲取遠(yuǎn)程倉(cāng)庫(kù)源碼

  1. 獲取本機(jī)上的遠(yuǎn)程代碼
    • 指定文件: git init
    • 輸出當(dāng)前文件夾路徑并復(fù)制在粘貼板: pwd | pbcopy(pbcopy是oxs系統(tǒng)命令)
    • 在此倉(cāng)庫(kù)外的文件夾克隆: git clone repositoryUrl
  2. 獲取github或gitlab上的代碼:git clone https://github.com/Zooc/androidzoo.git

各種常用操作

  • 分支操作
    • 瀏覽所有分支,包含線上的: git branch -a, 沒有-a這只瀏覽本地所有分支
    • 從本地創(chuàng)建分支:git branch kenny
    • 創(chuàng)建遠(yuǎn)程分支,在kenny分支下,進(jìn)行推送:git push origin kenny
    • 刪除本地分支:git branch -D kenny
    • 刪除遠(yuǎn)程分支:git push origin :kenny
  • 切換操作
    • 切換分支:git checkout kenny,如果該分支是本地沒有,而線上有的話,那么本地分支和線上分支會(huì)有聯(lián)系,例如如果本地比對(duì)應(yīng)的遠(yuǎn)程分支多幾個(gè)commit,使用git status會(huì)有提示可以推送。
    • 切換到某個(gè)tag,并建立新分支: git checkout -b new_branch_name tag_name。更多切換操作
  • 添加操作
    • 添加當(dāng)前所有文件: git add .
    • 添加所有:git addd -A
  • 提交操作
    • 向本地倉(cāng)庫(kù)提交:git commit -m "commit info description"
    • 修改commit信息:git commit --amend
  • 融合操作
    • 融合開發(fā)分支:git merge develop
  • 推送操作
    • 向?qū)?yīng)的分支推送: git push origin kenny
  • 拉取操作
    • 從對(duì)應(yīng)的分支拉取:git pull origin kenny
  • 回滾操作
    • 回滾到commit-id(將commit-id之后提交的commit都去除):git reset --hard commit-id
    • 將最近n次的提交回滾:git reset --hard HEAD~n
    • 遠(yuǎn)程代碼回滾:
      • 拉取遠(yuǎn)程代碼:git checkout kenny
      • 本地回滾: git reset --hard theCommitId
      • 刪除遠(yuǎn)程分支:git push origin :kenny
      • 重新push本地分支:git push origin kenny
  • 暫存操作:
    • 暫存當(dāng)前狀態(tài)(不建議,最好加上命名): git stash
    • 暫存命名:git stash save "kenny status"
    • 查詢暫存列表:git stash list
    • 彈出暫存列表最上面的一個(gè)狀態(tài):git stash pop
    • 清除暫存:git stash clear
    • 恢復(fù)指定角標(biāo)的暫存,可以多次恢復(fù):git stash apply stash@{0}
    • 查看緩存時(shí)間
      • git stash list --date=relative
      • git stash list --date= short
      • git stash list --date= local
  • 查詢操作
    • 查看log:git log --graph --decorate --pretty=oneline --abbrev-commit
    • 查看最近一次修改的內(nèi)容:git log -n 1 --stat
    • 查看本地所有的提交記錄:git reflog
    • 查看git別名:git config --list | grep alias
    • 取消別名:git config --global --unset alias.br
  • 標(biāo)簽操作
    • 打標(biāo)簽:git tag -a V100 -m "Release version 1.0.0"
    • 以某個(gè)commit id為標(biāo)記打標(biāo)簽:git tag -a V100 commit_id -m "Release version 1.0.0"
    • 提交標(biāo)簽到遠(yuǎn)程服務(wù)器:git push origin --tags
    • 刪除標(biāo)簽:git tag -d V100
    • 刪除遠(yuǎn)端服務(wù)器的標(biāo)簽:git push origin :refs/tags/V100
    • 查看tag 及其注釋:git tag -l -n

其他操作

  • Github fork 項(xiàng)目后代碼同步
    • 首先將自己的fork的項(xiàng)目clone到本地:git clone https://github.com/kenny/kgit.git
    • 在自己的項(xiàng)目里面,添加一個(gè)遠(yuǎn)程連接到本地,命名為kgitgit remote add kgit https://github.com/kenny/kgit.git
    • 從遠(yuǎn)程分支拉去代碼到本地(master可以替換為其他分支名稱,因?yàn)橛行╉?xiàng)目master是沒有代碼的):git pull kgit master
    • 推送到自己的庫(kù)里面:git push
  • 清除掉已提交但是需要忽略的文件,對(duì)于文件夾,第一個(gè)命令還需要再文件夾前增加 -r 參數(shù):
    • git rm --cached logs/xx.log
    • 更新 .gitignore 忽略掉目標(biāo)文件
    • git commit -m "We really don't want Git to track this anymore!"
  • 查看遠(yuǎn)程倉(cāng)庫(kù)地址:git remote -v

其他

  • 全局設(shè)置
    • 將crlf的提示信息關(guān)閉:git config --global core.autocrlf false
  • 設(shè)置別名
    • git config --global alias.cm commit
    • git config --global alias.br branch
    • git config --global alias.co checkout
    • git config --global alias.lg "log --pretty=oneline --abbrev-commit"
    • git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) &C(bold blue)<%an>%Creset' --abbrev-commit"
  • 同時(shí)管理多個(gè)ssh私鑰

常見問題

  • 當(dāng)出現(xiàn)HEAD detached at ******時(shí),表明你已經(jīng)不再任何一個(gè)分支上了,如果想要重回某個(gè)分支,需要再checkout一次,git checkout master。Fix a Git detached head?
  • 切換錯(cuò)誤分支了,而且是一個(gè)非常久的分支,并且在切換到一半的過程中撤銷了,從而導(dǎo)致刪除了部分jar,出現(xiàn)了以下錯(cuò)誤(做任何其他操作時(shí)):/.git/index.lock': File exists.
    • 刪除掉 index.lock文件,以便可以做其他操作:rm -f ./.git/index.lock
    • 恢復(fù)提交前的文件狀態(tài):git checkout .
  • 修復(fù)Mac下命令行Git無(wú)法在vi中commit的錯(cuò)誤-- here was a problem with the editor 'vi'.
  • windows下的中文亂碼問題解決辦法:Windows下Git Bash中文亂碼

應(yīng)用

一個(gè)項(xiàng)目push到多個(gè)遠(yuǎn)程Git倉(cāng)庫(kù) - 個(gè)人文章 - SegmentFault 思否

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,866評(píng)論 1 26
  • 1,查看所有遠(yuǎn)程分支:%git branch -r 2, 拉取遠(yuǎn)程分支并創(chuàng)建本地分支git checkout -...
    will666閱讀 2,192評(píng)論 0 18
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)。這樣一來(lái),任何一處協(xié)同...
    __silhouette閱讀 16,198評(píng)論 5 147
  • 安靜的女人運(yùn)氣不會(huì)太差! 畫家歌手張敬在他的“敬說(shuō)”里,講了這樣一個(gè)故事: “故事是說(shuō)勇敢的,故事發(fā)生在一位印度官...
    黑咖啡_鐘閱讀 705評(píng)論 0 0
  • 在我們使用電腦的過程中,有時(shí)候一個(gè)經(jīng)常用的網(wǎng)頁(yè)突然打不開了,遇到這種情況,清理一下DNS緩存就可以解決了。如何清理...
    孜孜不倦123閱讀 320評(píng)論 0 0

友情鏈接更多精彩內(nèi)容