導航:首頁 > 版本升級 > gitmerge指定文件夾

gitmerge指定文件夾

發布時間:2022-12-18 01:35:00

❶ git合並分支時禁止合並特定文件

1.在日常開發過程中經常會遇到多環境,但是環境文件不同的情況,導致每次切換git環境時候非常麻煩,可能會提交上來不需要提交的文件,一個文件來回提交修改。

1. Git 多分支 配置文件不同 忽略特定的文件

1.定義策略 ours:

在git 根目錄執行命令行:

git config --global merge.ours.driver true

2.git根目錄新建 文件 .gitattributes 在需要忽略的文件名稱後面 + merge=ours 且一個文件一行

❷ Git 指令,看這個就夠了,趕緊收藏,方便查閱

1.初始化Git本地倉庫:

git init


2.Git添加遠程倉庫:

git remote add origin 你的遠程倉庫地址>


3.Git 克隆遠程倉庫:

git clone 需要克隆的遠程倉庫地址>


4.添加文件到Git倉庫:

git add 需要添加的文件>

或:

git add . (PS:"add ." 表示把當前路徑下的所有文件都添加到Git倉庫)


5.把文件提交到Git倉庫(PS:提交之前,需要先添加):

git commit -m"你的提交說明>"


6.把本地提交的文件推送到遠程倉庫:

git push -u origin 你的分支>

如果之前提交有時間使用 "-u",則可以使用:

git push


7.查看所有分支:

git branch

PS:如下表示有兩個分支,master分支和dev分支,*表示當前分支

*master

dev


8.創建新分支:

git branch 分支名稱>


9.切換分支:

git checkout 分支名稱>


10.創建分支且切換到新分支:

git checkout -b 分支名稱>

PS: 等價於

git branch 分支名稱>

git checkout 分支名稱>


11.刪除分支:

git branch -d 分支名稱>


12.合並指定分支到當前分支:

git merge 指定分支名稱>


13.Git 變基:

git rebase 指定分支名稱>


14.基於最新的提交創建標簽:

git tag 標簽名稱>


15.刪除指定標簽:

git tag -d 指定標簽名稱>


16.列出所有的本地標簽:

git tag


17.查看所有的提交 歷史 :

git log


18.查看指定文件的提交 歷史 :

git log -p 指定文件>


19.以列表方式查看指定文件的所有提交 歷史 :

git blame 指定文件>


20.隱藏工作現場, 工作內容暫不提交:

git stash

PS:在臨時需要處理緊急bug,當前代碼又不想提交的情況下,使用該條指令較為方便


21.恢復之前隱藏的工作現場:

git stash apply

PS:恢復工作現場之後,stash的內容並不會刪除

22.刪除工作現場(在恢復工作現場之後使用):

git stash drop


23.恢復工作現場並刪除stash內容

git stash pop


24.版本回退到上一個版本:

git reset --hard HEAD^

PS:^的個數表示回退版本的個數,例如回退3個版本:

git reset --hard HEAD^^^


25.版本回退到指定版本:

git re set --hard 指定版本號>

PS:可以通過git log 可以查看版本號,回退是,指定版本號可以不寫全,寫前幾位即可


26.查看遠程版本庫信息:

git remote -v


28.查看指定遠程版本庫信息:

git remote show 指定版本庫>


29.從遠程倉庫獲取代碼:

git fetch 遠程倉庫>


30.下載遠程倉庫代碼並合並到本地:

git pull 遠程倉庫> 遠程分支>


31.上傳所有標簽:

git push --tags


32.狀態查詢:

git status

❸ git merge 的奧秘

Git 合並兩個分支時,如果順著一個分支走下去可以到達另一個分支的話,那麼 Git 在合並兩者時,只會簡單地把指針右移,叫做「快進」(fast-forward),比如下圖:

快進式合並會把 feature 的提交歷史混入到 master 中,如果某一次 master 出現了問題,你需要回退到上個版本的時候,比如上例,你就會發現退一個版本到了 B,而不是想要的 F

由於 --no-ff 禁止了快進,所以會生成一個新的提交,master 指向 G。

git merge --squash 是用來把一些不必要commit進行壓縮,比如說,你的feature在開發的時候寫的commit很亂,那麼我們合並的時候不希望把這些歷史commit帶過來,於是使用 --squash 進行合並,此時文件已經同合並後一樣了,但不移動HEAD,不提交。需要進行一次額外的commit來「總結」一下,然後完成最終的合並。

❹ git常用操作

如果不用"pick"或者"edit",而是指定"squash",Git 會同時應用那個變更和它之前的變更並將提交說明歸並。因此,如果想將這三個提交合並為單一提交, 可以將腳本修改成這樣

保存並退出編輯器,Git 會應用全部三次變更然後將送回編輯器來歸並三次提交說明。

