1-配置GitHub的SSH keys
ssh-keygen -t rsa -C <郵箱> //郵箱需要是GitHub的賬號(hào)
cat ~/.ssh/id_rsa.pub //獲取公鑰
cat ~/.ssh/id_rsa.pub //獲取私鑰
基本的Git命令:
cd <文件夾> //進(jìn)入指定文件夾
cd ~ //返回根目錄
cd .. //返回上一層
ls //顯示文件夾內(nèi)容
pwd //查看路徑
mkdir <文件夾名> //創(chuàng)建文件夾
git init //把當(dāng)前目錄變成Git可以管理的倉(cāng)庫(kù),生成.git問(wèn)價(jià)
git add <文件> //將指定文件加入暫存區(qū)(stage)
git add . //加入所有的修改
git restore <文件> //丟棄工作區(qū)的修改;
git restore --staged <文件> //將暫存區(qū)文件移到工作區(qū)
git commit -m "<標(biāo)注>" //提價(jià)到本地
git clone <倉(cāng)庫(kù)地址> //克隆倉(cāng)庫(kù)到本地
git clone -b <分支名字> <倉(cāng)庫(kù)地址> //克隆單個(gè)分支
git clone --recurse-submodules <倉(cāng)庫(kù)地址> //自動(dòng)初始化并更新倉(cāng)庫(kù)中的每一個(gè)子模塊, 包括可能存在的嵌套子模塊
//如果只克隆,但忘記--recurse-submodules選項(xiàng),則執(zhí)行下面步驟:
git submodule init //初始化本地配置文件
git submodule update //從該項(xiàng)目中抓取所有數(shù)據(jù)并檢出父項(xiàng)目中列出的合適的提交
git submodule update --init //上面兩個(gè)的合并成一步
git status //查看過(guò)倉(cāng)庫(kù)當(dāng)前的狀態(tài)
git diff //查看修改的內(nèi)容
git diff <文件> //查看指定文件的修改
git log //顯示倉(cāng)庫(kù)的提交日志
git log --pretty=oneline //顯示簡(jiǎn)易的日志記錄
git reflog //查看命令歷史(關(guān)閉終端,再次進(jìn)入)
git restore <文件> //丟棄已跟蹤的修改
git clean -f <文件> //丟棄未跟蹤的文件
git clean -df <文件> //丟棄未跟蹤的文件和文件夾
git clean -d -fx //刪除 一些 沒(méi)有 git add 的 文件
//-d 刪除未被添加到git的路徑中的文件
//-f 強(qiáng)制運(yùn)行
//-x 刪除忽略文件已經(jīng)對(duì)git來(lái)說(shuō)不識(shí)別的文件
//-n 顯示將要?jiǎng)h除的文件和目錄
git reset HEAD <文件> //將已加入暫存區(qū)的文件修改移出暫存區(qū),放入工作區(qū)<舊文件的修改>
git reset --hard HEAD^ //git回退到上一個(gè)版本;HEAD^^回退上2個(gè)版本;HEAD^^^回退上3個(gè)版本
git reset --hard HEAD~8 //git回退上8個(gè)版本
git reset <commit id> //將commit回退,代碼會(huì)回到工作區(qū)
git reset --soft <commit id> //將commit回退,代碼會(huì)回到工作區(qū)
git reset --hard <commit id> //回退commit,對(duì)應(yīng)commit的代碼不在工作區(qū);
- 重置遠(yuǎn)端<commit id>
如果發(fā)現(xiàn)推到遠(yuǎn)端的commit有錯(cuò)誤,需要回退到某個(gè)版本,可以使用以下命令;
注意:該賬號(hào)需要有g(shù)it倉(cāng)庫(kù)的強(qiáng)制權(quán)限;
git reflog
git reset --hard <commit id>
git push -f
cat <文件> //查看文件內(nèi)容
git checkout //丟棄工作區(qū)所有的更改
git checkout -- <文件> //丟棄未暫存工作區(qū)的文件修改
git branch <分支名字> //創(chuàng)建分支
git checkout <分支名字> //切換到指定的分支
git checkout -b <分支名字> //創(chuàng)建分支并切換到該分支
git checkout -b <分支名字> <遠(yuǎn)程倉(cāng)庫(kù)名>/<分支名字> //一創(chuàng)建就關(guān)聯(lián)遠(yuǎn)程分支
git checkout origin/<遠(yuǎn)程分支名> -b <本地分支名> //拉取遠(yuǎn)端分支到本地
git branch //查看本地分支(會(huì)列出所有的分支出來(lái))
git branch -r (或者-a) //查看遠(yuǎn)程分支
git merge <分支名字> //合并分支到當(dāng)前分支 (先切換到父分支)
git branch -d <分支名字> //刪除本地的分支
git branch -D <分支名字> //強(qiáng)制刪除本地的分支
git log --graph --pretty=oneline --abbrev-commit // 查看分支合并圖(可以看到合并沖突時(shí)候的處理圖)
git merge --no-ff -m "<標(biāo)注信息>" <分支名字> //合并分支(--no-ff模式),同事commit了
git branch -m <原分支名> <新分支名> //重命名本地分支名字
git branch <倉(cāng)庫(kù)名字> --delete <遠(yuǎn)程分支名> // 刪除遠(yuǎn)程分支
git push --delete <倉(cāng)庫(kù)> <遠(yuǎn)程分支> //刪除遠(yuǎn)程分支
/// git 1.7.0之前的做法
git push origin :<遠(yuǎn)程分支> //推空分支,相當(dāng)于刪除分支
git pull // 拉取遠(yuǎn)程分支的內(nèi)容,同步到本地分支
git pull <遠(yuǎn)程倉(cāng)庫(kù)名> <遠(yuǎn)程分支> :<本地分支>
git pull <遠(yuǎn)程倉(cāng)庫(kù)名> <遠(yuǎn)程分支>
git config --global --list // 查看配置
git pull origin master --rebase //重新校驗(yàn)基準(zhǔn)
git rebase --continue //解決沖突后,繼續(xù)變基
- stash
git stash //儲(chǔ)藏該分支上的修改
git stash save "備注" //存儲(chǔ),同時(shí)添加備注
git stash list //查看stash里面的內(nèi)容
git stash apply stash@{1} //恢復(fù)儲(chǔ)藏的內(nèi)容,但不刪除stash里面的內(nèi)容
git stash pop stash@{1} //恢復(fù)隱藏的內(nèi)容,同時(shí)刪除stash內(nèi)容
git stash drop stash@{1} //刪除stash里面的內(nèi)容
git stash show -p //顯示第一個(gè)存儲(chǔ)的改動(dòng)
git stash show stash@{0} //顯示那些改動(dòng)
git stash clear //刪除所有緩存的stash
- 遠(yuǎn)程倉(cāng)庫(kù)remote
git remote //查看所有遠(yuǎn)程倉(cāng)庫(kù)名字
git remote -v // 查看所有遠(yuǎn)程倉(cāng)庫(kù)具體信息
git remote add <倉(cāng)庫(kù)地址> // 關(guān)聯(lián)本地項(xiàng)目和遠(yuǎn)程倉(cāng)庫(kù)
git remote add <倉(cāng)庫(kù)名字> <倉(cāng)庫(kù)地址> // 關(guān)聯(lián)本地項(xiàng)目和遠(yuǎn)程倉(cāng)庫(kù)-定義倉(cāng)庫(kù)名字
git remote rm <倉(cāng)庫(kù)名字> //刪除倉(cāng)庫(kù)關(guān)聯(lián)
git remote set-url <倉(cāng)庫(kù)名字> <倉(cāng)庫(kù)地址> //修改倉(cāng)庫(kù)地址
git push <repo> <local branch>:<remote branch> //推送本地分支到遠(yuǎn)程分支上;若倉(cāng)庫(kù)還沒(méi)有分支,則會(huì)創(chuàng)建分支,同時(shí)關(guān)聯(lián)本地
git push <倉(cāng)庫(kù)> <本地分支> //該本地分支名字在遠(yuǎn)程倉(cāng)庫(kù)存在對(duì)應(yīng)的遠(yuǎn)程分支
git branch --set-upstream <本地分支> <遠(yuǎn)程倉(cāng)庫(kù)>/<遠(yuǎn)程分支> //關(guān)聯(lián)遠(yuǎn)程分支
git checkout -b <本地分支> <倉(cāng)庫(kù)>/<遠(yuǎn)程分支> //在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支(這是先有遠(yuǎn)程分支,一創(chuàng)建本地分支就關(guān)聯(lián)了遠(yuǎn)程分支)
- 刪除遠(yuǎn)程分支
git branch -m <舊分支名> <新分支名>
git push --delete origin <舊分支名>
git push origin <新分支名> //新分支推上遠(yuǎn)程
git branch --set-upsteam-to origin/<新分支名> //關(guān)聯(lián)本地分支和遠(yuǎn)程分支
刷新sourcetree上的遠(yuǎn)端分支
git remote update origin -p
- 標(biāo)簽
git tag <tag> //打tag
git tag //查看所有的tag
git tag <標(biāo)注> <commit id> //給歷史提交的commit id 打標(biāo)簽
git show <tag> //查看標(biāo)簽信息
git tag -a <tag> -m "描述" //創(chuàng)建有描述的tag
git tag -d <tag> //刪除標(biāo)簽
git push --tags //將tag推到當(dāng)前分支
git push origin --tags //將本地全部標(biāo)簽推送到遠(yuǎn)程
git push origin -d tag <tag> //刪除遠(yuǎn)程標(biāo)簽
/// git 1.7.0之前
git push origin <tag> //將特定標(biāo)簽推送到遠(yuǎn)程
git push origin :refs/tags/<tag> //刪除遠(yuǎn)程標(biāo)簽(先刪除本地的 git push origin <標(biāo)簽>,在執(zhí)行這句)
- vi 編輯模式:
vim <文件> 進(jìn)入vi編輯模式
退出vim 編輯模式 :
1 - control + z
如果文件被修改,則vi保存在返回shell,沒(méi)有被修改,直接退出vim,返回shell;
2 - 點(diǎn)擊esc,輸入冒號(hào),進(jìn)入末行模式
:w 保存當(dāng)前編輯文件,不退出
:q 直接退出vim,不保存修改,返回shell
:wq 保存,再退出vim,返回shell
3- 撤回: u
4- 刪除: 雙擊 d
5- 搜索:
/ + <需要搜索的字符>
搜索下一個(gè):n
github網(wǎng)站上的倉(cāng)庫(kù)操作:
-> 先進(jìn)入一個(gè)遠(yuǎn)程倉(cāng)庫(kù)
-> 點(diǎn)擊Fork,在自己git中得到該遠(yuǎn)程倉(cāng)庫(kù),可對(duì)在自己git中的倉(cāng)庫(kù)進(jìn)行讀寫
-> 在自己的倉(cāng)庫(kù)下clone代碼到本地
-> 在電腦打開(kāi)修改文件
-> 可推送都自己的遠(yuǎn)程倉(cāng)庫(kù)
-> 通過(guò)pull request 給官方倉(cāng)庫(kù)貢獻(xiàn)代碼
git config --global color.ui true 讓Git顯示顏色,會(huì)讓命令輸出看起來(lái)更醒目
壓縮和解壓文件:
壓縮文件的時(shí)候,包括git庫(kù)信息和歷史都有壓縮進(jìn)去了
壓縮:
tar -cvf edx-app-ios-enterprise-new.20170718.tar.gz edx-app-ios-enterprise-new
解壓:
tar -xzvf edx-app-ios-enterprise-new.20170718.tar.gz
- git reset
//僅僅只是撤銷已提交的版本庫(kù),不會(huì)修改暫存區(qū)和工作區(qū)
git reset --soft 版本庫(kù)ID
//僅僅只是撤銷已提交的版本庫(kù)和暫存區(qū),不會(huì)修改工作區(qū)
git reset --mixed 版本庫(kù)ID
//徹底將工作區(qū)、暫存區(qū)和版本庫(kù)記錄恢復(fù)到指定的版本庫(kù)
git reset --hard 版本庫(kù)ID
問(wèn)題:
- git pull origin master時(shí)報(bào)錯(cuò):
error: The following untracked working tree files would be overwritten by merge:
xxxx.xcworkspace/xcuserdata/xxx.xcuserdatad/UserInterfaceState.xcuserstate
Please move or remove them before you merge.
Aborting
執(zhí)行git clean -d -fx刪除一些不需要的文件;
當(dāng)我們使用`git merge`操作合并代碼但還沒(méi)[add](https://so.csdn.net/so/search?q=add&spm=1001.2101.3001.7020)時(shí),若想取消這次合并,使用“`git merge --abort`”命令即可
假如不幸已經(jīng) git add 了怎么辦呢? 其實(shí)也很簡(jiǎn)單,先用 git reflog 指令顯示歷史的操作
再用 'git reset --hard commit id’就可以回退到操作之前的狀態(tài)了
大文件上傳:git-lfs
https://git-lfs.github.com