Git上傳Github及基本操作

git config --global user.name "github’s Name"
git config --global user.email "[email protected]"
git config --list

隔段時間傳一次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 master

mac查看.git目錄:

defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

更新倉庫

1.使用強制push的方法:

git push -u origin master -f

這樣會使遠程修改丟失,一般是不可取的,尤其是多人協作開發的時候。

2.push前先將遠程repository修改pull下來

git pull origin master

git push -u origin master

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文件

find ./ -type f -name '.gitxxx' -delete


這樣,你就可以把目錄下的所有.gitxxx文件刪除了。
 

Pull request:

Pull Request 是開發者使用 GitHub 進行協作的利器。這個功能爲用戶提供了友好的頁面,讓提議的更改在併入官方項目之前,可以得到充分的討論。

最簡單地來說,Pull Request 是一種機制,讓開發者告訴項目成員一個功能已經完成。一旦 feature 分支開發完畢,
開發者使用 GitHub 賬號提交一個 Pull Request。它告訴所有參與者,他們需要審查代碼,並將代碼併入 master 分支。
Pull Request 不只是一個通知,還是一個專注於某個提議功能的討論版

Pull Request是如何工作的

Pull Request 需要兩個不同的分支或是兩個不同的倉庫,

  1. 開發者在他們的本地倉庫中爲某個功能創建一個專門的分支。
  2. 開發者將分支推送到公共的 GitHub 倉庫。
  3. 開發者用 GitHub 發起一個 Pull Request。
  4. 其餘的團隊成員審查代碼,討論並且做出修改。
  5. 項目維護者將這個功能併入官方的倉庫,然後關閉這個 Pull Request。

例子

如何將 Pull Request 用在 Fork 工作流中。小團隊中的開發和向一個開源項目貢獻代碼都可以這樣做。

Mary 是一位開發者,John 是項目的維護者。他們都有自己公開的 GitHub 倉庫,
John 的倉庫之一便是下面的官方項目。


爲了參與這個項目,Mary 首先要做的是 fork 屬於 John 的 GitHub 倉庫。她需要註冊登錄 GitHub,找到 John 的倉庫,點擊 Fork 按鈕。

選好 fork 的目標位置之後,她在服務端就有了一個項目的副本.

接下來,Mary 需要將她剛剛 fork 的 GitHub 倉庫克隆下來.她在本地會有一份項目的副本。她需要運行下面這個命令:

git clone https://github.com/user/repo.git

請記住,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

開始

  1. git clone http://git-server/guqiang/test.git將自己的repo克隆到本地。
  2. cd test進入工作目錄
  3. git remote add upstream http://git-server/YCODE_DOMIN/test.git添加遠端原始repo

原始repo做了更改,本地做了更改並且commit

  1. git fetch upstream然後,git rebase upstream/master
  2. git push origin master將所有更新推到自己的遠端repo

注意

在同步原始遠端repo的時候,如果本地有未commit或者stash的,需要先commit或者stash,不然git會提示你讓你這麼做。

Paste_Image.png

總的來說

三個命令:

  • git remote add upstream "原始repo"
  • git fetch upstream
  • git rebase upstream/master

清理歷史

1.Checkout

   git checkout --orphan latest_branch

2. Add all the files

   git add -A

3. Commit the changes

   git commit -am "commit message"


4. Delete the branch

   git branch -D master

5.Rename the current branch to master

   git branch -m master

6.Finally, force update your repository

   git 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'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章