【Git】指令

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

最后編輯于
?著作權(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 命令https://www.runoob.com/git/git-basic-operations.htm...
    何年何月閱讀 449評(píng)論 1 0
  • 簡(jiǎn)介 Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒(méi)有之一)(用C寫的)。 Git和其他版本控制系統(tǒng)如SVN的一...
    w_tiger閱讀 714評(píng)論 0 1
  • git的使用原則是可復(fù)用,不重復(fù),需放進(jìn)git遠(yuǎn)程倉(cāng)庫(kù)的文件:源代碼、第三方文件。 不需放進(jìn)git遠(yuǎn)程倉(cāng)庫(kù)的文件:...
    Singal11閱讀 1,634評(píng)論 0 0
  • 小時(shí)候和祖母祖父同住,祖母言語(yǔ)不多,可祖父是個(gè)樂(lè)天派,承歡在他的膝下,仰頭看著祖父的抬頭紋,聽(tīng)著他哼著小曲童謠,慢...
    艾冰臺(tái)閱讀 538評(píng)論 1 14
  • 我以為你已走遠(yuǎn) 卻不知你一直都在 他們贊你、念你、一遍遍在記憶里刻畫你 你是方向是明燈 我漫不經(jīng)心的將一切準(zhǔn)備 卻...
    汲苦閱讀 375評(píng)論 0 4

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