Git使用一些常見問題記錄(持續(xù)更新ing)

1,如何在mac中生存isa_key

1.下載安裝git
Mac上是自帶git的磁餐,所以不需要自己下載和安裝
2.生成SSH KEY
ssh-keygen -t rsa -C 44600937@qq.com 3.查看.pub文件 cd ~/.ssh 切換目錄到這個路徑
$ vim id_rsa.pub 將這個文件的內(nèi)容顯示到終端上
4.將KEY添加到github或gitlab等

2,如何關(guān)聯(lián)兩個isa_key到不同的遠程倉庫

https://www.cnblogs.com/qingguo/p/5686247.html

3,刪除遠程分支

https://blog.zengrong.net/post/1746.html

4,如何通過rebase去合并提交記錄

http://blog.csdn.net/yangcs2009/article/details/47166361

5,Android studio中如何使用git

https://www.cnblogs.com/ghylzwsb/archive/2017/03/12/GitOnAS.html

6,如何關(guān)聯(lián)本地分支和遠程分支

git push -u origin xxx
git pull -u origin xxx (注意-u參數(shù))

7,如何查看本地分支和遠程分支之間的關(guān)系

git branch -vv

8,Git fetch和git pull的區(qū)別

http://www.reibang.com/p/d265f7763a3a

9,git push -u origin xxx 中origin指什么

origin只是一個遠程倉庫的標簽旁理,用來代表遠程倉庫狱窘,它關(guān)聯(lián)了一個url地址.

10,git中fast forward是什么意思

fast forward是一種merge時候快進模式,每次進行分支merge的時候毫胜,在不指定--no-ff的情況下永脓,git會視情況而定啟用fast forward模式神妹,那具體哪種情況下會啟用fast forward模式呢?

image.png

如圖磕仅,在當前分支為master分支的情況下珊豹,git merge dev會啟動fast forward模式
image.png

這種模式僅僅是將master指針指向dev,所以會很快。
那什么情況下不會啟動fast forward模式呢榕订?
image.png

上面這種情況在master分支也有提交的情況合并feature1分支到master就不會啟動fast forward模式.
最后平夜,我們?nèi)绾卧诘谝环N情況下禁用fast forward模式,只需要加上--no-ff參數(shù)
git merge --no-ff -m "merge with no-ff" dev
在這種情況下會生成一個commit(提交message是 merge with no-ff )卸亮,這就相當于下圖:
image.png

如果覺得不夠詳細可以看下面兩篇文章:
創(chuàng)建與合并分支-廖雪峰
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000
分支管理策略-廖雪峰
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758410364457b9e3d821f4244beb0fd69c61a185ae0000

11,如何把本地倉庫提交到遠程倉庫

當git init初始化一個本地倉庫過后忽妒,需要提交到遠程倉庫,我們首先需要關(guān)聯(lián)到遠程倉庫
git remote add origin git@xx.xx.xx.xx:repos/xxx/xxx/xxx.git
再使用
git remote -v
查看是否關(guān)聯(lián)成功
最后使用
git push -u origin master推送到遠程倉庫(在這種情況下可能需要先pull一次)

12,git如何重命名遠程分支

在git中重命名遠程分支兼贸,其實就是先刪除遠程分支段直,然后重命名本地分支,再重新提交一個遠程分支溶诞。
例如下面的例子中,我想重命名遠程的develop分支為devbranch

huanglideMacBook-Pro:MyRxJava huangli$ git branch
  develop
* master

刪除遠程分支:

huanglideMacBook-Pro:MyRxJava huangli$ git push --delete origin develop
To git@gitee.com:micaixiaoduanku/MyRxJava.git
 - [deleted]         develop
huanglideMacBook-Pro:MyRxJava huangli$ 

重命名本地分支:

huanglideMacBook-Pro:MyRxJava huangli$ git branch -m develop devbranch

push該分支

huanglideMacBook-Pro:MyRxJava huangli$ git push origin devbranch

13,git如何拉取指定的遠程分支

方法一
使用如下命令:
git checkout -b 本地分支名x origin/遠程分支名x
使用該方式會在本地新建分支x鸯檬,并自動切換到該本地分支x。
采用此種方法建立的本地分支會和遠程分支建立映射關(guān)系螺垢。
方式二
使用如下命令:
git fetch origin 遠程分支名x:本地分支名x
使用該方式會在本地新建分支x喧务,但是不會自動切換到該本地分支x赖歌,需要手動checkout。
采用此種方法建立的本地分支不會和遠程分支建立映射關(guān)系功茴。

