1. 創(chuàng)建SSH key
ssh-keygen -t rsa -C "youremail@example.com"
2. 更新代碼
git pull
git fetch 沒(méi)有merge的pull 沒(méi)用過(guò)這個(gè),不知道好用不
3. 添加文件
git add . 暫存新增的和修改的文件,不包括已刪除的文件(僅限當(dāng)前目錄以及子目錄)
git add -u 暫存修改的和刪除的文件,不包括新增的文件
git add -A 暫存所有文件,包括新增的,修改的,已刪除的文件
git add -p 暫存一部份,會(huì)一直提示(y/n)選擇是否暫存,很麻煩
4. 提交文件
git commit -m “本次提交說(shuō)明” (這里如果不加-m 會(huì)強(qiáng)制跳轉(zhuǎn)到編輯器,在里邊第一行填寫(xiě),然后保存即可)
git commit -am “本次提交說(shuō)明” (add 和commit的結(jié)合體,,省略了add步驟)
***下面這個(gè)命令盡量不要使用或者只有自己開(kāi)發(fā)的時(shí)候,否則會(huì)給隊(duì)友帶來(lái)災(zāi)難(臥槽明明更新了的,怎么沒(méi)了??????)
git commit --amend -m“本次提交說(shuō)明” (重新提交,最終只會(huì)有一次提交,第二次的提交會(huì)覆蓋第一次的提交結(jié)果,適用于提交完了才發(fā)現(xiàn)有幾個(gè)文件沒(méi)有添加或者提交信息填寫(xiě)錯(cuò)誤的情況)
git commit -p (提交一部分代碼,需要手動(dòng)確認(rèn)是否提交 y/n)
5.推送到遠(yuǎn)程分支
git push origin 分支 推送本地當(dāng)前分支到遠(yuǎn)程對(duì)應(yīng)分支(通常是master)
git push origin 本地分支:遠(yuǎn)程分支(指定提交的本地分支和遠(yuǎn)程分支)
6.本地分支與遠(yuǎn)程分支建立關(guān)聯(lián)
git branch --set-upstream 分支 origin/分支
這個(gè)命令,可以建立本地分支與遠(yuǎn)程分支的聯(lián)系,以后在push的時(shí)候不用每次都指定分支到了,即直接輸入 git push,省略了origin 分支
7.git忽略某些文件
忽略規(guī)則
以斜杠“/”開(kāi)頭表示目錄;
以星號(hào)“*”通配多個(gè)字符;
以問(wèn)號(hào)“?”通配單個(gè)字符
以方括號(hào)“[]”包含單個(gè)字符的匹配列表;
以嘆號(hào)“!”表示不忽略(跟蹤)匹配到的文件或目錄;
一般情況下,我們應(yīng)該在創(chuàng)建項(xiàng)目之前,建好忽略文件,忽略掉應(yīng)該忽略的文件;
但是,有時(shí)候我們需要臨時(shí)添加一些忽略文件,這個(gè)時(shí)候就需要修改 .gitignore文件,以為該文件已經(jīng)被git追蹤,所以我們還要從git版本控制器中將其移除,用下面的命令:
git rm --cached 文件名 或者 git rm --cached -r 文件夾 (-r 表示遞歸)
注意:這樣會(huì)將該文件從git倉(cāng)庫(kù)移除,所以開(kāi)發(fā)人員都做好備份
使用完此命令后,我們需要將修改后的.gitignore和刪除的這個(gè)文件,一并push到git遠(yuǎn)程倉(cāng)庫(kù),然后所有開(kāi)發(fā)人員做好自己的備份,然后pull更新,
這樣更新下來(lái)會(huì)將該文件刪除掉,,然后我們需要自己將備份的文件拷貝進(jìn)項(xiàng)目,以后該文件就不會(huì)再被git追蹤了.以后修改該文件,需要復(fù)制粘貼給大家了.
可能有點(diǎn)麻煩,但是我理解的就是這樣的了.
8.其他一般用得著的指令
*設(shè)置一些快捷指令
git config --global alias.st status 使用git st 代替 git status 命令
git config --global alias.co checkout 使用git co 代替git checkout命令
git config --global alias.ci commit 使用git ci 代替 git commit命令
以此類(lèi)推
*其他的一些設(shè)置
git config -l 或 git config --list 列舉所有g(shù)it的配置
git config --global color.ui true 讓git顯示顏色,
設(shè)置commit中的姓名和email,去掉 --global參數(shù)則為針對(duì)每個(gè)repo單獨(dú)設(shè)定姓名和郵箱
git config --global user.name "your name"
git config --global user.email "your email"
大小寫(xiě)問(wèn)題:
git config core.ignorecase false (不推薦)關(guān)閉git忽略大小寫(xiě)配置,即可檢測(cè)到大小寫(xiě)名稱(chēng)更改
如果遇到大小寫(xiě)問(wèn)題(保證core.ignorecase true) 調(diào)用git mv ABC.java Abc.java (git status 提示 renamed: ABC.java -> Abc.java)commit push 即可
core.ignorecase不為true,同事更新的時(shí)候會(huì)提示(error: The following untracked working tree files would be overwritten by merge:.......),改為false即可
總結(jié):
--global 全局 --local 本倉(cāng)庫(kù)
增配置 git config --global --add configName configValue
刪配置 git config --global --unset configName (只針對(duì)存在唯一值的情況)
改配置 git config --global configName configValue
查配置 git config --global configName
git log -n 僅顯示最近n條提交
git log -p filename 查看文件的每一個(gè)詳細(xì)的歷史修改,如果沒(méi)有-p選項(xiàng),只顯示提交記錄,不顯示文件內(nèi)容修改,git log -p -3 filename 顯示最近的3次提交。
以下內(nèi)容,為日志顯示的常用參數(shù)
-p
按補(bǔ)丁格式顯示每個(gè)更新之間的差異。
--stat
顯示每次更新的文件修改統(tǒng)計(jì)信息。
--shortstat
只顯示 --stat 中最后的行數(shù)修改添加移除統(tǒng)計(jì)。
--name-only
僅在提交信息后顯示已修改的文件清單。
--name-status
顯示新增、修改、刪除的文件清單。
--abbrev-commit
僅顯示 SHA-1 的前幾個(gè)字符,而非所有的 40 個(gè)字符。
--relative-date
使用較短的相對(duì)時(shí)間顯示(比如,“2 weeks ago”)。
--graph
顯示 ASCII 圖形表示的分支合并歷史。
--pretty
使用其他格式顯示歷史提交信息??捎玫倪x項(xiàng)包括 oneline,short,full,fuller 和 format(后跟指定格式)。
9.對(duì)于android項(xiàng)目,git需要忽略的文件
- .idea 文件夾
- .gradle 文件夾
- 所有的 build 文件夾
- 所有的 .iml 文件
- local.properties 文件
10.特殊操作(慎用)
1)
git clean 參數(shù)
-n -----顯示將要?jiǎng)h除的文件和目錄;
-x -----刪除忽略文件已經(jīng)對(duì)git來(lái)說(shuō)不識(shí)別的文件
-d -----刪除未被添加到git的路徑中的文件
-f -----強(qiáng)制運(yùn)行
2)
git mv -f [你想要?jiǎng)h掉的文件] [你想要留下的文件]
git mv -f a.js A.js
等同于:
git rm a.js
git add A.js