Git上传Github及基本操作
隔段時(shí)間傳一次GitHub,總忘記怎么傳的,現(xiàn)在總結(jié)一下:
cd ~/ #repo. name git init git add . git commit -m 'remarks' git remote add origin url.git git pull --rebase origin master git push -u origin mastermac查看.git目錄:
defaults write com.apple.finder AppleShowAllFiles TRUE killall Finder更新倉(cāng)庫(kù)
1.使用強(qiáng)制push的方法:
git push -u origin master -f這樣會(huì)使遠(yuǎn)程修改丟失,一般是不可取的,尤其是多人協(xié)作開(kāi)發(fā)的時(shí)候。
2.push前先將遠(yuǎn)程repository修改pull下來(lái)
3.若不想merge遠(yuǎn)程和本地修改,可以先創(chuàng)建新的分支:
git branch [name]然后push
git push -u origin [name]?
有時(shí)候會(huì)遇到要上傳空文件夾到遠(yuǎn)程服務(wù)器的情況,在這里我提供了將空文件夾上傳到github倉(cāng)庫(kù)中的方法的完美方案(創(chuàng)建無(wú)關(guān)文件,刪除無(wú)關(guān)文件)。眾所周知,git僅僅跟蹤文件的變動(dòng),不跟蹤目錄。
方法:先在目錄下的所有空文件夾下,創(chuàng)建一個(gè)無(wú)關(guān)文件(.gitxxx文件)。
在項(xiàng)目的根目錄下輸入命令行(用Git Bash Here打開(kāi)),
find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitxxx \;
這樣,在目錄下的所有空文件夾下,就有.gitxxx文件了。此時(shí),你可以上傳此項(xiàng)目到遠(yuǎn)程服務(wù)器了,相信大家還有一個(gè)困惑,空文件夾下的.gitxxx文件,并不是我們 想看到的,所有在開(kāi)發(fā)到一定階段時(shí),我們可以通過(guò)命令行刪除所有的.gitxxx文件(無(wú)關(guān)文件)
刪除當(dāng)前目錄下的.gitxxx文件
這樣,你就可以把目錄下的所有.gitxxx文件刪除了。
?
Pull request:
Pull Request 是開(kāi)發(fā)者使用 GitHub 進(jìn)行協(xié)作的利器。這個(gè)功能為用戶提供了友好的頁(yè)面,讓提議的更改在并入官方項(xiàng)目之前,可以得到充分的討論。
最簡(jiǎn)單地來(lái)說(shuō),Pull Request 是一種機(jī)制,讓開(kāi)發(fā)者告訴項(xiàng)目成員一個(gè)功能已經(jīng)完成。一旦 feature 分支開(kāi)發(fā)完畢,
開(kāi)發(fā)者使用 GitHub 賬號(hào)提交一個(gè) Pull Request。它告訴所有參與者,他們需要審查代碼,并將代碼并入 master 分支。
Pull Request 不只是一個(gè)通知,還是一個(gè)專(zhuān)注于某個(gè)提議功能的討論版
Pull Request是如何工作的
Pull Request 需要兩個(gè)不同的分支或是兩個(gè)不同的倉(cāng)庫(kù),
例子
如何將 Pull Request 用在 Fork 工作流中。小團(tuán)隊(duì)中的開(kāi)發(fā)和向一個(gè)開(kāi)源項(xiàng)目貢獻(xiàn)代碼都可以這樣做。
Mary 是一位開(kāi)發(fā)者,John 是項(xiàng)目的維護(hù)者。他們都有自己公開(kāi)的 GitHub 倉(cāng)庫(kù),
John 的倉(cāng)庫(kù)之一便是下面的官方項(xiàng)目。
為了參與這個(gè)項(xiàng)目,Mary 首先要做的是 fork 屬于 John 的 GitHub 倉(cāng)庫(kù)。她需要注冊(cè)登錄 GitHub,找到 John 的倉(cāng)庫(kù),點(diǎn)擊 Fork 按鈕。
選好 fork 的目標(biāo)位置之后,她在服務(wù)端就有了一個(gè)項(xiàng)目的副本.
接下來(lái),Mary 需要將她剛剛 fork 的 GitHub 倉(cāng)庫(kù)克隆下來(lái).她在本地會(huì)有一份項(xiàng)目的副本。她需要運(yùn)行下面這個(gè)命令:
請(qǐng)記住,git clone 自動(dòng)創(chuàng)建了一個(gè)名為 origin 的遠(yuǎn)端連接,指向 Mary 所 fork 的倉(cāng)庫(kù)
在她寫(xiě)任何代碼之前,Mary 需要為這個(gè)功能創(chuàng)建一個(gè)新的分支。這個(gè)分支將是她隨后發(fā)起 Pull Request 時(shí)要用到的源分支。
# 創(chuàng)建新分支 git checkout -b some-feature # 編輯一些代碼 git commit -a -m "新功能的一些草稿" #切換分支 git checkout ----為了完成這個(gè)新功能,Mary 想創(chuàng)建多少個(gè)提交都可以。如果 feature 分支的歷史有些亂,她可以使用交互式的 rebase 來(lái)移除或者拼接不必要的提交。對(duì)于大項(xiàng)目來(lái)說(shuō),清理 feature 的項(xiàng)目歷史使得項(xiàng)目維護(hù)者更容易看清楚 Pull Request 的所處的進(jìn)展
在功能完成后,Mary 使用簡(jiǎn)單的 git push 將 feature 分支推送到了她自己的 GitHub 倉(cāng)庫(kù)上(不是官方的倉(cāng)庫(kù)):
git push origin some-branch這樣她的更改就可以被項(xiàng)目維護(hù)者看到了(或者任何有權(quán)限的協(xié)作者)。
Mary創(chuàng)建了一個(gè)Pull Request
GitHub 上已經(jīng)有了她的 feature 分支之后,Mary 可以找到被她 fork 的倉(cāng)庫(kù),點(diǎn)擊項(xiàng)目簡(jiǎn)介下的 New Pull Request 按鈕,用她的 GitHub 賬號(hào)創(chuàng)建一個(gè) Pull Request。Mary 的倉(cāng)庫(kù)會(huì)被默認(rèn)設(shè)置為源倉(cāng)庫(kù)(head fork),詢問(wèn)她指定源分支(compare)、目標(biāo)倉(cāng)庫(kù)(base fork)和目標(biāo)分支(base)。
Mary 想要將她的功能并入主代碼庫(kù),所以源分支就是她的 feature 分支,目標(biāo)倉(cāng)庫(kù)就是 John 的公開(kāi)倉(cāng)庫(kù),目標(biāo)分支為 master。她還需要提供一個(gè) Pull Request 的標(biāo)題和簡(jiǎn)介。
在她創(chuàng)建了 Pull Request 之后,GitHub 會(huì)給 John 發(fā)送一條通知。
John審查了這個(gè)Pull Request
John 可以在他自己的 GitHub 倉(cāng)庫(kù)下的 Pull Request 選項(xiàng)卡中看到所有的 Pull Request。點(diǎn)擊 Mary 的 Pull Request 會(huì)顯示這個(gè) Pull Request 的簡(jiǎn)介、feature 分支的提交歷史,以及包含的更改。
如果他認(rèn)為 feature 分支已經(jīng)可以合并了,他只需點(diǎn)擊 Merge Pull Request 按鈕來(lái)通過(guò)這個(gè) Pull Request,將 Mary 的 feature分支并入他的 master 分支.
但是,在這里例子中,假設(shè) John 發(fā)現(xiàn)了 Mary 代碼中的一個(gè)小 bug,需要她在合并前修復(fù)。他可以評(píng)論整個(gè) Pull Request,也可以評(píng)論 feature 分支中某個(gè)特定的提交。
!
為了修復(fù)錯(cuò)誤,Mary 在她的 feature 分支后面添加了另一個(gè)提交,并將它推送到了她的 GitHub 倉(cāng)庫(kù),就像她之前做的一樣。這個(gè)提交被自動(dòng)添加到原來(lái)的 Pull Request 后面,John 可以在他的評(píng)論下方再次審查這些修改。
John 接受了 Pull Request
最后,John 接受了這些修改,將 feature 分支并入了 master 分支,關(guān)閉了這個(gè) Pull Request。功能現(xiàn)在已經(jīng)整合到了項(xiàng)目中,其他在 master 分支上工作的開(kāi)發(fā)者可以使用標(biāo)準(zhǔn)的 git pull 命令將這些修改拉取到自己的本地倉(cāng)庫(kù)。
?
更新fork的repo.
準(zhǔn)備工作
原始repo:http://git-server/YCODE_DOMIN/test.git
fork過(guò)來(lái)的repo: http://git-server/guqiang/test.git
開(kāi)始
原始repo做了更改,本地做了更改并且commit
注意
在同步原始遠(yuǎn)端repo的時(shí)候,如果本地有未commit或者stash的,需要先commit或者stash,不然git會(huì)提示你讓你這么做。
Paste_Image.png
總的來(lái)說(shuō)
三個(gè)命令:
- git remote add upstream "原始repo"
- git fetch upstream
- git rebase upstream/master
清理歷史
1.Checkoutgit checkout --orphan latest_branch2. Add all the filesgit add -A3. Commit the changesgit commit -am "commit message"4. Delete the branchgit branch -D master5.Rename the current branch to mastergit branch -m master6.Finally, force update your repositorygit push -f origin master常用操作
#查看分支 git branch #查看status git status #查看修改內(nèi)容 git diff #查看修改歷史 git log #轉(zhuǎn)到master git checkout master #merge 分支 git merge mybranch #刪除 mybranch分支 git branch -d mybranch //刪除mybranch.gitignore規(guī)則不生效的解決辦法
把某些目錄或文件加入忽略規(guī)則,按照上述方法定義后發(fā)現(xiàn)并未生效,原因是.gitignore只能忽略那些原來(lái)沒(méi)有被追蹤的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無(wú)效的。那么解決方法就是先把本地緩存刪除(改變成未被追蹤狀態(tài)),然后再提交:
git rm -r --cached . git add . git commit -m 'update .gitignore'如何刪除github上的commit歷史記錄?
#Clone your git repo git clone https://github.com/lestatzhang/lestatzhang.github.io.git; #Entre your local repo cd lestatzhang.github.io; #Checkout git checkout --orphan latest_branch; #Add all the files git add -A; #Commit the changes git commit -am "Reinitialize"; #Delete the branch git branch -D master; #Rename the current branch to master git branch -m master; #Finally, force update your repository git push -f origin master;解決Github 每次上傳都要輸入用戶名和密碼
https?轉(zhuǎn)到 ssh方式
git remote -v #查看項(xiàng)目采用的提交方式 git remote rm origin #移除舊的提交方式 git remote add origin git@xxx.git #添加新的ssh提交方式,到github官網(wǎng)獲取項(xiàng)目的ssh鏈接更改master到main分支
git checkout -b main # Switched to a new branch 'main' git branch # * main # master git merge master # 將master分支合并到main上 # Already up to date. git pull origin main --allow-unrelated-histories # git pull origin main會(huì)報(bào)錯(cuò):refusing to merge unrelated histories git push origin main git branch -D master?
總結(jié)
以上是生活随笔為你收集整理的Git上传Github及基本操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mutt+msmtp+gmail
- 下一篇: Android中获取正在运行的服务---