git-相關(guān)知識(shí)

git操作

1、git初始化倉(cāng)庫

git init 初始化本地倉(cāng)庫

2、提交

==流程:工作區(qū)—(add)—>暫存區(qū)—(commit)—>本地倉(cāng)庫—(push)—>遠(yuǎn)程倉(cāng)庫==

git add .  或者  git add test.html  //提交到暫存區(qū)
git commit -m '注釋文字'             //把暫存區(qū)的改動(dòng)提交到本地倉(cāng)庫
git push                            //把本地倉(cāng)庫推到遠(yuǎn)程倉(cāng)庫   

git add .                   //add所有文件
git rm --cached abc.txt     //add所有文件之后,不想add abc.txt文件
git commit --amend -m "這才是正確提交" // push之前發(fā)現(xiàn)commit信息錯(cuò)誤,更改commit信息

git add -u  //將文件的修改、文件的刪除,添加到暫存區(qū)。
git add .   //將文件的修改,文件的新建,添加到暫存區(qū)。
git add -A  //將文件的修改,文件的刪除,文件的新建,添加到暫存區(qū)。

3、撤銷

撤銷然后修改提交
    git reset head^
    git add .
    git commit -m '再次修改提交'
    git push origin feature/add-ptjy-home-swiper --force  //會(huì)覆蓋提交上次的,謹(jǐn)慎操作,有可能會(huì)覆蓋掉別人代碼

git clean -fd                   //一次性刪除新增的文件 'Untracked files' 

刪除的文件恢復(fù)
1. git status
2. git reset HEAD aaa.txt
3. git checkout aaa.txt
1、未add,未commit 
    git checkout -- xxx.txt  //還原對(duì)工作區(qū)的修改,恢復(fù)原狀
2、已a(bǔ)dd,未commit
    撤銷單獨(dú)的文件  git reset HEAD xxx.txt  或者  git reset XXXX.txt
    撤銷所有文件    git reset HEAD 
3、已a(bǔ)dd,已commit
    git reset --hard HEAD^           //回退到上一個(gè)版本,但是改動(dòng)會(huì)被清掉
    git reset head^                 //回退上一個(gè)版本,回到commit之前,但是改動(dòng)還是會(huì)保留
4、commit之后push之前要修改commit信息
    git commit --amend -m "修改的注釋信息"
5、已a(bǔ)dd,已commit,已push
    git reset head^
    git add .
    git commit -m '覆蓋提交'
    git push origin abc --force  (如果不是自己的分支,這樣有可能會(huì)沖掉別人的代碼)

4、分支

git checkout abc         //切換到abc分支
git checkout -b abc      //新建abc分支并切換
git push --set-upstream origin abc //本地新建分支abc提交到遠(yuǎn)程倉(cāng)庫并與之進(jìn)行關(guān)聯(lián)
git branch               //查看本地分支
git branch -a            //查看所有分支
git branch -r            //查看遠(yuǎn)程倉(cāng)庫的分支
git branch -vv           //查看本地分支與遠(yuǎn)程分支的映射關(guān)系
git branch -u origin/abc abc 或者 git branch --set-upstream-to origin/abc abc  //建立當(dāng)前分支與遠(yuǎn)程分支的映射關(guān)系
git branch --unset-upstream //撤銷本地分支與遠(yuǎn)程分支的映射關(guān)系
git remote show origin   //查看遠(yuǎn)程倉(cāng)庫與本地的關(guān)聯(lián)
gir remote prune origin  //把遠(yuǎn)程倉(cāng)庫已刪除的分支,在本地刪除
git branch -D abc        //刪除本地abc分支
git branch -m oldName newName //修改本地分支名字

5、暫存

暫存
git stash       //暫時(shí)把修改的內(nèi)容暫存起來,會(huì)還原回初始的樣子
git stash save <message> //暫存起來并起名
git stash pop   //取出最近一次暫存并刪除記錄列表中對(duì)應(yīng)記錄


git stash show :顯示做了哪些改動(dòng),默認(rèn)show第一個(gè)存儲(chǔ),如果要顯示其他存貯,后面加stash@{$num},比如第二個(gè) git stash show stash@{1}
git stash show -p : 顯示第一個(gè)存儲(chǔ)的改動(dòng),如果想顯示其他存存儲(chǔ),命令:git stash show  stash@{$num}  -p ,比如第二個(gè):git stash show  stash@{1}  -p

git stash list //查看暫存區(qū)的所有暫存修改
git stash apply stash@{X} //取出相應(yīng)的暫存
git stash drop stash@{X} //將記錄列表中取出的對(duì)應(yīng)暫存記錄刪除

