git 日常操作記錄

git 作為一款流行的協(xié)作工具烤咧,可以提高發(fā)開效率铸题,對于我們開發(fā)人員來說,掌握git的使用已經(jīng)成為一項必備的技能翰萨。下面是我平時使用git的一些總結(jié)微服。
首先,線上一張簡單概括的技能圖:


git 技能圖

能掌握上面這張圖的技能缨历,你就已經(jīng)成為git大神級人物了。我只是把日常用到的操作記錄下來糙麦,給大家分享一下辛孵。

1. 使用git查看某個文件的歷史修改記錄。

使用 git log --follow -p filename 就可以看到這個文件所有的歷史修改記錄赡磅。這樣在我們pull代碼下來之后想查看某個文件魄缚,或者修改了某個文件但是想找到以前版本的代碼非常有用。

2. 使用git工具執(zhí)行 git pull 命令是出現(xiàn) ssh: connect to host github.com port 22: Bad file number

平常有在公司寫demo的習慣焚廊,有些寫不完的demo冶匹,周末回家還可以寫寫。于是在github上面建了個倉庫咆瘟,在家里與公司的電腦都pull了一份嚼隘,在公司寫不完的demo,回家也可以繼續(xù)寫袒餐。
但是今天在公司想要把平時寫的demo push到github上面飞蛹,回家再看看來著谤狡,發(fā)現(xiàn)竟然報錯了,而且還不是平常的錯誤卧檐,錯誤如下圖:

clipboard.png

經(jīng)谷歌一查墓懂,是因為公司把ssh的端口22給禁掉了,但是ssh的端口是可以改的霉囚,于是找了一些方法捕仔,果然奏效,方法如下:

1)使用管理員權(quán)限打開命令窗口盈罐,輸入 cd ~/.ssh 就進入到了 c:\Users\zhangsan.ssh文件夾下榜跌。在該文件夾下新建config文件,輸入

host github.com
hostname ssh.github.com
port 443

然后保存退出暖呕。

2)在git里面執(zhí)行 ssh -T git@github.com
3)執(zhí)行命令之后斜做,出現(xiàn) Are you sure you want to continue connecting(yes/no)? 輸入yes按回車,出現(xiàn)成功提示即可湾揽。

2. 使用git工具執(zhí)行g(shù)it pull 的時候出現(xiàn)error: unable to create file /web/module/index/login.js (Permission denied)

當pull代碼的時候瓤逼,由于遠程分支上有新的文件,pull下來之后應該需要在本地硬盤新建一個文件库物,由于git沒有權(quán)限操作硬盤創(chuàng)建文件霸旗,才會出現(xiàn)這個錯誤
所以可以使用管理員權(quán)限打開git,然后再pull一遍就可以了戚揭。

3. git的后悔藥操作

1)本地修改的代碼搞亂了诱告,不想要了,想恢復到?jīng)]改動之前
git checkout -- filePath
2)本地修改的代碼使用git add . 添加到暫存區(qū)民晒,又不想要了
git reset --soft
git checkout -- filePath
3)本地修改代碼之后精居,并且commit了,也不想要了潜必,就是本地修改的代碼給commit的代碼都沒了
git reset --hard
4)當git pull 的時候靴姿,我靠一大堆沖突,老子不知道怎么解決磁滚,等別人merge好了再說
git reset --hard
5)老子正在改代碼佛吓,有個同事過來臨時叫我改點東西,那就先把剛改的緩存起來吧
git stash
改完那個問題之后垂攘,繼續(xù)找出剛才的代碼
git stash pop

  1. 丟棄所有新建的文件
    git clean -df #返回到某個節(jié)點
4. 重新安裝git之后维雇、創(chuàng)建rsa 密鑰出現(xiàn) hzliaobolin%USEROROFILE%.ssh/ 不存在,rsa文件不能保存

