在進行git操作之前吃度,首先得創(chuàng)建一個遠程git倉庫壹蔓。由于你的本地Git倉庫和遠程Git倉庫之間的傳輸是通過SSH加密的,所以陷舅,需要一點設置:
第一步: 創(chuàng)建SSH Key望薄。在用戶主目錄下疟游,看看有沒有.ssh目錄,如果有痕支,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件颁虐,如果已經有了,可直接跳到下一步卧须。如果沒有另绩,打開終端(Windows下打開Git Bash),創(chuàng)建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你只要把郵件地址換成你git的郵件賬號就可以了故慈,然后一路回車板熊,使用默認值就可以了,無須設置密碼察绷。
如果一切順利的話,你就可以在根目錄下看到.ssh的目錄津辩。里面有id_rsa和id_rsa.pub兩個文件拆撼,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰喘沿,不能泄露出去闸度,id_rsa.pub是公鑰,可以告訴別人蚜印,一般是會將公鑰上傳到遠程的git倉庫莺禁。
第二步: 在遠程git配置公鑰。
也就是將id_rsa.pub里的信息拷貝到SSH key的配置信息里即可窄赋。
這樣你才可以將你本地的代碼上傳到遠程庫哟冬,這里的私鑰對就是識別你的身份,確認這里的提交是你進行操作的忆绰。
一浩峡、將本地代碼提交到遠程倉庫。
如果遠程已經存在倉庫 可以直接執(zhí)行git clone +倉庫地址
1. 首先得創(chuàng)建本地倉庫错敢。
可將項目拷貝到一個工程文件下翰灾,或直接在項目的主目錄,創(chuàng)建git倉庫。
通過cd到文件目錄下纸淮,在終端執(zhí)行git init,如果在已有的項目中存在了git倉庫平斩,可先刪除相應的git文件,再進行創(chuàng)建咽块。
git init
2. 關聯遠程倉庫双戳。
$ git remote add origin git@github.com:michaelliao/learngit.git(此倉庫地址,會在創(chuàng)建倉庫的時候生成糜芳,直接拷貝過來即可)飒货。
3. 關聯后,用git status查看倉庫狀態(tài)峭竣。然后再執(zhí)行下面的操作塘辅。
git add .
git commit -m "提交說明"
最后再執(zhí)行使用命令git push -u origin master第一次推送master分支的所有內容;
git push -u origin master
當你第一次使用Git的clone或者push命令連接GitHub時皆撩,會得到一個警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
這是因為Git使用SSH連接扣墩,而SSH連接在第一次驗證GitHub服務器的Key時,需要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器扛吞,輸入yes回車即可呻惕。
查看遠程倉庫地址:
git remote -v
會得到下面的打印
origin git@gitlab.xxx.com.cn:xxx-folder/ios-app.git (fetch)
origin git@gitlab.xxx.com.cn:xxx-folder/ios-app.git (push)
倉庫創(chuàng)建好之后,接下來就是開發(fā)者用的最多的操作滥比,基本是每天都會用到亚脆。
二、分支管理盲泛。
1. 創(chuàng)建分支
//從拉取遠程分支到本地
git fetch origin remoteBranchName
git checkout -b branchName origin/remoteBranchName
//創(chuàng)建新的本地分支
git branch branchName //創(chuàng)建分支
如濒持, git branch dev //創(chuàng)建dev分支
查詢本地綁定的遠程分支:
git branch -vv
2. 切換分支。
git checkout -b dev_test //創(chuàng)建并切換到dev_test分支
Switched to a new branch 'dev_test'
git checkout 表示切換分支寺滚, -b 創(chuàng)建分支柑营。相當于下面兩條指令的合集。
git branch dev_test //創(chuàng)建分支
git checkout dev_test //切換分支
git branch 查看本地分支
git branch -a 查看所有分支
新版本的git建議使用 git switch命令來切換分支村视。
git switch dev //切換分支
git switch -c dev_home //創(chuàng)建并切換到dev_home分支
3 .刪除分支
a. 本地分支刪除
git branch -d dev_test //本地刪除分支官套,你當前所處的分支不能是你要刪除的分支(dev_test)。
如果無法刪除終端會給出提示
error: The branch 'dev_search' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev_test'.
這時候你就可以執(zhí)行 git branch -D dev_test 強制刪除該分支蚁孔。
b. 遠程分支刪除
git push origin --delete dev_test //將要刪除的分支push到origin即可刪除奶赔。
另一種方式就是,
git push origin :dev_test(本地已刪除的分支名稱勒虾,注意冒號后需要一個空格)纺阔。
4. 分支重命名。
git branch -m oldBranchName newBranchName
如我想將dev_test分支改名為dev_home分支修然。
git branch -m dev_test dev_home笛钝。
三质况、提交合并代碼(stash、merge)
在每次提交代碼前玻靡,都要查看倉庫狀態(tài) git status结榄。
- stash 暫存
git status
git diff //查看變化
git stash save "臨時緩存"
git stash list //查看stash列表
git stash pop //恢復最近的一個stash
git stash pop stash@{1}//恢復指定的stash
git stash drop stash@{0} //移除第一個stash
git stash clear // 清除所有stash
git log //查看版本控制系統歷史記錄
commit 5c6ff84e9bcaad06d1c6ba7856487853d89b4fe1 (HEAD -> dev_search, origin/dev_search)
Merge: 4533a78def 7d3d9df828
Author: xxx001 <xxx001@pingan.com.cn>
Date: Sun Jan 19 15:19:09 2020 +0800
解決合并沖突提交代碼
commit 7d3d9df8288d84aa5fd85a0061fefebe18c9664b (dev)
Merge: b19d5c8c2c 4aee5d5a43
Author: xxx001 <xxx001@pingan.com.cn>
Date: Sun Jan 19 14:42:38 2020 +0800
Merge branch 'dev' of ssh://code.paic.com.cn/git/carowner-ios into dev
- add ,commit
$ git add . //將所有文件添加到暫存區(qū)(stage),
$ git commit -m "首頁彈出窗bug fix"。 // 執(zhí)行git commit就可以一次性把暫存區(qū)的所有修改提交到分支囤捻。
修改commit提交的注釋
修改最后一次的提交注釋臼朗,這個最常見
git commit --amend 【第一行出現注釋界面】
i //進入編輯界面
修改某次的注釋
git rebase -i HEAD~2
四、版本回退
如果代碼已經commit過蝎土,但是想去掉本次commit的狀態(tài)视哑,但又不想去掉最新本地修改的代碼,可以執(zhí)行
git reset origin/branchName //將本地代碼狀態(tài)回滾到commit之前,本地代碼還在,但需要重新add commit
有時候想修改commit的描述說明也可用這種方法誊涯。
1 reset方式 (通過reset的方式挡毅,把head指針指向之前的某次提交,reset之后暴构,后面的版本就找不到了)
每次提交代碼都會有一個commitId:也就是提交記錄id,所有的提交都可以根據提交記錄id找到跪呈。
git reset --hard HEAD //回到當前提交的版本, 也就是上一次版本取逾。
git reset --hard HEAD^ //回到上一次提交記錄耗绿。
git reset --hard HEAD~100 //回到上一百個版本。
git reset --hard commitId //回到對應的commitId對應的版本砾隅。
強制push到對應的遠程分支(如提交到develop分支)
git push -f -u origin develop
2.revert
這種方式不會把版本往前回退误阻,而是撤銷某一次提交,某次commitId之前和之后的提交都會保留。只是撤銷某次提交琉用,并生成一個新的commit堕绩。所以,你只需要讓別人更新一下代碼就可以了邑时,你之前操作的提交記錄也會被保留下來
操作步驟如下:
1、找到你誤提交之前的版本號
2特姐、git revert -n 版本號
3晶丘、git commit -m xxxx 提交
4、git push 推送到遠程