14,git branch -r 顯示的不是最新的遠程分支列表

業(yè)務(wù)需要庐冯,要拉取其他同事的分支代碼,git branch -r 了一下坎穿,發(fā)現(xiàn)找不到同事的分支展父,但gitlab中是有這個分支的,就是本地的遠程分支列表和遠程服務(wù)器上的分支不一致玲昧,git pull了好幾次栖茉,也沒解決問題,后來git fetch了一下孵延,就好了吕漂,后來查了一下git fetch, git fetch會把遠程服務(wù)器上所有的更新都拉取下來,git pull是把遠程分支的代碼拉取下來并合并到本地分支

15,git中如何比較分支的區(qū)別

16,git如何回退到遠程最新的版本

git fetch --all
git reset --hard origin/master(根據(jù)本地版本)

17,git rebase到底是什么作用?

git中rebase是用來重新定義版本基線的尘应,基線是倉庫初始化或者新開分支最開始的提交記錄.這樣說來可能有點抽象, 用圖來表示應該會更加好容易理解.

image.png

如上圖痰娱,對于Dev分支來說目前它的基線就是提交記錄A,那么重新定義基線的意思就是更換指向1的源頭菩收。例如通常我們會去rebase Master分支到Dev.使其變成這樣:
image.png

那么現(xiàn)在Dev分支的提交基線就是C了.
那么它在實際應用中有什么作用呢梨睁?
我總結(jié)了三條:
1,用它來合并提交記錄.
2娜饵,當出現(xiàn)本地分支提交記錄和遠程分支提交記錄不同的情況下坡贺,進行rebase可以減少一個merge過程.
3, 當進行feature分支開發(fā)的時候,定期去執(zhí)行rebase Dev分支的代碼可以減少最終feature分支合并到Dev分支的工作量

18,當前倉庫關(guān)聯(lián)到一個遠程倉庫箱舞,但是想關(guān)聯(lián)到另外一個遠程倉庫.

當前倉庫關(guān)聯(lián)到的遠程倉庫:

huanglideMacBook-Pro:android-v4 huangli$ git remote -v
origin  git@syncsvn.bilibili.co:android/android-v4.git (fetch)
origin  git@syncsvn.bilibili.co:android/android-v4.git (push)

希望關(guān)聯(lián)到的遠程倉庫

git@github.com:micaixiaoduanku/MyDemosNew.git

方案1 添加新的分支到新的倉庫

git remote rm origin
git remote add origin https://xxx.git 
git push -u origin yourbranch 

方案2 關(guān)聯(lián)到之前的分支進行merge

git remote rm origin
git remote add origin https://xxx.git
git pull -u origin yourbranch

注意方案2可能會存在很多沖突

19 git中的stash

https://www.cnblogs.com/yanghaizhou/p/5269899.html

20. 每次提交代碼的時候都提示Enter passphrase for key

http://blog.csdn.net/superbfly/article/details/75287741

21. 如何 clone git 項目到一個非空目錄

如果我們往一個非空的目錄下 clone git 項目遍坟,就會提示錯誤信息:

fatal: destination path '.' already exists and is not an empty directory.

解決的辦法是:

  1. 進入非空目錄,假設(shè)是 /workdir/proj1
  2. git clone --no-checkout https://git.oschina.net/NextApp/platform.git tmp
  3. mv tmp/.git . #將 tmp 目錄下的 .git 目錄移到當前目錄
  4. rmdir tmp
  5. git reset --hard HEAD
    然后就可以進行各種正常操作了晴股。

22.如何使用cherry-pick同步commit提交.

http://www.reibang.com/p/08c3f1804b36

23.git 中如何撤銷部分修改

