chào a, a cho e hỏi là func dispatch() có tùy thuộc vào version của lib flutter_bloc k ạ, hiện tại câu lệnh _getUsersBloc.dispatch(GetUsersEvent()); báo lỗi vì k có func dispatch().
**Git diff (so sánh 2 hash-commit với nhau) -- Cỏ thể xem là so sánh 2 trang thái
**Git cherry-pick (copy toàn bộ diff từ commit khác và gắn vào HEAD kèm luôn comment)
**Git merge (tìm điểm chung trong parent, sau đó nhận ra sự conflict -- Có thể nói trong dịp nào khác hoặc các bạn tự tìm hiểu)
**Git rebase (ko có option j khác) (là 1 chuỗi cherry-pick)
Sau đây mình lấy 1 ví dụ hình dung là thế này
git init
tạo file a.txt có nội dung "aaaa 5 chu a"
echo "aaaaa 5chu a" >> a.txt
git add . && git commit -m "Commit tạo file a"
Sau đây thay 5 chữ a thành 5 chữ b
rm a.txt & echo "bbbbb 5chu a" >> a.txt
git add . && git commit -m "Commit Đổi file a.txt từ a thành b"
Git diff 1 cái xem ntn
@@ -1 +1 @@
-aaaaa 5chu a
\ No newline at end of file
+bbbbb 5chu b
\ No newline at end of file
#Nhìn vào bạn biết là nó đã xóa 1 dòng và thêm 1 dòng (Có thể gọi ngắn là sửa 1 dòng)
Commit thêm vài cái để biết cherry-pick (commit rỗng ko cần add j)
git commit -m "commit cho vui 1"
git commit -m "commit cho vui 2"
Lúc này nhánh master sẽ ntn
【Commit tạo file a】 ---- 【Commit đổi file a.txt từ a thành b】-----【commit cho vui 1】------【commit cho vui 2】
Tạo 1 branch khác
git checkout -b other
xóa sạch file cho sạch branch
rm ./*.txt
git add .
git commit -m "Delete *.txt"
Xài thử cherry pick
git cherry-pick master~1
#Kết quả sẽ nhận ngay 1 commit sau Branch other là commit cho vui, chả có conlict.
#GIải thích lệnh chery pick trên tính git diff của maste~1 và master~2 (kết quả là ko khác j) sau đó copy cái kết quả đó vào nhánh other
Xài thử cherry pick lần 2
git cherry-pick master~3
#Kết quả tạo file a và có nội dung "aaaaa 5 chu a", vì nó cũng dùng git diff so commit 【commit tạo file a】 và commit trc -> biết có sự thay đổi là tạo 1 file a.txt, lấy sự thay đổi này cho vào nhánh other và có kết quả như trên
Xài thử cherry pick lần 3 (để tạo conflict thì mở và sửa file a.txt
rm a.txt
echo "file nay da duoc sua" >> a.txt
git add .
git commit -m "tạo conflict"
git cherry-pick master~2
#Bị conlict, cần vào sửa file và dùng add -- commit lại
#GIải thích, lúc này git diff của master~3 là sửa chữ a thành chữ b (Cụ thể xóa 1 dòng là "aaaaa 5chu a" và thay thành "bbbbb 5chu a"). Git đã tìm dòng có nội dung "aaaaa 5 chu a" trong quá khứ (tìm commit chung parrent, xem merge advance đẻ hiểu rõ hơn) và đã biết nó đổi thành "file nay da duoc sua" , khi này git biết dc từ 1 dòng trong quá khử "aaaaa 5 chu a" mà bị biến thành 2 kết quả "file nay da duoc sua" hoặc "bbbbb 5 chu a" --> Do đó tạo 1 conflict và đã Hightligh đúng vị trí cần thiết.
Nói vậy ko biết bạn nào muốn rành về git thì tìm đọc git advance, còn nội dung bài viết sai là vì. Git merge KHÔNG CÓ COPY COMMIT như figure 10-5 của bạn. TIếng anh cũng ghi rõ đó là cherrypick ko phải merge. Còn so sánh Cherry-pick với merge ko hợp lý, để dễ hơn bạn tìm so sánh merge và rebase, sau đó rebase với cherry-pick. Vì merge vs rebase có điểm giống , rebase và cherry-pick cũng có điểm giống, merge với cherry-pick thì mình ko thấy giống gì
Uh, tiện còn con Pi đang đắp chiếu nên dựng đậy cho nó sống đời có ích em ạ Với cả Pi thì nó cũng tương tự PC bình thường thì với web developer sẽ dễ setup hơn là NodeMCU
THẢO LUẬN
Anh ơi ví dụ thứ 2 của v-for, nếu mà mình dùng v-if="!todo.isComplete" thì todo chưa được khai báo vậy nó phát sinh lỗi undefined sao ạ?
Mong bạn ra phần 2 ạ!
chào a, a cho e hỏi là func dispatch() có tùy thuộc vào version của lib flutter_bloc k ạ, hiện tại câu lệnh _getUsersBloc.dispatch(GetUsersEvent()); báo lỗi vì k có func dispatch().
xin cảm ơn bạn, mong bạn theo dõi các bài viết tiếp theo của mình nhé.
các command trên viết mà chưa có test đâu, nếu sai thì mình sẽ viết lại
)))
À, sai phần Cherry pick và Merge. Còn trong comment này mình chắc giải thích 1 tí cơ chế dịch từ https://git-scm.com/docs/git-cherry-pick và https://git-scm.com/docs/git-diff để mọi người nắm.
Một số chức năng của git mong mọi người biết
Sau đây mình lấy 1 ví dụ hình dung là thế này
git init
tạo file a.txt có nội dung "aaaa 5 chu a"
echo "aaaaa 5chu a" >> a.txt
git add . && git commit -m "Commit tạo file a"
Sau đây thay 5 chữ a thành 5 chữ b
rm a.txt & echo "bbbbb 5chu a" >> a.txt
git add . && git commit -m "Commit Đổi file a.txt từ a thành b"
Git diff 1 cái xem ntn
@@ -1 +1 @@
-aaaaa 5chu a
\ No newline at end of file
+bbbbb 5chu b
\ No newline at end of file
#Nhìn vào bạn biết là nó đã xóa 1 dòng và thêm 1 dòng (Có thể gọi ngắn là sửa 1 dòng)
Commit thêm vài cái để biết cherry-pick (commit rỗng ko cần add j)
git commit -m "commit cho vui 1"
git commit -m "commit cho vui 2"
Lúc này nhánh master sẽ ntn
【Commit tạo file a】 ---- 【Commit đổi file a.txt từ a thành b】-----【commit cho vui 1】------【commit cho vui 2】
Tạo 1 branch khác
git checkout -b other
xóa sạch file cho sạch branch
rm ./*.txt
git add .
git commit -m "Delete *.txt"
Xài thử cherry pick
git cherry-pick master~1
#Kết quả sẽ nhận ngay 1 commit sau Branch other là commit cho vui, chả có conlict. #GIải thích lệnh chery pick trên tính git diff của maste~1 và master~2 (kết quả là ko khác j) sau đó copy cái kết quả đó vào nhánh other
Xài thử cherry pick lần 2
git cherry-pick master~3
#Kết quả tạo file a và có nội dung "aaaaa 5 chu a", vì nó cũng dùng git diff so commit 【commit tạo file a】 và commit trc -> biết có sự thay đổi là tạo 1 file a.txt, lấy sự thay đổi này cho vào nhánh other và có kết quả như trên
Xài thử cherry pick lần 3 (để tạo conflict thì mở và sửa file a.txt
rm a.txt
echo "file nay da duoc sua" >> a.txt
git add .
git commit -m "tạo conflict"
git cherry-pick master~2
#Bị conlict, cần vào sửa file và dùng add -- commit lại
#GIải thích, lúc này git diff của master~3 là sửa chữ a thành chữ b (Cụ thể xóa 1 dòng là "aaaaa 5chu a" và thay thành "bbbbb 5chu a"). Git đã tìm dòng có nội dung "aaaaa 5 chu a" trong quá khứ (tìm commit chung parrent, xem merge advance đẻ hiểu rõ hơn) và đã biết nó đổi thành "file nay da duoc sua" , khi này git biết dc từ 1 dòng trong quá khử "aaaaa 5 chu a" mà bị biến thành 2 kết quả "file nay da duoc sua" hoặc "bbbbb 5 chu a" --> Do đó tạo 1 conflict và đã Hightligh đúng vị trí cần thiết.
Nói vậy ko biết bạn nào muốn rành về git thì tìm đọc git advance, còn nội dung bài viết sai là vì. Git merge KHÔNG CÓ COPY COMMIT như figure 10-5 của bạn. TIếng anh cũng ghi rõ đó là cherrypick ko phải merge. Còn so sánh Cherry-pick với merge ko hợp lý, để dễ hơn bạn tìm so sánh merge và rebase, sau đó rebase với cherry-pick. Vì merge vs rebase có điểm giống , rebase và cherry-pick cũng có điểm giống, merge với cherry-pick thì mình ko thấy giống gì
viết cho vui thôi
Các bài anh viết hay lắm cảm ơn a rất nhiều ạ ^^
Cám ơn bài viết của anh, anh có thể viết một bài về HTTP status code không ạ, em có tìm hiểu trên mạng nhưng khá khó hiểu cho người mới ạ.
Chính xác, đọc cái tiêu đề rất hay, phỏng vấn hỏi toàn câu chỉ cẩn help là ra, thất bại =))
@tuananhbfs oke cảm ơn bạn nha, để mình làm thử xem sao.
hi,bạn có thể ví dụ 1 trường hợp cụ thể đc không
@vuongthai95 dạ e cảm ơn a:D
@PhanNhuHuyen tức là nó sẽ tách ra phần api riêng và front-end riêng, ví dụ như viblo thì api dùng laravel, còn front-end thì dùng vuejs
hi,tách riêng là sao anh nhỉ
vậy mục đích của api là lấy dữ liệu trên server về đúng ko bạn
Uh, tiện còn con Pi đang đắp chiếu nên dựng đậy cho nó sống đời có ích em ạ
Với cả Pi thì nó cũng tương tự PC bình thường thì với web developer sẽ dễ setup hơn là NodeMCU 
oke ,minh cảm ơn ban
@lehoangnnx à sorry bạn. dùng import thay cho require nhé
mua con ras này mà dùng mỗi thế này hơi phí ko a :v thay vào đó e dùng NodeMCU có vẻ hợp lý hơn cho 1 module nhỏ như này đc a nhỉ