Git命令操作指南
Git全局設置
git config --global user.name "sangang"
git config --global user.email "[email protected]"
推送現有文件夾(項目)到Git遠程倉庫
# 切換到我們的項目目錄下
cd spider-service
# 初始化git
git init
# 添加遠程倉庫並命名爲origin
git remote add origin http://gitlab.com/sangang/spider-service.git
# 列出遠程倉庫詳細信息
git remote -v
# 添加所有修改的和新建到數據暫存區
git add .
# 提交文件到本地庫
git commit -m "Initial commit"
# 查看遠程的分支名
git branch -r
# 提交文件到遠程庫master分支,-u參數指定主機
git push -u origin master
創建一個新的倉庫
# 克隆工程
git clone http://gitlab.com/sangang/spider-service.git
# 切換到工程
cd spider-service
# 創建文件
touch README.md
# 添加文件README.md到數據暫存區
git add README.md
# 提交到本地倉庫
git commit -m "add README"
# 推送到遠程倉庫master分支,-u參數指定主機
git push -u origin master
推送現有的Git存儲庫
# 切換到工程
cd spider-service
# 遠程倉庫重命名
git remote rename origin old-origin
# 添加新的遠程倉庫並命名爲origin
git remote add origin http://gitlab.com/sangang/spider-service.git
# 列出遠程倉庫詳細信息
git remote -v
# 將本地的所有分支都推送到遠程主機,-u參數指定主機
git push -u origin --all
# git push的時候不會推送標籤,如果一定要推送標籤的話那麼可以使用這個命令
git push -u origin --tags
Git branch
查看分支:git branch
創建分支:git branch <name>
切換分支:git checkout <name>
或者git switch <name>
創建+切換分支:git checkout -b <name>
或者git switch -c <name>
合併某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
Git push
在使用git commit命令將修改從暫存區提交到本地版本庫後,只剩下最後一步將本地版本庫的分支推送到遠程服務器上對應的分支了。
git push的一般形式爲 git push <遠程主機名> <本地分支名> <遠程分支名> ,例如 git push origin master:refs/for/master ,即是將本地的master分支推送到遠程主機origin上的對應master分支, origin 是遠程主機名,第一個master是本地分支名,第二個master是遠程分支名。
1、git push origin master
如果遠程分支被省略,如上則表示將本地分支推送到與之存在追蹤關係的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。如果當前分支與多個主機存在追蹤關係,則可以使用 -u 參數指定一個默認主機
2、git push origin :refs/for/master
如果省略本地分支名,則表示刪除指定的遠程分支,因爲這等同於推送一個空的本地分支到遠程分支,等同於 git push origin --delete master
3、git push origin
如果當前分支與遠程分支存在追蹤關係,則本地分支和遠程分支都可以省略,將當前分支推送到origin主機的對應分支
4、git push
如果當前分支只有一個遠程分支,那麼主機名都可以省略,形如 git push,可以使用git branch -r ,查看遠程的分支名
5、git push -u origin --force
git push前需要先git pull更新最新的遠程倉庫版本到本地,如果本地版本庫比遠程服務器上的低,那麼一般會提示你git pull更新,如果要強制提交,可以使用這個命令。
6、關於 refs/for
refs/for 的意義在於我們提交代碼到服務器之後是需要經過code review 之後才能進行merge的,而refs/heads 不需要