TAGS: 工具使用
終于要敢寫寫東西了,歡迎指正!!!
一點點重要的Tip
所有的版本控制系統,只能跟蹤文本文件的改動。媒體文件內容不能追蹤,只能追蹤媒體文件屬性,如大小、時間等。
創建SSH連接Github
The authenticity of host 'github.com (192.30.253.113)' can't be established.RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
啥?操作半天你說不能建立···一步步來的,哪兒錯老嘛!!!于是no
。殊不知這里不用管,直接yes
就到下一步,然后就等著成功就對了。! _ !
前期配置Git
1. 查看配置
git config --list
:列出當前配置項
重點關注name
和email
。
2. 修改配置
git config --global user.name Github用戶名
git config --global user.email Github注冊郵箱
使用
首先在Github
新建一個代碼倉MyReponsitory
。記得選取.gitignore
。接下來:
1. 推薦直接拉取服務器代碼倉
git clone git@github.com:Github用戶名/代碼倉名.git
2. 要么本地創建代碼倉,再push
到Github
-
cd
到根目錄 -
git init
初始化本地目錄為代碼倉。 -
git add . 或具體文件名.
git開始追蹤本地文件。 -
git status
查看是否還有未提交的修改 -
git commit -m 描述
提交此次修改 -
git remote add origin git@github.com:用戶名/代碼倉名.git
把本地倉與Github遠程倉庫關聯 -
git pull origin master --allow-unrelated-histories
將服務器數據先拉取到本地。 -
git push -u origin master
將本地更改推送到遠程服務器。
最好還是先從服務器clone一個版本倉下來,然后往里面加東西,直接add
后commit
就行了。
3. 修改了文件內容
git status
: 查看文件狀態
staged:文件被暫存(commit了)
modified, unstaged:文件被修改了但是沒有被暫存
untracked:文件沒有被跟蹤
commit
或push
前檢查一下,總是個好習慣。
git pull
: 從服務器拉取最新的版本。push
前總是保持本地倉和服務器一致,本地倉出問題好過服務器版本出問題,畢竟解決本地倉的沖突要容易的多。
git commit
: 提交最新修改內容,盡量簡潔概括并包含你所有修改部分。
git push
: 記住一定要先pull
,上一步commit
時沒做,此時也一定要做。
4. 添加.gitignore
vi .gitignore
或者用文本編輯器打開(前提是要顯示隱藏文件)。在文件最后添加
# mac系統下用于存儲當前文件夾的一些Meta信息,不需要。
*.DS_Store
# 忽略pods項目中的xcworkspace, 使用了CocoaPods,只需要上傳Podfile即可。
*.xcuserstate
UserInterfaceState.xcuserstate
# * 通配符;表示不對后綴.xcworkspace的所有文件追蹤
*.xcworkspace/
# / 目錄; 表示對所有名為xcuserdata的目錄及其下文件不追蹤
xcuserdata/
UserInterface.xcuserstate
# 忽略Pods
Pods/
Podfile.lock
但是有時可能遇到.gitignore
失效的情況,這種可能是因為已經commit
了。對已經添加版本控制的文件再加入.gitignore
是無效的,此時需要刪除下緩存。
// 刪除前總是先看一下清單,免得誤刪
git rm -n –cached 需要忽略的文件(夾)
// 執行刪除
git rm -r –cached 需要忽略的文件(夾)
// 告知服務器
git commit -m 刪除xx以移除版本控制
git push
這種方式也可以用來將指定文件(夾)移除版本控制。
想要移除本地文件版本控制?sudo rm -R .git
即可
注意: .gitignore只能忽略那些原來沒有被track的文件。
6. 遇到的問題
- Github中文件夾不能進入,不可用。使用
git status
看到子目錄狀態是untracked
。可能因為子目錄也含有.git
,刪除后回根目錄重新init
一次
-
fatal: refusing to merge unrelated histories
"git merge" used to allow merging two branches that have no common base by default, which led to a brand new history of an existing project created and then get pulled by an unsuspecting maintainer, which allowed an unnecessary parallel history merged into the existing project. The command has been taught not to allow this by default -- @Mark Amery
以前可以直接合并兩個不同項目,現在需要加上--allow-unrelated-histories
。大概是為了防止一個項目的版本歷史被pull
到另一個項目上,導致覆蓋吧!原諒我只能看個淺意。
不過我這里就是要合并,所以執行下面這句。
git pull origin master --allow-unrelated-histories
-
Please make sure you have the correct access rights and the repository exists.
問題已經提示很明顯了,可能是ssh密鑰匹配不上,或者是倉庫名出錯。
前者:執行ssh -v -t git@github.com
檢查連接,匹配不上說明需要重新上傳rsa_pub,詳情戳Github官網
可以通過ssh-keygen -E md5 -lf /Users/yangsong/.ssh/id_rsa.pu
生成秘鑰的md5和Github上的md5直接對比。
后者:就需要檢查你的remote連接了。我就是倉庫地址出錯。可以在終端重新git remote add origin 倉庫地址
或者vi .git/config
,然后修改里面的url。url最好從Github上去復制。


