配置環境:
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管理的修改過的檔案和在暫存區的檔案...