Git上传Github及基本操作
隔段時間傳一次GitHub,總忘記怎么傳的,現在總結一下:
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更新倉庫
1.使用強制push的方法:
git push -u origin master -f這樣會使遠程修改丟失,一般是不可取的,尤其是多人協作開發的時候。
2.push前先將遠程repository修改pull下來
3.若不想merge遠程和本地修改,可以先創建新的分支:
git branch [name]然后push
git push -u origin [name]?
有時候會遇到要上傳空文件夾到遠程服務器的情況,在這里我提供了將空文件夾上傳到github倉庫中的方法的完美方案(創建無關文件,刪除無關文件)。眾所周知,git僅僅跟蹤文件的變動,不跟蹤目錄。
方法:先在目錄下的所有空文件夾下,創建一個無關文件(.gitxxx文件)。
在項目的根目錄下輸入命令行(用Git Bash Here打開),
find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitxxx \;
這樣,在目錄下的所有空文件夾下,就有.gitxxx文件了。此時,你可以上傳此項目到遠程服務器了,相信大家還有一個困惑,空文件夾下的.gitxxx文件,并不是我們 想看到的,所有在開發到一定階段時,我們可以通過命令行刪除所有的.gitxxx文件(無關文件)
刪除當前目錄下的.gitxxx文件
這樣,你就可以把目錄下的所有.gitxxx文件刪除了。
?
Pull request:
Pull Request 是開發者使用 GitHub 進行協作的利器。這個功能為用戶提供了友好的頁面,讓提議的更改在并入官方項目之前,可以得到充分的討論。
最簡單地來說,Pull Request 是一種機制,讓開發者告訴項目成員一個功能已經完成。一旦 feature 分支開發完畢,
開發者使用 GitHub 賬號提交一個 Pull Request。它告訴所有參與者,他們需要審查代碼,并將代碼并入 master 分支。
Pull Request 不只是一個通知,還是一個專注于某個提議功能的討論版
Pull Request是如何工作的
Pull Request 需要兩個不同的分支或是兩個不同的倉庫,
例子
如何將 Pull Request 用在 Fork 工作流中。小團隊中的開發和向一個開源項目貢獻代碼都可以這樣做。
Mary 是一位開發者,John 是項目的維護者。他們都有自己公開的 GitHub 倉庫,
John 的倉庫之一便是下面的官方項目。
為了參與這個項目,Mary 首先要做的是 fork 屬于 John 的 GitHub 倉庫。她需要注冊登錄 GitHub,找到 John 的倉庫,點擊 Fork 按鈕。
選好 fork 的目標位置之后,她在服務端就有了一個項目的副本.
接下來,Mary 需要將她剛剛 fork 的 GitHub 倉庫克隆下來.她在本地會有一份項目的副本。她需要運行下面這個命令:
請記住,git clone 自動創建了一個名為 origin 的遠端連接,指向 Mary 所 fork 的倉庫
在她寫任何代碼之前,Mary 需要為這個功能創建一個新的分支。這個分支將是她隨后發起 Pull Request 時要用到的源分支。
# 創建新分支 git checkout -b some-feature # 編輯一些代碼 git commit -a -m "新功能的一些草稿" #切換分支 git checkout ----為了完成這個新功能,Mary 想創建多少個提交都可以。如果 feature 分支的歷史有些亂,她可以使用交互式的 rebase 來移除或者拼接不必要的提交。對于大項目來說,清理 feature 的項目歷史使得項目維護者更容易看清楚 Pull Request 的所處的進展
在功能完成后,Mary 使用簡單的 git push 將 feature 分支推送到了她自己的 GitHub 倉庫上(不是官方的倉庫):
git push origin some-branch這樣她的更改就可以被項目維護者看到了(或者任何有權限的協作者)。
Mary創建了一個Pull Request
GitHub 上已經有了她的 feature 分支之后,Mary 可以找到被她 fork 的倉庫,點擊項目簡介下的 New Pull Request 按鈕,用她的 GitHub 賬號創建一個 Pull Request。Mary 的倉庫會被默認設置為源倉庫(head fork),詢問她指定源分支(compare)、目標倉庫(base fork)和目標分支(base)。
Mary 想要將她的功能并入主代碼庫,所以源分支就是她的 feature 分支,目標倉庫就是 John 的公開倉庫,目標分支為 master。她還需要提供一個 Pull Request 的標題和簡介。
在她創建了 Pull Request 之后,GitHub 會給 John 發送一條通知。
John審查了這個Pull Request
John 可以在他自己的 GitHub 倉庫下的 Pull Request 選項卡中看到所有的 Pull Request。點擊 Mary 的 Pull Request 會顯示這個 Pull Request 的簡介、feature 分支的提交歷史,以及包含的更改。
如果他認為 feature 分支已經可以合并了,他只需點擊 Merge Pull Request 按鈕來通過這個 Pull Request,將 Mary 的 feature分支并入他的 master 分支.
但是,在這里例子中,假設 John 發現了 Mary 代碼中的一個小 bug,需要她在合并前修復。他可以評論整個 Pull Request,也可以評論 feature 分支中某個特定的提交。
!
為了修復錯誤,Mary 在她的 feature 分支后面添加了另一個提交,并將它推送到了她的 GitHub 倉庫,就像她之前做的一樣。這個提交被自動添加到原來的 Pull Request 后面,John 可以在他的評論下方再次審查這些修改。
John 接受了 Pull Request
最后,John 接受了這些修改,將 feature 分支并入了 master 分支,關閉了這個 Pull Request。功能現在已經整合到了項目中,其他在 master 分支上工作的開發者可以使用標準的 git pull 命令將這些修改拉取到自己的本地倉庫。
?
更新fork的repo.
準備工作
原始repo:http://git-server/YCODE_DOMIN/test.git
fork過來的repo: http://git-server/guqiang/test.git
開始
原始repo做了更改,本地做了更改并且commit
注意
在同步原始遠端repo的時候,如果本地有未commit或者stash的,需要先commit或者stash,不然git會提示你讓你這么做。
Paste_Image.png
總的來說
三個命令:
- 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 #查看修改內容 git diff #查看修改歷史 git log #轉到master git checkout master #merge 分支 git merge mybranch #刪除 mybranch分支 git branch -d mybranch //刪除mybranch.gitignore規則不生效的解決辦法
把某些目錄或文件加入忽略規則,按照上述方法定義后發現并未生效,原因是.gitignore只能忽略那些原來沒有被追蹤的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。那么解決方法就是先把本地緩存刪除(改變成未被追蹤狀態),然后再提交:
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?轉到 ssh方式
git remote -v #查看項目采用的提交方式 git remote rm origin #移除舊的提交方式 git remote add origin git@xxx.git #添加新的ssh提交方式,到github官網獲取項目的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會報錯:refusing to merge unrelated histories git push origin main git branch -D master?
總結
以上是生活随笔為你收集整理的Git上传Github及基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mutt+msmtp+gmail
- 下一篇: Android中获取正在运行的服务---