提供練習的Demo地址:Demo項目地址
1、Git本地操作流程
修改工作區中文件(創建或編輯文件)->保存到暫存區(git add .
或git add fileName
)->提交到本地倉庫(git commit -m 'commit description'
)。
2、Git基本配置
設置全局的用戶信息:
git config --global user.name "名字"
git config --global user.email "郵箱地址"
將
--global
去掉,可以為單個項目設置用戶信息。
3、本地倉庫操作
-
操作流程
- 創建新倉庫
- 創建、刪除、修改文件
- 緩存文件
- 提交文件到本地
- 反復2-4步驟。
mkdir gitTest 創建gitTest文件夾 cd gitTest git init 初始化git倉庫 vi README.md 創建README.md文件 git add . 添加到暫存區 git commit -m '創建README.md文件'
-
git log
查看提交歷史日志 -
git status
查看提交狀態 -
git reset HEAD file
取消暫存區的文件 -
git commit —amend
修改上一次提交 -
git commit --amend --author='new_user_name <new@example.com>'
修改最后一次提交的用戶名和郵箱 -
git checkout file
撤銷對工作區修改;這個命令是以最新的存儲時間節點(add和commit)為參照,覆蓋工作區對應文件file;這個命令改變的是工作區。
4、遠程倉庫操作
1、克隆遠程倉庫
-
git clone <url>
克隆遠程倉庫該命令會在本地主機生成一個目錄,與遠程主機的版本庫同名。如果要指定不同的目錄名,可以將目錄名作為git clone命令的第二個參數。
-
git clone <url> <本地目錄名>
克隆遠程倉庫且指定本地目錄名 -
git remote
列出所有遠程主機 -
git remote -v
查看遠程主機的網址 -
git clone -o <hostname> <url>
克隆的時候,指定遠程主機名為hostname克隆版本庫的時候,遠程主機自動被Git命名為origin。如果想用其他的主機名,需要用git clone命令的
-o
選項指定。 -
git remote show <origin>
查看origin主機的詳細信息 -
git remote add <主機名> <url>
添加遠程主機 -
git remote rm <主機名>
刪除遠程主機 -
git remote rename <原主機名> <新主機名>
重命名遠程主機 -
git fetch <遠程主機名>
將某個遠程主機的更新,全部取回本地 -
git fetch <遠程主機名> <分支名>
取回特定分支的更新,可以指定分支名
2、分支操作
-
git branch
查看本地所有分支 -
git branch -a
查看所有的分支 -
git branch -r
查看遠程所有分支 -
git checkout -b newBranch origin/master
在origin/master的基礎上,表示創建+切換到新分支git checkout
加上-b
參數相當于:- git branch newBranch
- git checkout newBranch
-
git branch newBranch
創建新分支 -
git checkout newBranch
切換到本地newBranch分支 -
git branch -d newBranch
刪除newBranch分支(需先切換到其他分支才能刪除) -
git branch -m Dev Develop
重命名分支Dev為Develop -
git merge origin/master
在本地分支上合并遠程分支 -
git rebase origin/master
在本地分支上合并遠程分支
3、git pull(取回遠程主機某個分支的更新,再與本地的指定分支合并)
-
git pull <遠程主機名> <遠程分支名>:<本地分支名>
git pull origin next:master
取回origin主機的next分支,與本地的master分支合并git pull origin next
取回origin/next分支,再與當前分支合并,相當于git fetch
,再git merge
git fetch origin
git merge origin/next
-
git branch --set-upstream master origin/next
指定master分支追蹤origin/next分支手動建立追蹤關系,當前分支與遠程分支存在追蹤關系,git pull就可以省略遠程分支名。
-
git pull origin
本地的當前分支自動與對應的origin主機”追蹤分支”(remote-tracking branch)進行合并如果當前分支只有一個追蹤分支,連遠程主機名都可以省略。
-
git pull
當前分支自動與唯一一個追蹤分支進行合并 -
git pull --rebase <遠程主機名> <遠程分支名>:<本地分支名>
如合并需要采用rebase模式,可以使用--rebase
選項
4、git push(將本地分支的更新,推送到遠程主機)
-
git push <遠程主機名> <本地分支名>:<遠程分支名>
- 注意,分支推送順序的寫法是<來源地>:<目的地>,所以git pull是<遠程分支>:<本地分支>,而git push是<本地分支>:<遠程分支>。
- 如果省略遠程分支名,則表示將本地分支推送與之存在”追蹤關系”的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。
-
git push origin master
將本地的master分支推送到origin主機的master分支。如果后者不存在,則會被新建。 -
git push origin :master
等同于git push origin --delete master
表示刪除origin主機的master分支。如果省略本地分支名,則表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支。
-
git push origin
將當前分支推送到origin主機的對應分支如果當前分支與遠程分支之間存在追蹤關系,則本地分支和遠程分支都可以省略。
-
git push
如果當前分支只有一個追蹤分支,那么主機名都可以省略- 不帶任何參數的git push,默認只推送當前分支,這叫做simple方式。
- 此外,還有一種matching方式,會推送所有有對應的遠程分支的本地分支。
- Git 2.0版本之前,默認采用matching方法,現在改為默認采用simple方式。
- 如果要修改這個設置,可以采用git config命令。
git config --global push.default matching
或者:
git config --global push.default simple
-
git push -u origin master
將本地的master分支推送到origin主機,同時指定origin為默認主機如果當前分支與多個主機存在追蹤關系,則可以使用-u選項指定一個默認主機,這樣后面就可以不加任何參數使用git push。
-
git push --all origin
將所有本地分支都推送到origin主機不管是否存在對應的遠程分支,將本地的所有分支都推送到遠程主機,這時需要使用
--all
選項。 -
git push --force origin
使用--force
選項,結果導致在遠程主機產生一個”非直進式”的合并(non-fast-forward merge)。除非你很確定要這樣做,否則應該盡量避免使用--force
選項。 -
git push origin --tags
git push不會推送標簽(tag),除非使用--tags
選項。
5、git tag(查看現有所有標簽)
-
git tag -l 'V0.1.*'
顯示符合條件的Tag標簽 -
git tag -a V1.0.2 -m 'my version is V1.0.2, Debug environment'
新建含備注的標簽標記當前HEAD使用git tag命令。標記名稱(版本)前加上-a選項,使用-m選項,并提供標簽備注信息。
-
git tag -a v1.2.0 <commitId>
給指定的commit打Tag,commitId可通過git log
獲取 -
git show V1.0.2
顯示標簽詳情 -
git push origin --tags
提交標簽 -
git tag -d V1.0.2
刪除本地指定tag -
git push origin :refs/tags/tagVersion
刪除遠程主機tag
git tag分為兩種類型:輕量tag和附注tag。
git tag v0.1.2-light
創建輕量Taggit tag -a v0.1.2 -m '0.1.2版本'
創建附注Tag
輕量tag是指向提交對象的引用,附注Tag則是倉庫中的一個獨立對象。建議使用附注Tag。
6、非常用命令
git checkout --track origin/dev 切換到遠程dev分支
git rm 文件名(包括路徑) 從git中刪除指定文件
git config --list 看所有用戶
git ls-files 看已經被提交的
git rm [file name] 刪除一個文件
git commit -a 提交當前repos的所有的改變
git commit -v 當你用-v參數的時候可以看commit的差異
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git diff 查看尚未暫存的更新
git rm a.a 移除文件(從暫存區和工作區中刪除)
git rm --cached a.a 移除文件(只從暫存區中刪除)
git rm -f a.a 強行移除修改后文件(從暫存區和工作區中刪除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 將文件給push到一個臨時空間中
git stash pop 將文件從臨時空間pop下來