USEROROFILE 原本是不存在的晒他,是使用git config --global user.name 之后才會出現(xiàn)的吱型,而且這個文件夾應該保存在C:\user\hzliaobolin\下,其實這個文件夾必須在git安裝完成之后立即配置git config --global 才會生成
而安裝完git之后陨仅,打開git唁影、默認進入的路徑是C:\user\hzliaobolin\耕陷,在此文件夾下配置用戶信息就可。需要正確按照不走安裝git
1) 安裝git完成据沈、打開git哟沫。顯示的路勁應該是C:\user\hzliaobolin、然后配置個人信息
git config --global user.name "lbl"
git config --global user.email "hzliaobolin@corp.netease.com"
配置完成之后锌介、會在C:\user\hzliaobolin下生成一個%USEROROFILE%文件夾嗜诀。
2) 生成git 的ssh key
進入到C:\user\hzliaobolin\目錄下、看看是否有.ssh文件夾存在.
如果存在:
清空.ssh文件夾孔祸、在C:\user\hzliaobolin文件夾下打開git
然后 cd .ssh
ssh-keygen -t rsa -C "hzliaobolin@corp.netease.com" 按三個回車隆敢,密碼為空

3)在github上添加ssh密鑰,把id_rsa.pub復制粘貼即可

5. 使用git pull 代碼或者是git checkout 切換分支時出現(xiàn) Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

出現(xiàn)這個問題的主要原因是由于有其他應用也運行著本地工程里的一些文件崔慧,導致更新文件或者切換分支的時候其他應用匯阻止git moving該文件拂蝎。導致操作失敗,
解決方法是找到打開這個文件的應用并將其關(guān)閉惶室,實在找不到温自,那么把其他應用全關(guān)了就ok。

使用git diff 查看文件修改了哪些部分

還沒有g(shù)it add . 時:
git diff 查看全部文件的修改
git diff filename 查看具體某一個文件的修改
git add . 之后:
git diff --cached 查看全部文件的修改
git diff --cached filename 查看具體某一個文件的修改

6. 使用git stash 緩存修改 或把修改遷移到其他的分支

當我們當dev分支開發(fā)時皇钞,突然需要到master分支去改個bug悼泌,懶得提交了,那么我們可以使用git stash 把修改的內(nèi)容緩存起來夹界。然后切到master改完bug之后再切回dev分支馆里,再執(zhí)行g(shù)it stash pop,我們的修改又回來到工作區(qū)了

當我們在master分支修改代碼時可柿,發(fā)現(xiàn)我操鸠踪,分支錯了,但是那么多的代碼不舍得刪啊复斥。那么我們可以使用git stash 先把代碼緩存营密,然后切到dev分支,再使用git stash pop 把代碼還原回來了永票。
git stash list 查看所有的緩存列表
git stash pop [--index] 還原最新/指定的緩存,同時把緩存記錄從緩存列表里面刪掉
git stash apply [--index] 還原最新/指定的緩存滥沫, 不刪掉緩存記錄
git stash drop [--index] 刪除最新的緩存/指定的緩存
git stash clear 刪除所有分支的緩存

7. 使用git重命名本地/遠程分支

先切換到需要重命名的分支侣集,然后執(zhí)行以下的命令

git branch -m old_branch new_branch # 重命名本地分支,此時老的分支已不存在
git push origin :old_branch # 刪掉遠程的老的分支
git push --set-upstream origin new_branch # 推送新的本地分支到遠程兰绣,并設置本地分支跟蹤新的遠程分支
8. 使用git bash生成密鑰/公鑰世分,并拷貝私鑰要github中

今天重裝了下git,push代碼的時候提示沒有權(quán)限

lbl@lbl-PC MINGW64 /g/workspace/wuyanxia (master)
$ git pull
The authenticity of host 'github.com (xxx.xx.252.123)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,xxx.xx.252.123' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

