git使用記錄學習

2021-10-23 21:36:50 字數 3816 閱讀 5540

配置環境:

1、通過git init命令把某個目錄變成git可以管理的倉庫;

2、生成公鑰秘鑰:ssh key ssh-keygen -t rsa -c 「for [email protected]」(郵箱)

3、在github的setting中配置公鑰

3、 關聯遠端gith的使用者名稱和郵箱

$ git config --global user.name 「your name」

$ git config --global user.email 「[email protected]

操作:

1、從分支上拉取遠端庫的內容:git pull origin dev(分支名稱)

2、對專案就行修改

3、把修改後的專案add到本次分支:git add .

4、把本地分支的內容提交到暫存庫:git commit -m 「注釋」

5、把暫存庫的內容推送到遠端庫:git push -u origin dev(分支名稱) //前提:在哪個分支目錄下就往哪個遠端分支推送

6、切換到主分支master:git checkout master(名稱)

7、合併分支:git merge dev(分支名稱)

刪除本地分支:git branch -d [branchname]

刪除遠端分支: git push origin --delete [branchname]

建立分支 :git checkout -b [branchname]

方法一:(已經建立了本地分支)

git branch --set-upstream-to=origin/remote_branch your_branch

//等同於

git branch -u origin/remote_branch your_branch

方法二:(本地分支不存在,本地名稱與遠端名稱不同)

複製**

git branch new_branch origin/remote_branch

// 或者

git fetch origin remote_branch:new_branch

// 上面?這兩種方法都不會切換當前分支;

// 如果想要建立分支的同時,切換到新分支

git checkout -b new_branch origin/remote_branch

複製**

方法三:(如果本地有遠端分支 origin/name, 想拉取乙個本地分支)

// git預設將建立乙個同名本地分支,並將本地分支和遠端倉庫關聯

git checkout remote_branch

遠端分支不存在

// 如果遠端倉庫不存在new_remote_branch,將建立乙個該分支,並關聯local_branch

git push origin local_branch:new_remote_branch

1,那我本地這個也算是個分支?還是就是乙個本地倉庫?

**答:**本地和遠端的關係相當於兩個分支,你感覺一樣是因為你git pull 的時候已經自動給繫結好對應關係了, set-upstream…balbala

2,如果我在遠端新建了個分支,然後我pull了下來,那我本地到底有分支這個說法嗎?我本地的分支是不是就是那個遠端新建的分支?

**答:**你遠端新建了乙個分支拉到本地的道理是一樣的,屬於複製了乙份,但是本地分支和遠端分支已經是兩個東西了

3,本地倉庫和本地分支有什麼區別?

**答:**本地分支屬於本地倉庫裡,是包含關係,乙個倉庫裡可以有很多分支

4,commit是提交到本地倉庫,然後push,這個push是把所有**推到遠端倉庫,還是只是把commit的地方推到遠端倉庫?

**答:**肯定不會全量推送到遠端的,是通過對比 commit 的記錄,如果本地高於遠端就直接把多出來的commit 給懟上去,如果本地分支的最新版本和遠端的 commit 有衝突,就需要解決衝突。

5,那為什麼要先commit,然後pull,然後再push,我pull了,豈不是把自己改的**都給覆蓋掉了嘛,因為遠端沒有我改的**,我pull,豈不是覆蓋了我本地的改動好的地方了?那我還怎麼push?

**答:**這個先 commit 再 pull 最後再push 的情況就是為了應對多人合併開發的情況,

commit 是為了告訴 git 我這次提交改了哪些東西,不然你只是改了但是 git 不知道你改了,也就無從判斷比較;

pull是為了本地 commit 和遠端commit 的對比記錄,git 是按照檔案的行數操作進行對比的,如果同時操作了某檔案的同一行那麼就會產生衝突,git 也會把這個衝突給標記出來,這個時候就需要先把和你衝突的那個人拉過來問問保留誰的**,然後在 git add && git commit && git pull 這三連,再次 pull 一次是為了防止再你們協商的時候另乙個人給又提交了一版東西,如果真發生了那流程重複一遍,通常沒有衝突的時候就直接給你合併了,不會把你的**給覆蓋掉

出現**覆蓋或者丟失的情況:比如a b兩人的**pull 時候的版本都是1,a在本地提交了2,3並且推送到遠端了,b 進行修改的時候沒有commit 操作,他先自己寫了東西,然後 git pull 這個時候 b 本地版本已經到3了,b 在本地版本3的時候改了 a 寫過的**,再進行了git commit && git push 那麼在遠端版本中就是4,而且 a 的**被覆蓋了,所以說所有人都要先 commit 再 pull,不然真的會覆蓋**的

6,兩個分支a和b,a合併b和b合併a,有區別嗎?

**答:**兩個互相合併的唯一區別就是 a->b 的時候 b 分支上會產生乙個 merge_commit ,被改變的分支是 b ;如果現在沒有發生任何改動執行 b->a ,則a和b兩分支才會完全相同。

一般工作流程如下:

1、git clone 轉殖遠端資源到本地目錄,作為工作目錄;

2、然後在本地的轉殖目錄上新增或修改檔案;

3、如果遠端修改了,需要同步遠端的內容,直接git pull就可以更新本地的檔案;

4、本地在修改之後,可以通過git status 檢視修改的檔案。然後使用git add 新增修改的檔案暫到緩衝區;

5、在新增之後,可以使用git commit新增到當前的工作區;

6、在修改完成後,如果發現錯誤,可以撤回提交並再次修改並提交;

7、git push將本地的修改推送到遠端的git伺服器

git 工作流程

一般工作流程如下:

1、git clone 轉殖遠端資源到本地目錄,作為工作目錄;

2、然後在本地的轉殖目錄上新增或修改檔案;

3、如果遠端修改了,需要同步遠端的內容,直接git pull就可以更新本地的檔案;

4、本地在修改之後,可以通過git status 檢視修改的檔案。然後使用git add 新增修改的檔案暫到緩衝區;

5、在新增之後,可以使用git commit新增到當前的工作區;

6、在修改完成後,如果發現錯誤,可以撤回提交並再次修改並提交;

7、git push將本地的修改推送到遠端的git伺服器。

分支操作:

1、檢視分支:

git branch -a

2、建立分支,加上-b上建立完分支後,切換的新的分支工作:

git checkout -b dev

這時候修改的檔案都是在dev分支,不會對master分支的檔案進行修改。

3、合併分支

git checkout master

git merge dev

如果有衝突會有提示,預設是新增兩個分支檔案裡面的內容,然後git用<<<<<<>>>>>>標記出不同分支的內容,修改衝突的檔案,然後git add修改後的內容就可以繼續提交了。

Git 使用記錄

1 從遠端倉庫獲取更新 1 git fetch 獲取更新不會自動合併 git fetch origin master git pull origin master獲取更新 git log p master.origin master 對比本地和遠端的主分支 git merge origin mast...

GIT 使用記錄

git clone xx 從遠端伺服器上將專案轉殖下來 git add 將檔案或者資料夾新增到git 倉庫中 本地 git commit m commit 將改動提交到git倉庫中 git push origin master 將倉庫推送更新到遠端伺服器的master分支,git push 操作 g...

git使用記錄

平時開發都是直接使用eclipse自帶的git客戶端管理 但有時會遇到一些詭異的問題,不得不通過敲命令來解決 以下是我平時會用的git命令,記錄下來,留做備用 git status git log 新增所有新建的檔案到暫存區 git add all 提交所有經git管理的修改過的檔案和在暫存區的檔案...