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