發(fā)現(xiàn)是忘記生成秘鑰了缀辩,導致跟以前保存在github中的ssh key不對應臭埋,所以不能push代碼踪央,于是又去找命令生成了一遍,忘得太快瓢阴,還是記錄一下好:

  1. 隨便一個目錄打開git bash
  2. 運行命令 cd ~/.ssh
  3. ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  4. 連續(xù)三個回車畅蹂,然后到c盤下的.ssh文件下就可以看到秘藥跟公鑰的文件了
  5. 打開id_rsa文件,復制全部的內(nèi)容荣恐,然后打開github
2016-06-19_224853.png

這樣就ok了液斜。

9、在windows 7下面git bash 反應異常緩慢

重新裝了git最新版本之后叠穆,發(fā)現(xiàn)在git bash中輸入命令之后少漆,一兩秒鐘才有反應,異常的卡硼被,google了下示损,找到了解決方法,只要出入一下三條命令就可以了

$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256
10、git add 出現(xiàn)/./.git/index.lock': File exists..操作異常

當執(zhí)行g(shù)it add 或者git checkout時都提示. /.git/index.lock': File exists.錯誤嚷硫,導致git使用不了
只需要去.git目錄下把index.lock文件刪掉就好了

$ git add .
fatal: Unable to create 'E:/javaWorkspace/study-platform/.git/index.lock': File exists.

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.

git 刪除刪除分支命令
刪除遠程分支: git push origin --delete branch-name
刪除本地分支: git branch -d branch-name
git 同步遠程于本地的分支

使用git branch 查看本地分支與用git branch -r查看本地存的遠程分支检访,發(fā)現(xiàn)有些分支在代碼倉庫中已經(jīng)被刪掉,需要同步论巍。

git remote prune origin // 刪除掉沒有與遠程分支對應的本地分支

11烛谊、設置git pull 的默認行為為rebase

git pull操作會先把代碼拉下來,然后進行merge,會把一些commit合并掉嘉汰,然后只有一條merge紀錄丹禀,不方便review,所以最好改成rebase方式鞋怀,保留commit

In git >= 1.7.9:
    git config --global pull.rebase true
In git < 1.7.9:
    git config --global branch.autosetuprebase always

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末双泪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子密似,更是在濱河造成了極大的恐慌焙矛,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件残腌,死亡現(xiàn)場離奇詭異村斟,居然都是意外死亡,警方通過查閱死者的電腦和手機抛猫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門蟆盹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闺金,你說我怎么就攤上這事逾滥。” “怎么了败匹?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵寨昙,是天一觀的道長讥巡。 經(jīng)常有香客問我,道長舔哪,這世上最難降的妖魔是什么欢顷? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮尸红,結(jié)果婚禮上吱涉,老公的妹妹穿的比我還像新娘。我一直安慰自己外里,他們只是感情好怎爵,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盅蝗,像睡著了一般鳖链。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墩莫,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天芙委,我揣著相機與錄音,去河邊找鬼狂秦。 笑死灌侣,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的裂问。 我是一名探鬼主播侧啼,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼堪簿!你這毒婦竟也來了痊乾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤椭更,失蹤者是張志新(化名)和其女友劉穎哪审,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虑瀑,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡湿滓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了舌狗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叽奥。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖把夸,靈堂內(nèi)的尸體忽然破棺而出而线,到底是詐尸還是另有隱情铭污,我是刑警寧澤恋日,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布膀篮,位于F島的核電站,受9級特大地震影響岂膳,放射性物質(zhì)發(fā)生泄漏誓竿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一谈截、第九天 我趴在偏房一處隱蔽的房頂上張望筷屡。 院中可真熱鬧,春花似錦簸喂、人聲如沸毙死。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扼倘。三九已至,卻和暖如春除呵,著一層夾襖步出監(jiān)牢的瞬間再菊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工颜曾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纠拔,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓泛豪,卻偏偏與公主長得像稠诲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子候址,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

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