《玩轉git三劍客》筆記

Git

基礎

  • .gitignore中指定不需要Git管理的文件
  • 不要對公共分支進行rebase

.git目錄

  • HEAD:保存了當前分支的文件目錄路徑
  • config:保存了local作用域的配置
  • refs:該目錄存放了本項目所有分支和tag相關的信息
  • objects:該目錄

對象

git cat-file -t [hashcode]查看對象的類型
git cat-file -p [hashcode] 查看對象的內容

commit

tree

  • 文件目錄對象

blob

  • 文件對象
  • 對象的內容就是文件的內容

Git命令

git config --list  //查看所有配置
git config --add --local <key> <value>  //對當前倉庫進行配置
git config --get <key>  //獲取配置值
git config --global  //全局配置
git init  //將已有項目加入git管理
git init myProject //創建myProject文件夾,並把它納入GIT管理
git add [filename]  //將文件或文件的改動納入git管理
git add -u  // 將所有修改添加到暫存區等待被提交
git mv file1 file2  //重命名文件
git rm <filename>  //將文件從暫存區和工作區刪除
git log --oneline  //簡潔地瀏覽變更歷史
git log --all  //查看所有分支的變更歷史
git log --graph //增加分支視圖
git checkout <branchName>  //切換分支
git checkout -- [filename]  //將工作區的修改撤銷,恢復成和暫存區一致
git checkout -b <branch_name> <remote_repo>  // 在本地倉庫創建和遠端倉庫一樣的分支,並關聯起來,同時切換到該分支
git cat-file -t [hashcode]  //查看對象的類型
git cat-file -p [hashcode]   //查看對象的內容
git diff [commit1] [commit2]  //比較兩個commit之間的差異
git diff <分支1> <分支2>  //比較分支1和分支2的差異
git diff  //比較工作區和暫存區的差異
git diff -- [filename]  //比較指定文件在工作區和暫存區的差異
git diff --cached  //比較暫存區和HEAD的差異
git reset HEAD //將暫存區的修改撤銷,恢復成和HEAD一致
git reset HEAD -- <filename>  //將暫存區指定文件的修改撤銷,恢復成和HEAD一致
git reset --hard <hashcode>  //將hashcode之前的commit全部撤銷,暫存區和工作區的相關記錄也會同時被撤銷,很危險的操作
git branch -d [branchName]  //刪除一個已經合併的分支
git branch -D [branchName] //強制刪除一個分支,不管它是否已經合併
git commit --amend  //修改上一次提交的變更說明
git commit -am //提交所有修改
git rebase -i [hashCode]  //在該commit上進行重新奠基,其中,pick:保持該提交不變  reword:修改該提交的變更說明  squash:把該提交合併到上一次提交中
git rebase --abort  //丟棄掉未完成的rebase操作
git stash  //將當前暫存區的修改清空放到一個緩存堆棧中,有需要再恢復出來
git stash pop  //將緩存堆棧中的修改恢復到暫存區,同時刪除堆棧中該條記錄
git stash apply //將緩存堆棧中的修改恢復到暫存區,但不刪除堆棧中該條記錄
git stash list //查看緩存堆棧中的記錄
git clone <projectUrl/.git>  <backupname.git>  //將git項目備份到本地
git clone --bare <projectUrl/.git>  <backupname.git>  //將git項目備份到本地,不覆蓋工作區
git remote -v   //查看遠端倉庫
git remote add <remote_repo_name> <url> //添加遠端倉庫
git push origin <local>:<remote>  //把本地修改提交到遠端
git push <remote_repo_name> //把本地修改推到遠端倉庫
git push -f origin master //把遠程分支強制回退到當前時間點
git pull  //把遠端分支的修改拉下來,並更新本地分支,包含了fetch和merge兩個操作
git fetch  //從遠端拉去代碼到本地
git merge <分支1> <分支2>  //合併分支
git merge <遠端分支>  //合併遠端分支

GitHub

  • 權限設置:Settings->Branches->Add rule

三種Pull Request的區別

  • GitHub的Setting設置中有一個Merge button選項,用於設置允許的分支合併類型,一共有如下三種類型:
    在這裏插入圖片描述
    • merge commits:將分支合併到主幹中,類似於執行git merge命令
    • squash merging:將分支的所有改動合併成一個併合併到主幹中,合併後分支的狀態不變
    • rebase merging:將分支的所有改動合併到主幹中,合併後分支的狀態不變
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章