修改了兩個文件a愿伴、b為例,假設(shè)需要撤銷文件a的修改电湘,則修改后的兩個文件:1隔节、如果沒有被git add到索引區(qū)git checkout a 便可撤銷對文件a的修改2、如果被git add到索引區(qū)寂呛,但沒有做git commit提交1)使用git reset將a從索引區(qū)移除(但會保留在工作區(qū))git reset HEAD a2)撤銷工作區(qū)中文件a的修改git checkout a 3怎诫、如果已被提交,則需要先回退當前提交到工作區(qū)贷痪,然后撤銷文件a的修改1)回退當前提交到工作區(qū)git reset HEAD^2)撤銷工作區(qū)中文件a的修改git checkout a

作者:佛陀小沙彌
鏈接:https://www.zhihu.com/question/20039839/answer/125382988
來源:知乎
著作權(quán)歸作者所有幻妓。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處劫拢。

24.rebase過程沒有提示沖突肉津,但是編譯不過

Master A -> B (位置a)
Dev A -> B (位置b)
B (位置b) 這個位置的提交優(yōu)先于 B (位置a) 的提交强胰, Master A的修改優(yōu)先于 Dev A的修改,這個時候Dev rebase master就會出現(xiàn)沒有沖突提示妹沙,但是還是編譯不過.
另外一種情況 - 記錄于2019.7.9
即便rebase沒有沖突顿涣,也不能代表可以正常編譯朝卒。
下面這種情況
Master 可以正常編譯
我自己從master切出來的 dev 分支也可以正常編譯
但是我rebase了master沒有報沖突卻不能正常編譯了
具體文件是這種情況

image.png

好吧摊册,這很清楚了变擒,其實這樣去合并的確是沒有沖突的分俯。這意味著rebase過后沒有沖突也不能代表一定能編譯過.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肾筐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缸剪,更是在濱河造成了極大的恐慌吗铐,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杏节,死亡現(xiàn)場離奇詭異唬渗,居然都是意外死亡,警方通過查閱死者的電腦和手機奋渔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門镊逝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫉鲸,你說我怎么就攤上這事撑蒜。” “怎么了玄渗?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵座菠,是天一觀的道長。 經(jīng)常有香客問我藤树,道長浴滴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任岁钓,我火速辦了婚禮升略,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屡限。我一直安慰自己降宅,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布囚霸。 她就那樣靜靜地躺著腰根,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拓型。 梳的紋絲不亂的頭發(fā)上额嘿,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天瘸恼,我揣著相機與錄音,去河邊找鬼册养。 笑死东帅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的球拦。 我是一名探鬼主播靠闭,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坎炼!你這毒婦竟也來了愧膀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤谣光,失蹤者是張志新(化名)和其女友劉穎檩淋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萄金,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蟀悦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了氧敢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片日戈。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖孙乖,靈堂內(nèi)的尸體忽然破棺而出浙炼,到底是詐尸還是另有隱情,我是刑警寧澤的圆,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布鼓拧,位于F島的核電站,受9級特大地震影響越妈,放射性物質(zhì)發(fā)生泄漏季俩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一梅掠、第九天 我趴在偏房一處隱蔽的房頂上張望酌住。 院中可真熱鬧,春花似錦阎抒、人聲如沸酪我。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽都哭。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間欺矫,已是汗流浹背纱新。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留穆趴,地道東北人脸爱。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像未妹,于是被迫代替她去往敵國和親簿废。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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

  • 三大區(qū)域: 工作區(qū) → 緩存區(qū) → 本地倉庫 一 络它、 使用 git config 命令進行配置: git ...
    Manchangdx閱讀 2,839評論 0 2
  • 多種多樣的工作流使得在項目中實施Git時變得難以選擇族檬。這份教程提供了一個出發(fā)點,調(diào)查企業(yè)團隊最常見的Git工作流酪耕。...
    JSErik閱讀 4,372評論 2 8
  • 查看导梆、添加轨淌、提交迂烁、刪除、找回递鹉,重置修改文件 git help # 顯示command的help git sho...
    Swiftor閱讀 2,096評論 0 2
  • Git 是目前最流行的分布式版本控制系統(tǒng)之一盟步。 版本控制指的是,記錄每次版本變更的內(nèi)容和時間等細節(jié)躏结,保留各版本之間...
    神齊閱讀 1,400評論 0 7
  • 今日三只蛙: 1却盘、告訴付琳給孫正伊拿體檢單 2、控制自己的嘴巴不再說哥 3媳拴、和哥上課分開坐黄橘,交不同的朋友 ...
    毛竹_30e5閱讀 148評論 0 1