然後保存,就會擁有包含前三次提交的全部變更的單一提交 。

註:最頂行pick 不能修改為squash

當你正在進行項目中某一部分的工作,裡面的東西處於一個比較雜亂的狀態,而你想轉到其他分支上進行一些工作。問題是,你不想提交進行了一半的工作,否則以後你無法回到這個工作點。解決這個問題的辦法就是 git stash 命令。

「『儲藏」「可以獲取工作目錄的中間狀態——也就是修改過的被追蹤的文件和暫存的變更——並將它保存到一個未完結變更的堆棧中,隨時可以重新應用。

當追准備切換分支,但是還不想提交你正在進行中的工作;所以儲藏這些變更。為了往堆棧推送一個新的儲藏,只要運行? git stash :

這時,你可以方便地切換到其他分支工作;你的變更都保存在棧上。要查看現有的儲藏,你可以使用? git stash list :

git stash apply :重新應用你剛剛實施的儲藏

git stash apply stash@{number} :應用更早的儲藏

只需回到需要合並的源分支,運行 git merge 命令指定要合並進來的分支即可;Git 作了合並,但沒有提交,它會停下來等你解決沖突。要看看哪些文件在合並時發生沖突,可以用 git status 觀察

任何包含未解決沖突的文件都會以未合並(unmerged)的狀態列出。Git 會在有沖突的文件里加入標準的沖突解決標記,可以通過它們來手工定位並解決這些沖突。可以看到此文件包含類似下面這樣的部分:

可以看到 ======= 隔開的上半部分,是? HEAD (即 master 分支,在運行 merge 命令時所切換到的分支)中的內容,下半部分是在 iss53 分支中的內容。解決沖突的辦法無非是二者選其一或者親自整合到一起。比如可以通過把這段內容替換為下面這樣來解決:

在解決了所有文件里的所有沖突後,運行? git add ?將把它們標記為已解決狀態(譯註:實際上就是來一次快照保存到暫存區域。)

pull時為了防止更改後pull Feiled的出現,先執行commit,stash or revert。

❺ Git不同項目代碼分支合並,且僅合並特定提交

使用場景: 項目中同一個服務在2個不同的倉庫中開發,當在2中開發的 部分功能 需要合並到1中時。

操作步驟:

1)在需要合並的目錄打開gitbash,執行

git remote add 遠程別名 遠程地址

2)git fetch 別名 分支名

此處必須使用 git fetch,因為 git pull = git fetch + git merge,會自動合並所有提交,從而導致不需要的提交被合入當前分支。

3)在gitlab commit查看commit的hash值,或者使用git log查看。復制需要合並的單個或多個hash後,執行命令:

4)使用git status確認狀態無誤後,執行git push即完成合並

❻ git merge用法

git merge用法如下:

當前分支合並到另一分支時,如果沒有分歧解決,就會直接移動文件指針。這個過程叫做fastforward。

舉例來說,開發一直在master分支進行,但忽然有一個新的想法,於是新建了一個develop的分支,並在其上進行一系列提交,完成時,回到 master分支,此時,master分支在創建develop分支之後並未產生任何新的commit。此時的合並就叫fast forward。

1、git merge dev

是將dev的分支合並到當前分支,應該默認是fast forward模式

2、git merge dev --no-ff

--no-ff指的是強行關閉fast-forward方式。

ast-forward方式就是當條件允許的時候,git直接把HEAD指針指向合並分支的頭,完成合並。屬於「快進方式」,不過這種情況如果刪除分支,則會丟失分支信息。因為在這個過程中沒有創建commit

3、git merge dev --squash

是用來把一些不必要commit進行壓縮,比如說,你的feature在開發的時候寫的commit很亂,那麼我們合並的時候不希望把這些歷史commit帶過來,於是使用--squash進行合並,此時文件已經同合並後一樣了,但不移動HEAD,不提交。需要進行一次額外的commit來「總結」一下,然後完成最終的合並

❼ git使用:怎樣merge一個分支的某個時間段內的所有提交到另一個分支

沒看懂你表達抄的意思,但基本的合並分支的方法入下:
1.git checkout xxx(切換到你要將其他分支合並到的主分支上,xxx是分支名)
2.git merge xxx (合並操作)
3.git branch -d xxx(刪除已經合並的分支,可選擇不刪除)

❽ 如何 git push 或者 merge 指定的幾個文件

1、首先新建一個文本文件,名字為「.gitignore.txt」。

❾ git合並時忽略某個文件

因為開發現場跟部署的環境不同,有很多 ip 地址每次都要改來改去;於是開兩個分支 master (用來保存部署現場的 ip )和 dev (開發環境的 ip ),開發功能時在 dev 分支,然後使用 master 合並,每個分支都保存著自己的 config 配置文件,不想 dev 分支被 master 合並時 config 文件也合並.

