-----------------------------------------------本地-----------------------------------------------
git config --global user.name "Your Name" ? ? ? ? ? ?【配置你的github用戶名】
git config --global user.email "email@example.com" ? 【配置你的github郵箱】
git config --global color.ui true ? ? ? ?【提示高亮】
git config --global alias.st status ? ? 【簡化命令】
mkdir mygit ?【新建一個文件】
cd mygit ? ? 【去到當前文件】
git init ? ? 【創(chuàng)建一個版本庫】
git add one.txt ? ? ? ? ? 【創(chuàng)立一個工作區(qū); (空格之間添加多個文件)】--all
git commit -m"描述文字" ? 【提交到版本庫+版本信息】
git remote add origin git@github.com:you/you.git 【新建并提交到一個自己的遠程庫】
git status ? ? ? ? ? ? ? ?【檢查文件是否被修改過】
git diff ? ? ? ? ? ? ? ? ? ? 【查看被修改過內容】
git log ? ? ? ? ? ? ? ? ? ?【查看提交日志】
git reflog ? ? ? ? ? ? ? ?【查看所有編寫過的命令】
git reset --hard HEAD^ ? ?【返回上一個版本】
git reset --hard (版本id) 【穿梭】
cat xxx.txt ? ? ? ? ? ? ? ? ? ? ?【查看文件內容】
vi ?xxx.txt ? ? ? ? ? ? ? ? ? ? ? 【編輯】
wq ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【退出】
git checkout -- 文件名 ? ?【撤銷修改】
git checkout . 【恢復上一個commit的所有文件到工作區(qū)】
【刪除commit】
git reset --hard~2
git push --force
【修改commit信息】(還沒push的情況)
git commit --amend -m "xxxxxx"
gitignore規(guī)則不生效的解決辦法
【刪除本地緩存】
git rm -r --cached .?
git add .
git commit -m 'update .gitignore'
-----------------------------------------------github-----------------------------------------------
ssh-keygen -t rsa -C "729494296@qq.com" ? ? ? ? ? ? ? ? ? ? ? 【創(chuàng)建遠程倉庫秘鑰】
創(chuàng)建完后會有.shh文件夾,里面有id_rsa和id_rsa.pub這兩個文件
id_rsa是公開的公鑰,id_rsa.pub是自己的秘鑰
打開id_rsa.pub 復制全部內容
登陸github.com 在SSH Keys里的 填上title和key
在本地輸入
git remote add origin git@github.com:zhenbinjing/(項目名).git 【建立鏈接通信】
git push -u origin master ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【將本地的所有文件上傳上去制跟。 第一次要加 -u】
git push origin master ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【以后有新文件直接上傳。不加-u了 (推送分支)】
當你第一次使用Git的clone或者push命令連接GitHub時句惯,會得到一個警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
輸入yes 就可以了
git clone git@github.com:zhenbinjing/(項目名).git ? ? ? ? ?【從遠程復制到本地】
當下載的文件過大的時候會報錯镐捧,這時就要設置文件大小
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed;curl 56 Recv failure: Connection reset by peer
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
git config --global http.postBuffer 524288000
-----------------------------------------------分支-----------------------------------------------
master分支一般不干活的,主要用來發(fā)布版本的循诉,所以我們開發(fā)的時候會新建一個分支横辆,專門去寫代碼的,分支可以用來區(qū)分不同類型的代碼茄猫,例如增加新功能的狈蚤,有bug的,等等
git checkout -b xxx ? ?【創(chuàng)建并且切換到當前分支中】
git branch xxx ? ? ? ? ? ?【查看當前分支】
git checkout xxx ? ? ? ?【切換分支】
git merge xxx ? ? ? ? ? ?【當前分支與xxx分支合并】
git branch -d xxx ? ? ? 【刪除本地xxx分支】
git push origin --delete xxx【刪除遠程xxx分支】
分支與主分支合并沖突的時候划纽,文件有<<<<<<<脆侮,=======,>>>>>>>標記出不同分支的內容勇劣,要手動去更改文件靖避,然后add commit
git log --graph ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【查看分支合并圖(詳細)】
git log --graph --pretty=oneline --abbrev-commit ?【查看分支合并圖(精簡)】
git默認是Fast forward模式,在主干上合并分支比默,如果刪除dev分支,是看不見dev分支上的commit,會丟掉分支信息的幻捏。
git merge --no-ff -m "merge with no-ff" dev ? ? ? ? ?【不在Fast forward情況下,進行與dev分支合并退敦,并(保留dev下的commit)寫入信息】--no-ff
git merge --squash dev ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【當前分支把dev分支上的所有commit 歸納到一個commit描述】
git stash ? ? ? ? ? ? ? ? 【保存當前工作區(qū)的內容】
git stash list ? ? ? ? ? 【查看工作區(qū)保存的地方】
git stash apply ? ? ? 【恢復工作區(qū)內容】
git stash drop ? ? ? ?【刪除工作區(qū)】
git stash pop ? ? ? ? 【恢復工作區(qū)內容后同時刪除工作區(qū)】
git stash pop = git stash apply + git stash drop
-----------------------------------------------多人協(xié)作-----------------------------------------------
git remote ? ? ? ? ? ?【查看遠程庫的信息(遠程倉庫的默認名稱是origin)】
git remote -v ? ? ? ? 【查看遠程庫更詳細的信息(是否有推送的權限)】
git push origin xxx ? 【推送xxx分支】
【這是在別人的項目中】
一般在別人的項目下載下來后只能看到本地的master分支粘咖,所以我們要創(chuàng)建一個自己的分支。例如:
git checkout -b dev origin/dev
寫完后(add commit)?
git push origin dev
【這是在自己的項目中】
自己開發(fā)完成后侈百,發(fā)現(xiàn)提交沖突了瓮下,會有好多hint信息,例如:
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
推送失敹塾颉:是因為貢獻者比你提交早讽坏,又在同一行代碼上有沖突。
第一步:
git pull 【把最新的提交從(別人的分支)抓下來】
如果抓取也失敗了例证,是因為貢獻者建立了他的分支路呜,而你本地又沒有這個分支
如果你不知道別人的分支路徑,git是會告訴你,例如其中兩行和最后一行织咧,例如:
From github.com:michaelliao/learngit
fc38031..291bea8 ?dev ? ? ? ?-> origin/dev
git branch --set-upstream dev origin/
那行我們在本地建立對應的分支就可以了胀葱,例如:
git branch --set-upstream dev origin/dev
然后再 git pull 就可以看到?jīng)_突的文件了。?
Auto-merging 文件名
CONFLICT (content): Merge conflict in 文件名
Automatic merge failed; fix conflicts and then commit the result.
這是已經(jīng)pull 成功了
第二步:
修改沖突的文件笙蒙,然后(add commit)
git push origin dev?
這時應該可以推送成功了
-----------------------------------------------tag-----------------------------------------------
git tag ? ? ? ? 【創(chuàng)建標簽】
git tag 標簽名 版本號 ?例如:
git tag v1.0 af1684d
git tag -d xxx ?【刪除標簽xxx】
git tag -d v1.0
git show v1.0 ? 【查看v1.0對應的版本號等信息】
創(chuàng)建帶有說明的標簽抵屿,用-a指定標簽名,-m指定說明文字,例如:
git tag -a v0.1 -m "version 0.1 released" af1684d
git push origin v1.0 ?【推送一個標簽】
git push origin --tags 【推送所有標簽】
【刪除遠程標簽】
首先要在本地刪除標簽捅位,然后再push
git tag -d v0.9
git push origin :refs/tags/v0.9