git流程

安裝完成後,在命令行輸入:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

選中一個不帶中文的文件變成Git可以管理的倉庫:
git init

添加到本地倉庫
git add index.htm,添加到暫存區
git commit -m <***>,必須將文件添加到暫存才能一次推送到本地倉庫,推送必須有描述-m

git status當前倉庫的狀態:

git diff查看修改
撤銷修改
git checkout -- index.htm
1.最新提交的在倉庫就回退到倉庫版,
2.最新在暫存區就回到剛添加時的狀態。
git reset HEAD <index.htm>(HEAD時,表示最新的版本)
撤銷提交到暫存區的修改
回退
git log可以查看提交歷史,以便確定要回退到哪個版本。
git reflog查看命令歷史,以便確定要回到未來的哪個版本。
git reset --hard commit_id。跳轉指定id
刪除
git rm index.htm,刪除後執行git commit確認並推送到倉庫
遠程倉庫
ssh-keygen -t rsa -C "Emai"用戶目錄下id_rsa是私鑰,id_rsa.pub是公鑰
添加到GitHub

關聯倉庫
git remote add origin git@github.com:Lipositive/name.git
git remote -v 查看遠程倉庫
第一次推送master分支的所有內容,並且將遠程的master關聯
git push -u origin master 
之後提交最新修改
git push origin master

克隆倉庫
cd ~/.ssh ,檢測存在否
遠程創建勾選Initialize this repository with a README:
克隆
git clone git@github.com:Lipositive/gitpl.git
git clone git@…… 當前有權限的克隆遠程倉庫master的代碼

分支管理

創建
git checkout -b dev /git switch -c dve: b表示創建並切換
git branch dev :創建
git checkout dev /git switch dve:切換
git branch 查看
git merge dve :合併,將dve合併到當前分支
git branch -d dve 刪除分支
通過git branch -D dve 強行刪除沒有合併過dve分支。

衝突:當新分支和原分支都改變掉後進行合併產生的
git status 查看並手動修改差異並保存提交
git log --graph 可以看到分支合併圖

管理策略
強制禁用Fast forward模式能顯示分支信息
合併dev分支時git merge dve添加爲git merge --no-ff -m "merge with no-ff" dev
--no-ff 表示禁用Fast forward,能保留歷史存在分支,-m爲註釋

bug分支
修復bug時,我們會通過創建新的bug分支進行修復,然後合併,最後刪除;
把當前工作現場用git stash保存,再用git stash pop,回到工作現場;
git stash list查看隱藏起來的內容
git branch 查看分支後使用 git cherry-pick 'bug'推送獲得的bug提交修改碼

Feature分支,分支dve的功能分支
創建 git switch -c feature-name
多人協作
克隆時本地的master分支和遠程的master分支已經對應起來

本地新建的分支如果不推送到遠程,對其他人就是不可見的;

git push origin master/dve ,將該分支推送至指定分支
失敗則,git pull抓取遠程的新提交,手動改變衝突提交。

pull失敗示no tracking information則表示本地分支與遠程沒鏈接
使用git branch --set-upstream-to origin/dve遠程分支名  dve本地分支名

git remote -v 查看遠程倉庫,沒有推送權限,就看不到push的地址

在本地創建和遠程分支對應的分支,最好保持名稱一致
git checkout -b branch-name origin/branch-name
rebase操作可以把本地未push的分叉提交歷史整理成直線;
rebase的目的是使得我們在查看歷史提交的變化時更容易,因爲分叉的提交需要三方對比。
將當前本地改變爲遠程的下一步形成一條線。
標籤管理
跟某個commit綁在一起的就是tag版本
命令git tag <tagname>用於新建一個標籤,默認爲HEAD,也可以指定一個commit id;
令git tag -a <tagname> -m "blablabla..."可以指定標籤信息;
命令git tag可以查看所有標籤。
標籤操作
命令git push origin <tagname>可以推送一個本地標籤;
命令git push origin --tags可以推送全部未推送過的本地標籤;
命令git tag -d <tagname>可以刪除一個本地標籤;
命令git push origin :refs/tags/<tagname>可以刪除一個遠程標籤。
gtee
git remote rm origin ,刪除已有的遠程
git remote add origin git@gitee.com:Lipositive/name.git ,關聯Gitee;
同時關聯github更改origin,使用不同名稱倉庫。
自定義git
git config --global color.ui true
特殊文件忽略.gitignore

配置別名
--global是針對當前用戶起作用的
配置文件放在用戶主目錄下的一個隱藏文件.gitconfig中的.git/config文件中:
git config --global alias.簡寫 原名
cat .git/config  要刪除別名,直接把對應的行刪掉即可。

SourceTree
適用於Windows和Mac的免費Git客戶端

master: 主分支,主要用來版本發佈。
develop:日常開發分支,該分支正常保存了開發的最新代碼。
feature:具體的功能開發分支,只與 develop 分支交互。
release:release 分支可以認爲是 master 分支的未測試版。
hotfix:線上 bug 修復分支。

提交至遠端時提示error: failed to push some refs to ‘https://github.com/daoke0818/testGit2.git’ hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., ‘git pull …’) before pushing again. hint: See the ‘Note about fast-forwards’ in ‘git push --help’ for details.
表示遠端已經存在同文件,兩個庫有不相干的歷史記錄而無法合併,這時我們可以加上一個參數 --allow-unrelated-histories 即可成功pull: $ git pull origin master --allow-unrelated-histories ;默認會打開vim編輯器,先按 i 切換到插入模式,寫完後 Esc→:→wq 即可保存退出編輯器,如果不進入vim編輯器,則會自動生成一個合併代碼的commit。然後再使用前面的命令push將本地提交推送到遠程倉庫。後面如果本地還有commit,就可以直接用 git push origin master 推送。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章