git 常用操作

回退相關(guān)操作

工作區(qū)

命令 含義
git checkout -- file.txt 丟棄 file.txt 中的修改
git reset --hard 重設暫存區(qū)所有文件并且還原工作區(qū)所有修改

暫存區(qū)

命令 含義
git reset 重設暫存區(qū)所有文件
git reset HEAD 撤銷最新一次的 add 狀態(tài)
git reset file.txt file.txt 的放入工作區(qū)
git reset --hard 重設暫存區(qū)所有文件并且還原工作區(qū)所有修改

版本區(qū)

  • HEAD => 當前版本
  • HEAD^ => 上一個版本
  • HEAD^^ => 上上一個版本
  • HEAD~100 => 上一100個版本
命令 含義
git revert HEAD 撤銷最新一次的 commit ,分支沒有改動文件才能執(zhí)行(存在該commit記錄)
git reset <commit> 刪除最新一次的 commit 并且重設暫存區(qū)所有文件 (不存在該commit版本號)
git reset HEAD~2 將當前分支倒退兩個提交(高危操作)
git reset --hard HEAD^ 回退上一個版本

刪除文件

命令 含義
rm file.txt 刪除文件
git checkout -- file.txt 撤銷刪除 (未commit之前)
git clean -n 查看那些未被跟蹤文件會被移除
git clean -f 移除當前目錄下未被跟蹤的文件
git clean -df 移除未跟蹤的文件以及目錄
git clean -f <path> 移除未跟蹤的文件,但限制在某個路徑下
git clean -xf 移除當前目錄下未跟蹤的文件,以及 Git 一般忽略的文件

創(chuàng)建與合并分支

命令 含義
git checkout -b dev 創(chuàng)建并且切換到dev分支
git checkout -b hotfix dev 基于dev分支創(chuàng)建一個hotfix分支
git checkout dev 切換到dev分支
git branch 查看所有的分支
git branch -d dev 刪除dev分支(當前分支無法自行刪除)
git branch -D dev 強制刪除分支(用于未合并分支)
git merge dev 將dev分支合并到當前分支

遠程倉庫的操作

命令 含義
git remote -v 查看遠程倉庫的詳細信息
git remote add remote-name URL 添加遠程倉庫
git push origin master 將內(nèi)容提交到遠程倉庫 origin 的 master 分支上
git remote rm origin 將遠程倉庫 origin 刪除
git remote rename origin pb 將遠程倉庫 origin 改為 pb
git clone URL 克隆一個遠程倉庫扭倾,這里的URL是遠程倉庫的地址
git pull origin 將遠程倉庫中更新的數(shù)據(jù)拉到本地
git pull origin dev 拉取遠程倉庫dev分支到本地
git push origin aaa 將 aaa 分支推送到遠程倉庫
git pull --rebase URL git rebase 代替 git merge 合并本地分支
git push --force 強制推送

git commit

命令 含義
git commit --amend 和上一次 commit 合并,并在該基礎上編輯commit信息
git commit --amend --no-edit 和上一次 commit 合并, 不編輯信息
git commit -a -m "some modified" git add -A && git commit -m 'some modified'

git rebase

<base> 是可以使任何類型的提交引用(ID/分支名/標簽/HEAD)

參考文檔1

參考文檔2

  • 什么是 git rebase(變基==改變基線)
    • 變基是將分支移到一個新的基提交的過程, 產(chǎn)生的是一個快速向前的合并以及完美的線性歷史
    • rebase 就好像是說「我想將我的更改建立在其他人的進展之上」
    • 絕不要在公共的分支上使用它
  • git rebase <base> => git merge <base> 相似
  • git rebase --continue => 解決沖突后可執(zhí)行的命令
  • git rebase --abort => 終止rebase的行動,并且所在分支會回到rebase開始前的狀態(tài)钝腺。
  • git rebase -i <base> => 交互式
    • fixup
    • startq
    • squash

git reflog

Git 用引用日志這種機制來記錄分支頂端的更新

  • git reflog => 顯示本地倉庫的引用日志
  • git reflog --relative-date => 用相對的日期顯示引用日志
  • git reset --hard 0254ea7 配合使用

注: 引用日志提供的安全網(wǎng)只對提交到本地倉庫的更改有效龄捡,而且只有移動操作會被記錄

其他操作

  • git log --oneline => 簡潔的顯示 log 記錄

