git用了很久了,github也用很久了,但一直都是使用別人的項目,
最近想把自己寫的一些代碼放到自己的帳號上去
以為就是很簡單的代碼推送,真正做一次時候才發現,原來坑還不少呢,
就把這次的經歷記錄一下
1,首先,准備工作,你得有一個自己的github帳號,其次,你得安裝了git工具,最后你還得有自己的本地項目,
2,在github上創建自己的遠程代碼倉庫
3,下載github客戶端
下載地址:
http://windows.github.com
安裝成功並登錄后如下
4,添加本地目錄到遠程倉庫
在你的本地文件目錄下右擊,就會出現Git Bash選項,點擊進入。
5、設置用戶名和郵箱地址。這兩個值是作為上傳時記錄的值。輸入命令:
git config --global user.name "用戶名" git config --global user.email "郵箱"
設置好后可以用命令查看當前的設置:
git config --global user.name
6、初始化本地倉庫
git init
此目錄下會創建一個.git的文件(此文件可能會隱藏)
7,將該項目納入.git版本控制中
git add .
一定要注意add和.之間是有空格的,否則會報錯的
8,將所有更改放到本地暫存區域,等待上傳。
git commit -m "此次上傳的說明"
9,連接遠程倉庫
git remote add origin "https://github.com/GitHub用戶名/代碼倉庫名稱.git"
可以通過git remote -v 查看本地鏈接到的遠程倉庫
若分支設置錯誤,可以查看后切換分支
【git remote rm origin】 刪除現有遠程倉庫
【git remote add origin url】添加新遠程倉庫
10、從遠程倉庫拉取所有更新(每次上傳項目都要操作)
git pull origin master
注意:此處極易報錯!
因為遠程代碼倉庫和本地代碼倉庫合並后,可能會有沖突,
如有報錯,使用git status查看狀態
本次就出現遠程代碼與本地合並失敗情況
此步先pull,因為兩個倉庫不同,發現refusing to merge unrelated histories,無法pull
因為他們是兩個不同的項目,要把兩個不同的項目合並,git需要添加一句代碼,在git pull,
這句代碼是在git 2.9.2版本發生的,最新的版本需要添加--allow-unrelated-histories
git pull origin master --allow-unrelated-histories
補充:在 git pull origin master --allow-unrelated-histories此步操作時,.gitignore文件錯誤沖突並沒有解決,只是強制合並忽略掉了,
是我覺得.gitignore文件無關緊要沒想去解決
被朋友 發現沒有解決此沖突就跳過就提交,雖然 我這是第一次對遠程倉庫作代碼提交,而沖突的問題又不大才給忽略,
但是這個操作非常不好,在遠程有大量代碼時候,出現此問題,還是不要這樣操作,解決沖突文件再提交,是必須 要做不能忽略的步驟,
另外 ,補充下.gitignore介紹
在工程實現過程中,會生成一些中間文件,或者在項目中的部分文件是不需要進行版本管理的。
對於這些文件應該對於Github來講是透明的。Github提供這種功能,可以自己指定哪些文件可以不被管理。
具體方法是在版本管理的根目錄下(與.git文件夾同級)創建一個 .gitignore(gitignore是隱藏文件,所以前面有個點)
在進行協作開發代碼管理的過程中,常常會遇到某些臨時文件、配置文件、或者生成文件等,
這些文件由於不同的開發端會不一樣,如果使用git add . 將所有文件納入git庫中,那么會出現頻繁的改動和push,這樣會引起開發上的不便。
Git可以很方便的幫助我們解決這個問題,那就是建立項目文件過濾規則。
Git可以很方便的幫助我們解決這個問題,那就是建立項目文件過濾規則。git中提供兩種過濾機制,
一種是全局過濾機制,即對所有的git都適用;
另一種是針對某個項目使用的過濾規則。
例如:
# 此為注釋 ,將被 Git 忽略 # 忽略所有 .a 結尾的文件 *.a # 但 lib.a 除外 !lib.a # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO /TODO # 忽略 build/ 目錄下的所有文件 build/ # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt doc/*.txt # 會忽略掉 doc/ 里面所有的txt文件,包括子目錄下的(**/ 從 Git 1.8.2 之后開始支持 **/ 匹配模式,表示遞歸匹配子目錄下的文件) doc/**/*.txt local.properties #過濾具體文件 !local.properties#添加具體文件 *.[oa]#忽略所有以 .o 或 .a 結尾的文件
因為git是分布式管理,所以盡量不要在master主分支上作開發,
例如自己有一個項目,在外面開發時,可以使用分支1,在家開發時可以使用分支2,如果有其他人參入 ,分別 使用分支3,4,5
每次提交本地代碼時候,先合並遠程master主分支到本地,再提交
1.創建本地分支
git branch 分支名
git add . git commit -m ‘dev' git push -u origin dev
合並本地分支到master
git checkout master git pull origin master git merge origin/master //合並分支 git status
On branch master Your branch is ahead of 'origin/master' by 12 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean
上面的意思就是你有12個commit,需要push到遠程master上
執行下面命令即可
git push origin master