Git操作

1、寫在前面

工作目錄:都還沒add的文件
暫存區(qū):把文件add了,就是暫存區(qū)
git init后新建.gitignore文件    //作用:在里面寫入文件路徑,該文件就被忽略,不會被上傳到github中,git status也不會顯示

2、刪除文件

刪除文件
git rm [file]  //刪除文件并存入暫存區(qū)
git rm --cached [file]   //從遠程庫中移除文件,文件會保留在工作目錄中
git rm -r --cached [file]   //從遠程庫中移除文件夾,文件夾會保留在工作目錄中
//然后在.gitignore中查看,沒有路徑的話添加下,然后git add .了該文件也不會上傳到github了
//放棄本地修改
git checkout .

3、分支操作

//分支  (作用:在分支上檢測代碼無誤了再合并到master)
git branch    //列出本地分支,加上-r列出遠程分支,-a列出本地和遠程分支
git branch [name]     //新建分支,停留在當(dāng)前分支
git branch -d [name]     //刪除分支
git checkout -b [name]     //新建分支并切換到此分支,去掉-b表示切換到此分支
git push   //遠程已有demo分支并且已經(jīng)關(guān)聯(lián)本地分支demo且本地已經(jīng)切換到demo
git push -u origin/demo1 //遠程已有demo1分支但未關(guān)聯(lián)本地分支demo1且本地已經(jīng)切換到demo1
git push origin demo1:demo1  //推送本地的demo1(冒號前面的)分支到遠程origin的demo1(冒號后面的)分支(沒有會自動創(chuàng)建)
git merge [branch]       //合并分支到當(dāng)前分支(都是針對本地的分支)
//在一個分支上修改了文件,但是想要推送到另一個分支上
git stash   //儲藏未提交已暫存的修改
git stash list    //列出儲藏的列表
git stash pop   //恢復(fù)上一次的儲藏
git stash apply stash@{2}    //應(yīng)用儲藏

4、解決沖突

//查看差異
git diff <file>   //比較工作目錄和暫存區(qū)的差異
git diff --cached <filename>   表示查看已經(jīng) add 進暫存區(qū)但是尚未 commit 的內(nèi)容同最新一次 commit 時的內(nèi)容的差異。
//解決沖突
1. git pull
2. 打開文件,會顯示文件沖突的地方
3. 選擇保留哪一個,在保存,推送到遠程庫上
//本地已pull所有遠程庫,但是比如改掉一個文件名引起與遠程沖突
git push -f   //強制更新遠程庫
//本地回滾
操作的是你的本地代碼倉庫,可能你add,commit以后發(fā)現(xiàn)代碼問題,準備取消提交,取消的是未提交的add,commit
git reset [--soft | --mixed | --hard
其中HEAD代表版本庫,index代表暫存區(qū)

git reset(等價于git reset --mixed):
場景:不想提交本次修改和本次添加的文件
回退版本庫,暫存區(qū),會保留工作區(qū)代碼。只是將git commit和index 信息回退到了某個版本.

git reset --soft:
場景:不想提交本次修改,但是添加的文件還是要提交的
回退版本庫,保留暫存區(qū)和工作區(qū)源碼。只回退到commit 信息到某個版本.不涉及index的回退,如果還需要提交,直接commit即可.

git reset --hard:
場景:多用于遠程回滾
回退版本庫,暫存區(qū)和工作區(qū)。源碼也會回退到某個版本,commit和index 都回回退到某個版本

//遠程回滾
對于已經(jīng)把代碼push到線上倉庫,你回退本地代碼其實也想同時回退線上代碼,回滾到某個指定的版本,線上,線下代碼保持一致.2種方式
1、git reset --hard:
git reset --hard 回退到某個版本
git push -f 強推到遠程,因為git push已經(jīng)不能推了

2、git revert:
git revert到某個版本
git push 到遠程,2種不同的是git revert 會產(chǎn)生新的commit,你還可以回退

git log  //查看提交的歷史版本號,再執(zhí)行g(shù)it revert
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61

5、遇到問題

1、用git pull來更新代碼的時候,遇到了下面的問題:
error: Your local changes to the following files would be overwritten by merge:  
    xxx/xxx/xxx.php  
Please, commit your changes or stash them before you can merge.  

解決方案:
1、暫存后拉遠程

$ git stash  //備份當(dāng)前的工作區(qū)的內(nèi)容,從最近的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致。
$ git pull  //拉一下遠程

2、恢復(fù)修改內(nèi)容

$ git stash pop  //讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容。pop會從最近的一個stash中讀取內(nèi)容并恢復(fù)。

// 出現(xiàn)提示
Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c
意思就是系統(tǒng)自動合并修改的內(nèi)容,但是其中有沖突,需要解決其中的沖突。

3、解決文件中沖突的的部分

打開沖突的文件,會看到類似如下的內(nèi)容:
其中Updated upstream 和=====之間的內(nèi)容就是pull下來的內(nèi)容,====和stashed changes之間的內(nèi)容就是本地修改的內(nèi)容。
碰到這種情況,git也不知道哪行內(nèi)容是需要的,所以要自行確定需要的內(nèi)容。
2、分支的問題:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.

原因:

是因為本地分支和遠程分支沒有建立聯(lián)系

解決方案:

git branch --set-upstream-to=origin/遠程分支的名字 本地分支的名字 
如:git branch --set-upstream-to=origin/demo1 demo1

文獻:
git工作流指南

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

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

  • Git常用語法 [TOC] Git簡介 描述 ? Git(讀音為/g?t/。)是一個開源的分布式版本控制系統(tǒng),...
    君惜丶閱讀 3,933評論 0 13
  • 2018年9月10號入司,歷經(jīng)4個月的歷練,從一開始不知道什么是Git到后來能在工作中應(yīng)用,公司的分享會給了我很大...
    菜根_閱讀 695評論 0 2
  • git 指南 git操作 本地操作 git add <file>暫存工作區(qū)的修改到暫存區(qū) git commit將暫...
    IrisZL閱讀 662評論 0 0
  • 如何快速掌握git操作 本人以前也看過git教程的pdf,但是說的都不太讓人理解,讓人難以掌握。但是在現(xiàn)實開發(fā)中,...
    安卓小生閱讀 614評論 0 5
  • RACSignal類基本使用 基本的執(zhí)行流程:1.創(chuàng)建信號(實際返回的是保存了didSubscribe的RACDy...
    curious_cat閱讀 413評論 0 0

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