報錯處理

  • fatal: Unable to create 'project_path/.git/index.lock': File exists.
    • 刪除該分支 => rm -f .git/index.lock
  • error: failed to push some refs to <URL>
    • 第一種解決方式:
      • 強推啦辐,即利用強覆蓋方式用你本地的代碼替代git倉庫內(nèi)的內(nèi)容 => git push -f
    • 第二種解決方式:
      • 這條命令等于合并遠程分支谓传,合并完成之后同目錄會出現(xiàn)README.md目錄 => git pull --rebase origin master
  • fatal: remote origin already exists
    • 先刪除遠程 Git 倉庫 => git remote rm origin
    • 再添加遠程 Git 倉庫 => git remote add origin <URL>
      • 如果執(zhí)行 git remote rm origin 還報錯的話
      • 我們可以手動修改 gitconfig 文件的內(nèi)容 => vi .git/config
      • 把 [remote “origin”] 那一行刪掉就好了。
  • error: src refspec master does not match any
    • 引起該錯誤的原因是芹关,目錄中沒有文件续挟,空目錄是不能提交上去的
    • touch README => git add README => git commit -m 'first commit' => git push origin maste
  • git reset --hard 命令導致目錄下所有文件全部被清除。
    • 首先用 git reflog 命令查找到對應的sha值,如:cd7b575
    • 通過“git reset --hard cd7b575”
      • 注意:第二步操作有時會報錯, 如: fatal: Unable to create 'D:/chenjunjun/.git/index.lock': File exists.
      • 需要手動刪除.git目錄下的index.lock文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侥衬,一起剝皮案震驚了整個濱河市诗祸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浇冰,老刑警劉巖贬媒,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肘习,居然都是意外死亡际乘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門漂佩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脖含,“玉大人,你說我怎么就攤上這事投蝉⊙” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵瘩缆,是天一觀的道長关拒。 經(jīng)常有香客問我,道長庸娱,這世上最難降的妖魔是什么着绊? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮熟尉,結(jié)果婚禮上归露,老公的妹妹穿的比我還像新娘。我一直安慰自己斤儿,他們只是感情好剧包,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布恐锦。 她就那樣靜靜地躺著,像睡著了一般疆液。 火紅的嫁衣襯著肌膚如雪一铅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天枚粘,我揣著相機與錄音馅闽,去河邊找鬼飘蚯。 笑死馍迄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的局骤。 我是一名探鬼主播攀圈,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峦甩!你這毒婦竟也來了赘来?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤凯傲,失蹤者是張志新(化名)和其女友劉穎犬辰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冰单,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡幌缝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诫欠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涵卵。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荒叼,靈堂內(nèi)的尸體忽然破棺而出轿偎,到底是詐尸還是另有隱情,我是刑警寧澤被廓,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布坏晦,位于F島的核電站,受9級特大地震影響嫁乘,放射性物質(zhì)發(fā)生泄漏昆婿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一亦渗、第九天 我趴在偏房一處隱蔽的房頂上張望挖诸。 院中可真熱鬧,春花似錦法精、人聲如沸多律。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狼荞。三九已至辽装,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間相味,已是汗流浹背拾积。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丰涉,地道東北人拓巧。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像一死,于是被迫代替她去往敵國和親肛度。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 獲取與創(chuàng)建項目 創(chuàng)建倉庫的途徑有:在本地已有的目錄投慈,初始化一個新的承耿;克隆復制一份別人的項目。 git init 在...
    daking閱讀 6,585評論 3 48
  • 常用命令: 查看伪煤、添加加袋、提交、刪除抱既、找回职烧,重置修改文件 git help # 顯示command的help gi...
    even_cheng閱讀 286評論 0 3
  • 這段時間的忙碌阳堕,再一次印證了我的承壓能力——在單位還能撐著死磕,出了大門就想淚奔择克。 好巧不巧地看到咪蒙的推文《職場...
    楊木子js閱讀 390評論 0 4
  • 進入第二周恬总,大家是不是開始解讀報告了呢? 還記得任博老師教我們的第一句嗎肚邢?——這份報告很好壹堰! 然后如何入手?和大家...
    陽菌閱讀 474評論 0 1
  • 今天是艷陽天骡湖,就想起家了贱纠。家中巴掌大藍天是讓我感到最舒服的。 高三時响蕴,不管每次在學校壓力多大谆焊,內(nèi)...
    亮亮呀閱讀 199評論 0 0