git merge dev

在 dev 分支上的 index.php 就不會被合並了;

❿ git merge原理(遞歸三路合並演算法)

我們知道git 合並文件是以行為單位進行一行一行進行合並的,但是有些時候並不是兩行內容不一樣git就會報沖突,因為smart git 會幫我們自動幫我們進行取捨,分析出那個結果才是我們所期望的,如果smart git 都無法進行取捨時候才會報沖突,這個時候才需要我們進行人工干預。那git 是如何幫我們進行Smart 操作的呢?

Mine 代表你本地修改...
Theirs 代表其他人修改...
假設對於同一個文件,出現你和其他人一起修改,此時如果git來進行合並,git就懵逼了,因為Git既不敢得罪你(Mine),也不能得罪他們(Theirs) 無理無據,git只能讓你自己搞了,但是這種情況太多了而且也沒有必要…

三路合並就是先找出一個基準,然後以基準為Base 進行合並,如果2個文件相對基準(base)都發生了改變 那git 就報沖突,然後讓你人工決斷。否則,git將取相對於基準(base)變化的那個為最終結果。

下面面的合並就是我們常見的分支graph,結合具體分析:

git merge-base –all commit_id1(Yours/Theirs) commit_id2(Yours/Theirs) 就能找出公共祖先的commitId(Base)

圖雖然復雜 但是核心原理是不變的,下面我們看 另外一個稍微高級一點的核心原理」遞歸三路合並」 也是我們很常見看到 git merge 輸出的 recursive strategy

簡短描述下 如何會出現上面的圖:

從上面我們DAG圖可以知道公共祖先有③和④,那到底選擇哪個呢,我們分別來看:

最終期待的結果是什麼?

所以 我們的最佳公共祖先應該是4,最終結果應該是 /foo.c = C
git 如何選擇公共祖先呢?

你可能會說用 git merge-base ⑥ ⑦ 輸出的是 ④ 但是git 就真的是用 ④ 做祖先嗎 ?答案是No

從git的解釋中,我們就知道 如果有2個都是最佳公共祖先時候,這個時候git 會隨便輸出一個不確定公共祖先。

git 是這樣進行合並的:

當項目中包含多條功能分支時,有時就需要使用 git merge 命令,指定將某個分支的提交合並到當前分支。Git 中有兩個合並策略:fast-forward 和 no-fast-forward。

當merge ② 和 ⑥時候 由於②是公共祖先,所以進行Fast-Forward 合並,直接指向⑥ 不用生成一個新的⑧進行merge了。

no-fast-forward(--no-ff)意為非快進式合並,fast-forward的場景很少遇到,基本是:在當前分支分離出子分支後(比如分支dev),後續會有其他分支合並進來的修改,而分離出的dev分支也做了修改。這個時候再使用git merge,就會觸發 no-fast-forward 策略了。

看懂下面這個例子你就明白了:

現在 f 提交是我們正在合並的提交

如果現在找 e 和 d 的共同祖先,你會發現並不唯一,b 和 c 都是。那麼此時怎麼合並呢?

git 會首先將 b 和 c 合並成一個虛擬的提交 x,這個 x 當作 e 和 d 的共同祖先。

而要合並 b 和 c,也需要進行同樣的操作,即找到一個共同的祖先 a。

我們這里的 a、b、c 只是個比較簡單的例子,實際上提交樹往往更加復雜,這就需要不斷重復以上操作以便找到一個真實存在的共同祖先,而這個操作是遞歸的。這便是「遞歸三路合並」的含義。

這是 git 合並時默認採用的策略。

git官方文檔
git merge原理
git merge的合並原理

閱讀全文

與gitmerge指定文件夾相關的資料

熱點內容
奇跡單機哪個文件記錄游戲賬號 瀏覽:332
地磅數據刪除後在哪裡找到 瀏覽:560
qq臨時文件夾 瀏覽:356
手機音樂裁剪合並軟體安卓版 瀏覽:123
90ss重甲升級後的屬性 瀏覽:315
哪個app支持佳明數據導入 瀏覽:529
支持外接u盤的文件瀏覽器 瀏覽:599
用word怎麼設置背景 瀏覽:309
網站上有會員會怎麼樣 瀏覽:482
win10dosboxdebug 瀏覽:65
打開智慧人社顯示配置文件不正確 瀏覽:107
數控編程u3是什麼意思 瀏覽:336
linux壓縮命令zip 瀏覽:326
怎麼做文件帶圖片上去 瀏覽:101
怎麼把erp的數據自動填到dms 瀏覽:853
怎麼將所有文件名更改 瀏覽:253
小米視頻非免費網路 瀏覽:604
發郵件文件名命名在哪 瀏覽:389
此電腦里的文件是哪個盤 瀏覽:320
homeconnect蘋果版本 瀏覽:220

友情鏈接