6、分支合并

git merge abc  //把a(bǔ)bc分支合并到當(dāng)前分支
git rebase orgin/abc //合并分支abc到當(dāng)前分支

7、版本

git reflog         //查看版本號(hào)
git reflog -2      //查看最近2次的版本信息
git reset HEAD^    //回退所有內(nèi)容到上一個(gè)版本(本地修改代碼不變)
git reset HEAD^ a  //回退a 這個(gè)文件的版本到上一個(gè)版本(本地修改代碼不變)
git reset id       //id:版本號(hào)  回退到某個(gè)版本(本地修改代碼不變)
git reset --hard  HEAD^  //回退所有內(nèi)容到上一個(gè)版本(本地修改丟失)
git reset --hard  12345  //將本地的狀態(tài)回退到12345版本(本地修改丟失)
git reset –hard origin/master  //將本地的狀態(tài)回退到和遠(yuǎn)程的一樣

8、tag標(biāo)簽

git tag v1.0                        //創(chuàng)建tag
git tag -a V1.2 -m 'release 1.2'    //創(chuàng)建了本地一個(gè)版本 V1.2 ,并且添加了附注信息 'release 1.2'
git tag v0.9 123456                //對(duì)某次commit(123456)添加tag
git tag                             //查看tag
git show V1.2                       //顯示附注信息
git push origin <tagname>           //推送某個(gè)本地標(biāo)簽到遠(yuǎn)程
git push origin --tags              //一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
git tag -d V1.2                     //刪除本地 V1.2的版本
git push origin :refs/tags/V1.2     //推送的空的同名版本,刪除遠(yuǎn)程tagV1.2

9、場(chǎng)景

1、情景:如果正在A分支做,這時(shí)候要切到B分支改bug,改完回來再繼續(xù)做A
   解決:
        git status 
        git stash 
        git checkout B 
        改bug 
        git checkout A 
        git stash pop

2、情景:A分支有修改,想把A分支的修改遷移到新建B分支
   解決:
        (A分支上)
        git add .
        git commit -m 'stash'
        git checkout -b B
        git reset head^

3、rebase同步分支
情景:master分支上新建一個(gè)test分支做開發(fā),開發(fā)完成之后,準(zhǔn)備合并到master,發(fā)現(xiàn)master分支已有新的2次提交,
      這時(shí)候需要把那2次新提交合并到test分支上,但是此時(shí)test分支已經(jīng) add commit 但并沒有push;
解決:(test分支上)
        git pull
        git rebase origin/master
        處理沖突
        git add .
        git rebase --continue
        (如果這時(shí)候因?yàn)閠est分支多次commit,仍有錯(cuò)誤沖突)
        處理沖突
        git add .
        git rebase --continue
        (直到?jīng)]有錯(cuò)誤沖突)
        git push
情景2:如果test分支沒有add commit
解決:(test分支上)
        在rebase之前需要先stash一下
        然后再進(jìn)行rebase操作
        處理完沖突,合并,
        stash pop,
        add commit push.

4、merge分支同步
B分支: git pull ----> git merge origin/A ----> 解決沖突 ----> git add commit push

5、本地新建分支,并提交到遠(yuǎn)程倉(cāng)庫,然后記得關(guān)聯(lián)本地倉(cāng)庫
git checkout -b abc ----> git add commit ----> git push --set-upstream origin abc

6、撤銷 git reset head^
        查看git reflog
        找到相應(yīng)的commit id
        git reset --hard 123321

7、git誤刪除恢復(fù)
        git reflog查看操作記錄
        找到刪除的hashID
        git reset --hard hashID
        
8、刪除中間的某次commit
        git log -2
        git rebase -i head^^
        更改 pick --> drop
        git push -f
        
9、git倉(cāng)庫遷移,本地要做的配置
        git remote rm origin
        git remote add  origin  git@new-addr.git

10、初始化提交

新建遠(yuǎn)程倉(cāng)庫,并clone到本地
    git clone git@mdev.csc.com.cn:xiangdong.bu/aaaaaa.git
    cd aaaaaa
    touch README.md
    git add README.md
    git commit -m "add README"
    git push -u origin master
已存在的文件夾提交到git遠(yuǎn)程倉(cāng)庫
    cd existing_folder
    git init
    git remote add origin git@mdev.csc.com.cn:xiangdong.bu/aaaaaa.git
    git add .
    git commit
    git push -u origin master
最后編輯于
?著作權(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ù)。

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