1、初始化
用戶
$ git config --global user.email "your email" $ git config –-global user.name "your name"
2、秘鑰
查看是否存在秘鑰
$ ls -al ~/.ssh
id_rsa 是私鑰,id_rsa.pub 是公鑰
id_rsa.pub 是你需要上傳到 github 的 SSH KEY
生成秘鑰
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
3、本地庫和遠程庫
①已創建有遠程庫,未創建本地庫
$ git clone "your repo"
②已創建本地庫,未創建遠程庫
1. 新建文件夾 $ mkdir test 2. 初始化 git $ git init 3. 移除原有的 origin $ git remote rm origin 4. 添加你的遠程庫(SSH地址) $ git remote add origin "your remote repo" 5. 更新本地庫 $ git pull 6. 首次推送與遠程庫建立關聯,以后直接 git push 就可以 $ git push --set-upstream origin master
4、分支操作
查看、新建、切換、刪除分支
查看當前所在分支 $ git branch 查看所有分支 $ git branch -a 查看遠程庫信息 $ git remote -v 新建分支 $ git branch "new branch" 切換分支 $ git checkout "target branch" 新建並切換到新分支 $ git checkout -b "new branch" 新建分支並和遠程分支進行關聯 $ git checkout -b "new branch" origin/"new branch" 合並分支到當前所處分支上 $ git merge "your branch" 刪除分支 $ git branch -d "your branch" 強制刪除未 commit 的分支 $ git branch -D "your branch"
5、正常流程
查看當前工作區狀態 $ git status 添加單個文件到暫存區 $ git add xxx.txt 一次性添加所有改動文件 $ git add . 提交文件到本地版本庫 $ git commit -m "I add a file." 推送本地更新到遠程版本庫 $ git push 本地庫關聯遠程庫 $ git push --set-upstream origin master
6、對比文件
工作區和暫存區之間差異對比 $ git diff "xxx.txt" 暫存區和版本庫之間差異對比 $ git diff --cached(--staged) "xxx.txt" 工作區和版本庫之間差異對比 $ git diff master
7、查看歷史提交記錄
$ git log
8、版本回退
HEAD 是最新版本,HEAD^ 是上一個版本 $ git reset --hard HEAD^ 回退到指定id,git log 查看版本id,版本id不用全部輸入,取頭幾位就可以 $ git reset –hard cb926e7e
9、撤銷工作區修改
使用版本庫中的文件或者暫存區中的文件替換工作區的文件 讓文件回到最近一次 git commit 或 git add 時的狀態 $ git checkout -- "xxx.txt"
10、刪除文件
刪除工作區中的文件 $ rm "xxx.txt" 提交刪除操作到暫存區 $ git rm "xxx.txt" 提交刪除到版本庫,在版本庫中徹底刪除文件 $ git commit -m "remove file"
11、分支管理策略
在實際開發中,我們應該按照幾個基本原則進行分支管理:
master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面干活
developer分支用來干活,也就是說,developer分支是不穩定的,到某個時候,比如1.0版本發布時,再把developer分支合並到master上,在master分支發布1.0版本
你和你的小伙伴們每個人都在developer分支上干活,每個人都有自己的分支,時不時地往developer分支上合並就可以了
所以,團隊合作的分支看起來就像這樣:

12、儲藏工作現場
修復bug時,我們會通過創建新的bug分支進行修復,然后合並,最后刪除;
當手頭工作沒有完成時,先把工作現場git stash一下,然后去修復bug,修復后,再git stash pop,回到工作現場
儲存工作現場
$ git stash
工作現場列表
$ git stash list
恢復但不刪除儲藏棧的工作現場
$ git stash apply
恢復並刪除儲藏棧中的工作現場
$ git stash pop
13、多人協作工作模式
試圖用git push origin branch-name推送自己的修改
如果推送失敗,則因為遠程分支比你的本地更新,需要先用git pull試圖合並
如果合並有沖突,則解決沖突,並在本地提交
沒有沖突或者解決掉沖突后,再用git push origin branch-name推送就能成功
14、創建 .gitignore
在 git 工作區根目錄下創建 .gitignore 文件,把要忽略的文件名寫進去,git 就會自動忽略這些文件
15、創建別名
給 status 創建別名 st
$ git config --global alias.st status
16、git 配置文件
配置文件放在 ~/.gitconfig
17、git fetch 和 git pull 區別
要講清楚這兩個命令的區別,就需要從git clone開始講起
假設你在github上有一個遠程倉庫地址是xxx,然后你從遠程倉庫clone到本地倉庫
$ git clone xxx 執行完此命令后:
①Git會自動為你將遠程倉庫命名為origin,並下載其中所有的數據到本地;
②在本地建立所有遠程存在的分支,並且命名為origin/xxx,例如遠程分支有master、developer,那么本地就會建立origin/master分支、origin/developer分支,並且它們都是處於remotes目錄下,是隱藏的。使用命令git branch -a就可以看到隱藏目錄remotes,結果顯示為remotes/origin/master以及remotes/origin/developer。
③接着,Git會繼續建立一個屬於你的本地master和developer分支,位置和遠程origin/master、origin/developer分支處於相同的位置,你就可以開始工作了。 這樣,我們在本地倉庫的本地分支和遠程分支就都有了,並且始於同一位置。
如果其他人向github上xxx分支推送了他們的更新,那么服務器上的相應分支就會向前推進。
如果在本地的相應分支進行了commit提交到本地代碼庫,那么本地的master或者developer分支也會向前推進,不過只要你不和服務器通信數據,那么本地的remotes/origin/master(developer)指針仍然會在原地不動。
$ git fetch origin
運行git fetch origin命令后,會同步遠程服務器上的數據到本地;
該命令首先找到origin是哪個服務器,從上面獲取你未曾擁有的數據,更新到你的本地remotes/origin/master(developer),然后把remotes/origin/master(developer)的指針移動到最新的位置上:
比較本地 master 分支和 origin/master 分支有什么區別
$ git log master..origin/master 切換到本地 master 分支下 $ git checkout master 合並 origin/master 分支到本地 master 分支 $ git merge origin master
git pull 相當於 git fetch origin 和 git merge git fetch 相當於先將服務器上的 origin 分支更新到本地 remotes/origin 分支上,然后手動去 merge 合並 origin 分支到本地分支上 這就是 git pull 和 git fetch 的區別
18、git 刪除未跟蹤文件
刪除未跟蹤文件 $ git clean -f 刪除未跟蹤文件目錄 $ git clean -fd 正式刪除文件以前先查看哪些會被刪除 $ git clean -nf $ git clean -nfd
19、在本地刪除遠程已經沒有的分支
$ git fetch -p origin
20、重命名本地分支
$ git branch -m old-local-branch-name new-local-branch-name
21、刪除遠程分支
$ git push origin :old-remote-branch-name
22、本地分支與遠程分支建立關聯(遠程分支不存在也可以)
切換到本地分支 $ git checkout local-branch push 到想要建立關聯的遠程分支 $ git push -u origin/remote-branch
23、重新跟蹤遠程文件
先刪除遠程文件 $ git remote rm origin 跟蹤新遠程文件 $ git remote add origin https://xxx.git 或者合並成一條命令 $ git remote origin set-url https://xxx.git
