Lunski's Clutter

This is a place to put my clutters, no matter you like it or not, welcome here.

0%

Git

常用到覺得好像不需要介紹了…。

基礎

  • git init (初始化)
  • git status (查看git進度)
  • git diff master origin/master (看本地與遠端差異)
  • git log (查commit id)
  • git show (看某個commit的diff)
  • git –set-upstream-to=origin (設定上游)

程式

何時pull:
在開始工作之前 (以便了解最新的更改)
在你推送之前 (以防工作時發生了變化)

  • git clone (下載)
  • git pull (方便,下載並自動merge到本地,需處理衝突== fetch+merge)
  • git fetch origin master (安全,只下載主線程式不merge)
  • git merge origin/master (合併主線到當前分支)
  • git reset –hard (pull不過就覆蓋本地更改)

分支

  • git branch (-r看遠端分支, -a 本機與遠端)
  • git branch (開新分支dev)
  • git branch –set-upstream-to=origin (開新分支指定上游)
  • git checkout -b (建立並切換到新分支dev)
  • git checkout -b (基於 commit開分支)
  • git checkout master (切到主分支)
  • git checkout -t origin/ (切換到另一個遠端分支)
  • git merge origin/main (將新分支合併回主線)
  • how to use merge

不要怕開分支, 最少功能, 開發, 驗證三分支

只選擇某commit 合併到主線

1
2
3
4
5
6
* git log 查找要合併的commit id
* git checkout master
* git merge <commit_hash>


git cherry-pick <commit_hash>

回復

  • git reset -h
    –mixed reset HEAD and index
    –soft reset only HEAD
    –hard reset HEAD, index and working tree(丢弃回退的提交中的所有更改)
  • git reset –hard HEAD (回復到上次提交版本)
  • git reset HEAD^^ –hard (^^ (两个^)表示回退2个提交)
  • git reset –hard (回復到指定的提交版本)
  • git reset –hard origin/main (分支同步回主線狀態)

刪除

  • git branch -d (刪除本地分支)
  • git branch -D (強制刪分支)
  • git push origin – delete (刪除遠端分支dev)

上傳

  • git add (或. 全add, add前要先pull)
  • git restore (忽略某個檔案更動)
  • git clean -f (清除所有untracked files)
  • git remote add (添加遠程倉庫)
  • git cherry-pick (只選特定commit)
  • git commit -m
  • git commit –amend (修改最後一次commit)
  • git push –set-upstream origin (第一次上分支,或第一次上失敗再上一次)
  • git push (僅僅是推送目前所在的分支到遠端,並不會指定推送哪個分支)
  • git push origin master (明確指定推送 master 分支到 origin 這個遠端)
  • git push origin HEAD:master push到遠端master

異常

git reset –hard HEAD
git pull

1
2
3
4
5
6
7
8
git pull
`Your local changes to the following files would be overwritten by merge`

git stash
git pull
git stash pop
會多修改的部份,先更正再
git push

git分支commit過的變更合併到主線

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
git checkout master
git merge feature_branch

解決沖突(如果有的話):

如果在合並過程中發生了沖突,Git會提示你解決這些沖突。
你需要手動解決沖突,然後執行git add命令來標記已解決的文件,最後執行git merge --continue來完成合並。

git commit -m "Merge feature_branch into master"
git push origin master

只選擇某commit 合併到主線
git log 查找要合併的commit id
git checkout master
git merge <commit_hash>

之後流程同上

Repo

基於git, 用於Android程式同步

1
2
3
4
5
6
7
1. repo init (Installs Repo in the current directory)
2. repo sync (Downloads new changes and updates the working files in your local environment)
3. git checkout -b "local branch name"
4. repo sync
5. git add/rm (Add/Remove files in local branch)
6. git commit
7. repo upload

Gitflow v.s. Github flow

  • gitflow: master, develop, feature, release, hotfix
    Release 時才合併主分支,重視穩定性

  • github flow: master, develop
    重視CICD

ref1

推薦用SourceTree視覺化


如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)

Welcome to my other publishing channels